当我点击某条记录、修改按钮,弹出一个窗口(这些我都做好了,为了说清楚才说这么仔细,看后面)。并把DBGrid中的字段分别显示在窗口中的控件(如Edit1)。然后我在确认按钮里面写了这样的代码:
procedure TForm4.Button1Click(Sender: TObject);
begin
    with form1 do                                                                                                                            
  begin
    ADOQuery1.Close;                                                                   
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('update Employees set EID = '''+trim(Edit1.Text)+''', name = '''+trim(Edit2.Text)+''', sex ='''+ComboBox1.Text+''', nation ='''+trim(ComboBox2.Text)+''',IDCard = '''+trim(Edit4.Text)+''', address = '''+trim(Edit5.Text)+''',memo = '''+trim(Memo1.Text)+''' where EID = '''+trim(Edit2.Text)+'''');
    ADOQUery1.ExecSQL;    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select EID ''职员编号'', name ''姓名'', sex ''性别'', nation ''民族'', birthday ''出生年月'', IDCard ''身份证号码'', address ''地址'', memo ''备注信息'' from Employees');
    ADOQuery1.Open;
  end;就是修改记录,并保存到数据库。我之前可以修改的,后来,莫名其妙不能修改了。我也找不出什么原因。
或许,我这样做并不好,求前辈知道赏个脸,谢谢。

解决方案 »

  1.   

    是的,你这样做并不好。如果信息中有引号或其它特殊符号,你都没有预处理,直接变SQL语句会出错的。
    直接用DBEDIT就可以了。
      

  2.   

    用存储过程啊,骚年.就算你要用字符串查询, 你也先 var 一个  s:string  然后用 format 来赋值给他啊.你这样乱七八糟的代码,错在哪里都不知道
      

  3.   

    能具体点吗?到底用什么方法能做到修改数据,并保存到数据库,然后有能显示在DBGrid。至于上面我发的代码,也是参照一本书上的。也能做出修改,后来,我就不能了。请问你们遇到这样的该怎么解决?
      

  4.   

    首先更新数据库不要在adoquery在adocommand好点
    然后如果不是更新查询字段不需要这么做,只需要adoquery.close; adoquery.open即可
    ADOQuery1.Close;
     ...   ADOQuery1.Open;
    第三最好LZ把错误代码贴出来才好判断错在哪里
    由于以前你能执行,所以代码问题应该可以被省略,有可能最近改过库结构造成更新语句错误
     
      

  5.   

    错误到没有,就是我修改数据,无法更新,没有任何改变。烦啊。我把我的具体操作说出来。就是DBGrid已经有了记录,现在我就是要实现对这个记录进行修改,并弹出一个窗口,显示记录的信息,修改信息,保存到数据库。就是这样的。我就像问问大家,你们修改信息是怎么做的。初学delphi,很多东西真的不太了解,再说delphi相关的资料比较少。知道的前辈,赏个脸。
      

  6.   

    你好,我也想用这个方法修改,而且跟添加是一个方法。但是问题出现了,假如“客户名称”是主键,怎么办?这样,会出现主键不能重复错误的。虽然你下面谢了个MessageBox提示,但是如果我不修改“客户名称”,只修改其他的,这样,主键重复还是不能解决 啊。你是怎么解决?
      

  7.   

    不想报错的话,插入前先select一下主键,看看有没有主键冲突,存在即冲突