1.我写的程序其中一小段:
if edt_new_password.Text = edt_confirm_new_password.Text then
begin
ADOQ_modify_password.SQL.Text := 'UPDATE Administer ' +
'SET password = ' + QuotedStr(edt_new_password.Text) +
' WHERE name = ' + QuotedStr(user_name);
ADOQ_modify_password.ExecSQL;
self.ModalResult := mrOK;
end
程序编译没有问题,运行时,会报错为:"UPDATE字句错误…",以前也遇到过是由于在分行书写SQL语句时忘了加语句间的空格,这次无论放在一行还是加空格都不行,错在哪里?
2,程序编译没有问题正确登陆后,进入某子界面时报错,然后进入,离开时也出现同样的情况,错误如下:Access violation at address 005191EB,in module '…',Read of address 0000024C.
请教这两个问题如何解决!
if edt_new_password.Text = edt_confirm_new_password.Text then
begin
ADOQ_modify_password.SQL.Text := 'UPDATE Administer ' +
'SET password = ' + QuotedStr(edt_new_password.Text) +
' WHERE name = ' + QuotedStr(user_name);
ADOQ_modify_password.ExecSQL;
self.ModalResult := mrOK;
end
程序编译没有问题,运行时,会报错为:"UPDATE字句错误…",以前也遇到过是由于在分行书写SQL语句时忘了加语句间的空格,这次无论放在一行还是加空格都不行,错在哪里?
2,程序编译没有问题正确登陆后,进入某子界面时报错,然后进入,离开时也出现同样的情况,错误如下:Access violation at address 005191EB,in module '…',Read of address 0000024C.
请教这两个问题如何解决!
if edt_new_password.Text = edt_confirm_new_password.Text then
begin
ADOQ_modify_password.SQL.Text := 'UPDATE Administer ' +
'SET password = ' +'''+ QuotedStr(edt_new_password.Text) +'''+
' WHERE name = ' +'''+ QuotedStr(user_name)+'''';
ADOQ_modify_password.ExecSQL;
self.ModalResult := mrOK;
end
2.是不是该窗体没有创建,你 就 SHOW了呢,把具体代码贴出来看看。
adomodify_password.sql.text:='update administer set password=:a where name=:b';
parameters.parameterbyname('a').value:=edt_new_password.text;
parameters.parameterbyname('b').value:=user_name;
showmessage(ADOQ_modify_password.SQL.TEXT);
看看SQL语句
STr:=Format('UPDATE Administer SET password = ''%S'' WHERE name = ''%S''',
[trim(edt_new_password.Text),user_name]);
with ADOQ_modify_password do begin
Close;
Sql.clear;
Sql.Add(STr);
ExecSQL;
end;2
delphi有时有这样的问题.我也经常碰到的
1)重新打开DELPHI,重打开工程编译一下行不行.
2)如不行,关机,再开机,如上
3)重装DELPHI,再如上
你可以试试.
试试这样:
str:='update Adimister set password='+quotedstr(trim(edt_new_password.Text))+' where name='+quotedstr(user_name);
ADOQ_modify_password.Active:=False;
ADOQ_modify_password .SQL.Clear;
ADOQ_modify_password.SQL.Add(str);
ADOQ_modify_password.ExeSQL;
2.访问了空指针,看看是否还没有创建某个对象实例,在执行前Assert(Self=nil,'xxx');
修改update语句;
ADOQ_modify_password.SQL.Text:='UPDATE Administer SET password="'+QuotedStr(edt_new_password.Text) +'"WHERE name = "' + QuotedStr(user_name)+'"';
ADOQ_modify_password.ExecSQL;
ADOQ_modify_password.SQL.Text:='UPDATE Administer SET password="'+QuotedStr(edt_new_password.Text) +'" WHERE name = "' + QuotedStr(user_name)+'"';
ADOQ_modify_password.ExecSQL;
2.我的窗体是动态创建的,其中用到了淡入淡出效果,所以我在本窗体用的是ONSHOW,而不是ONCREAT,因为我发现我如果用后者,淡入淡出效果就没了,即没有实现该功能,在主窗体中我写的是 F_Login_System := TF_Login_System.Create(self);
F_Login_System.ShowModal;
本窗体中是
procedure TF_Modify_Password.FormShow(Sender: TObject);
begin
Windows.AnimateWindow(self.Handle, 1000, AW_CENTER + AW_BLEND);
end;