ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     s:='select * from module where vessel='+''''+DBComboBox1.Text+'''' +'and voy='+''''+DBComboBox2.Text+'''' +'and hxname='+''''+DBComboBox3.Text+''''+'and mon='+''''+maskedit1.Text+'''';
     ADOQuery1.SQL.Add(s);
     ADOQuery1.Open;
     DataSource1.DataSet:=adoquery1;
通过上面的代码从数据库module表中查询处记录,放到dbgrid里显示。
在dbgrid中修改后,需要保存到另一个表jhbb中。
我在保存按钮中写adoquery1.UpdateBatch(arall)(以前我就者这么保存dbgrid中的数据的)可是执行完保存代码后,数据被保存到了module表里,怎么样才能保存到jhbb这个表里呢?请指教,谢谢!

解决方案 »

  1.   

    因为你的SQL没变,数据来自module表,所以更新一定是更新回module表,而且你也不能够在运行时改变SQL,否则查询就失效了。
    比较可行的办法是,你在module表上增加一个触发器,让它自动将更新传递到jhbb中。
    前端的方法会比较复杂,需要另外打开一个数据集,类似'SELECT * FROM [jhbb]'之类的,然后在原来的ADOQuery中过滤出更新的数据,逐行插入到新的数据集中。
      

  2.   

    如果是如楼上所说的更新性保存,可以先取得结果记录的关键字段,根据关键字段将jhbb表中相同的记录删除后把结果记录插入jhbb。这样无需判断,可能容易一点。
    但是如楼上所说,想直接adoquery1.UpdateBatch(arall)到jhbb,无可能,除非你用不连数据库的控件stringgrid,先把结果写入,然后操作,再然后根据stringgrid写到jhbb里
      

  3.   

    不能将dbgrid中的记录赋值给另一个adoquery,让后再通过adoquery.UpdateBatch(arall)保存到jhbb吗?
    请指教!
      

  4.   

    我是个初学者,能不能给点代码(触发器的代码以及delphi调用触发器的代码)?
    不胜感激!