self.editADOQuery.Close;
self.editADOQuery.SQL.Clear;
self.editADOQuery.SQL.Text:='update sys set password=:newpas where name=:username';
self.editADOQuery.Parameters.ParamByName('newpas').Value:=(self.newpas1Edit.Text);
self.editADOQuery.Parameters.ParamByName('username').Value :=(self.lblusername.Caption);
self.editADOQuery.Open;
ShowMessage('密码修改成功!');
总是提示update语法错误!请问高手这是为什么?帮忙!

解决方案 »

  1.   

    self.editADOQuery.Parameters.ParamByName('newpas').AsString:=(self.newpas1Edit.Text);
    self.editADOQuery.Parameters.ParamByName('username').AsString :=(self.lblusername.Caption);
      

  2.   

    在事件跟踪器中跟踪一下SQL脚本执行情况!!
    建议:
    self.editADOQuery.Prepared;
    self.editADOQuery.Open;
      

  3.   

    self.editADOQuery.Close;
    self.editADOQuery.SQL.Clear;
    self.editADOQuery.SQL.Text:='update [sys] set [password]=:newpas where [name]=:username';
    self.editADOQuery.Parameters.ParamByName('newpas').Value:=(self.newpas1Edit.Text);
    self.editADOQuery.Parameters.ParamByName('username').Value :=(self.lblusername.Caption);
    self.editADOQuery.Open;
    ShowMessage('密码修改成功!');这样试试,估计是因为access的关键字跟你的表名或字段名重名了,加个中括号区分一下
      

  4.   

    将editquery.open改成editquery1.ExecSQL试一下
      

  5.   

    你可以在查询分析器里执行一下试试,问题如果出在SQL语句上的话,在查询分析器里能很快搞明白。
      

  6.   

    ....
    editADOQuery.SQL.Text := 'update sys set password = '''+ newpas1Edit.Text +'''where name='''+lblusername.Caption+'''';
    ;
      

  7.   

    上面的代码如果报类型不匹配就把lblusername.Caption换成 string(lblusername.Caption)
      

  8.   

    self.editADOQuery.Close;
    self.editADOQuery.SQL.Clear;
    self.editADOQuery.SQL.Text:=format('update sys set password=''%s'' where name=''%s''),[self.newpas1Edit.Text,self.lblusername.Caption]);
    self.editADOQuery.Open;
    这样改造一下试试呢....如果不行,在Open之前加个showmessage(self.editADOQuery.SQL.Text)看看查询语句是否有误
      

  9.   

    补充一下,最后一句要用ExecSQL,不要用Open,查询用Open.修改用ExecSQL
      

  10.   

    看着你一的一堆self,就想起了当年我刚写delphi程序的情形,一个字,懒!!!!打了self就等它自动出来吧!!!