能帮看下下面这段代码哪里出错么 delphi,做的是密码修改 50
能帮看下这段代码哪里出错么?是delphi7的,做的是修改密码,代码是从网上找到改的,但是运行是出现错误。弹出对话框的错误是:‘acomponentnanedlabel1...
能帮看下这段代码哪里出错么? 是delphi7的,做的是修改密码,代码是从网上找到改的,但是运行是出现错误。
弹出对话框的错误是:‘a component naned label1 already exists’
unit UserPwdSetup_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TfrmUserPwdSetup = class(TForm)
btnOK: TButton;
btnCancel: TButton;
edtOldPwd: TEdit;
edtNewPwd: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edtNewPwd2: TEdit;
Database1: TDatabase;
Query1: TQuery;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmUserPwdSetup: TfrmUserPwdSetup;
implementation
{$R *.dfm}
procedure TfrmUserPwdSetup.btnOKClick(Sender: TObject);
begin
if Trim(edtNewPwd.Text)<>Trim(edtNewPwd2.Text) then
begin
showmessage('新密码不一致!');
end
else
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select USERPWD from USERS');
query1.SQL.Add('USERPWD='+''''+trim(edtOldPwd.Text)+'''');
query1.Open;
if ((query1.RecordCount<>1) or (edtOldPwd.Text<>Query1.FieldValues['USERPWD'])) then
begin
showmessage('口令不对,请检查!');
end
else
begin
query1.Edit;
query1.FieldValues['USERPWD']:=edtNewPwd.Text;
query1.Post;
query1.Close;
showmessage('更改口令成功');
close;
end;
end;
end;
end. 展开
弹出对话框的错误是:‘a component naned label1 already exists’
unit UserPwdSetup_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TfrmUserPwdSetup = class(TForm)
btnOK: TButton;
btnCancel: TButton;
edtOldPwd: TEdit;
edtNewPwd: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edtNewPwd2: TEdit;
Database1: TDatabase;
Query1: TQuery;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmUserPwdSetup: TfrmUserPwdSetup;
implementation
{$R *.dfm}
procedure TfrmUserPwdSetup.btnOKClick(Sender: TObject);
begin
if Trim(edtNewPwd.Text)<>Trim(edtNewPwd2.Text) then
begin
showmessage('新密码不一致!');
end
else
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select USERPWD from USERS');
query1.SQL.Add('USERPWD='+''''+trim(edtOldPwd.Text)+'''');
query1.Open;
if ((query1.RecordCount<>1) or (edtOldPwd.Text<>Query1.FieldValues['USERPWD'])) then
begin
showmessage('口令不对,请检查!');
end
else
begin
query1.Edit;
query1.FieldValues['USERPWD']:=edtNewPwd.Text;
query1.Post;
query1.Close;
showmessage('更改口令成功');
close;
end;
end;
end;
end. 展开
3个回答
展开全部
问题不止一处,主要有两个:
1、检查旧密码的query之SQL命令不对,第二次add的命令串中少了WHERE,导致SQL命令送到服务器后语法检查通不过;
2、修改密码应该发的是UPDATE命令,采用query+SELECT这种只读数据集是不行的,应该用TTable,或者修改query的SQL命令为update;
以上两个问题都不会报你说的错,你的错误可能在于自行在界面上拖拽了控件,delphi会自行增加若干行程序,而你又拷贝粘贴了人家的程序代码,导致某些控件和代码内在的关联被破坏了。建议系统地学习一番,如此急于求成并非正途。
1、检查旧密码的query之SQL命令不对,第二次add的命令串中少了WHERE,导致SQL命令送到服务器后语法检查通不过;
2、修改密码应该发的是UPDATE命令,采用query+SELECT这种只读数据集是不行的,应该用TTable,或者修改query的SQL命令为update;
以上两个问题都不会报你说的错,你的错误可能在于自行在界面上拖拽了控件,delphi会自行增加若干行程序,而你又拷贝粘贴了人家的程序代码,导致某些控件和代码内在的关联被破坏了。建议系统地学习一番,如此急于求成并非正途。
展开全部
你可以把密码获取出来。Showmessage(Fieldbyname(
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select username,USERPWD from USERS ');
query1.SQL.Add(' where USERNAME=:a and USERPWD=:b);
query1.params.parambyname('a').value:=?????;//自己添
query1.params.parambyname('b').value:=trim(edtOldPwd.Text);
query1.Open;
修改密码必须用户名和密码一起检索。。。。
query1.SQL.Clear;
query1.SQL.Add('select username,USERPWD from USERS ');
query1.SQL.Add(' where USERNAME=:a and USERPWD=:b);
query1.params.parambyname('a').value:=?????;//自己添
query1.params.parambyname('b').value:=trim(edtOldPwd.Text);
query1.Open;
修改密码必须用户名和密码一起检索。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询