with query1 do
begin
close;
sql.Clear;
sql.Add('update userinfo set 商家名称=(:a),充值通ID=(:c),合同编号=(:d),地区=(:e),联系人=(:f) where 银行帐号=(:b)');
parambyname('a').AsString:=trim(dbedit2.text);
parambyname('b').AsString:=trim(dbedit1.text);
parambyname('c').AsString:=trim(dbedit3.text);
parambyname('d').AsString:=trim(dbedit5.text);
parambyname('e').AsString:=trim(dbcombobox1.text);
parambyname('f').AsString:=trim(dbedit4.text);
execsql;
messagedlg('修改成功!',mtinformation,[mbok],0);
end;
end;

解决方案 »

  1.   

    1、条件是否正确? 银行帐号=(:b)
    2、另外参数在书写时为什么要加 ()
    3、最后,如果还不行请用Sql Server的“事件探查器”查看具体送往后端执行的Sql脚本,将脚本拷贝出来,运行一下,以便于查找具体的问题。
      

  2.   

    都是这种问题update语句中的字符串要引号的比如
    sql.Add('update userinfo set 商家名称=('':a''),充值通ID=('':c''),合同编号=('':d''),地区=('':e''),联系人=('':f'') where 银行帐号=('':b'')');
      

  3.   

    建议你,这种固定的Sql~~~还是直接写在query控件的SQL属性里,这样可以免去好多不必要的麻烦
      

  4.   

    sql.Add('update userinfo set 商家名称=('':a''),充值通ID=('':c''),合同编号=('':d''),地区=('':e''),联系人=('':f'') where 银行帐号=('':b'')');
    上面这种是错误的,参数怎么会要引号呢,又不是字符串。你试试看这样呢,不是string是value呢
    Parameters.ParamByName('a').Value:=trim(dbedit2.text);
    Parameters.ParamByName('b').Value:=trim(dbedit1.text);
    Parameters.ParamByName('c').Value:=trim(dbedit3.text);
    Parameters.ParamByName('d').Value:=trim(dbedit5.text);
    Parameters.parambyname('f').Value:=trim(dbedit4.text);
    execsql;
      

  5.   

    sql.Add('update userinfo set 商家名称=(:a),充值通ID=(:c),合同编号=(:d),地区=(:e),联系人=(:f) where 银行帐号=(:b)');改成:
    sql.Add('update userinfo set 商家名称=:a,充值通ID=:c,合同编号=:d,地区=:e,联系人=:f where 银行帐号=:b');
    Prepare;