两个Adoquery更新

sanyuan35 2018-06-21 02:53:54
两个Adoquery控件分别A,B关联的除表名外,表结构都一样。请B更新了其中一条数据,怎么把A的也更新了??
如有相关的SQL语句也请告知。但是使用update table 2 set table 2.id = table1.id .... from table 1.... 这语句的话,列太多,set 太多。有没有其它方便的方法?
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2018-06-22
  • 打赏
  • 举报
回复
可以借助B的 adoQuery.AfterPost事件通知机制,更新A的记录集,从而更新到数据库

procedure TForm1.adoBAfterPost(DataSet: TDataSet);
var
i: integer;
fieldName: string;
begin
//定位记录集A对应记录,条件根据实际情况 coding
if not adoA.Locate('key字段',adoB['key字段'],[loCaseInsensitive]) then exit;

for i:=0 to adoB.FieldCount-1 do
begin
//如果有涉及自增、只读字段,需要 continue
fieldName := adoB.Fields[i].FieldName;
adoA[fieldName] := adoB[fieldName];
end;
//提交数据
adoA.Post;
end;
sanyuan35 2018-06-22
  • 打赏
  • 举报
回复
大神们能解惑一下吗??
boylafong 2018-06-22
  • 打赏
  • 举报
回复
afterpos,上面对的
无聊的猪 2018-06-21
  • 打赏
  • 举报
回复
表结构一样就遍历一下字段进行赋值就好

for i := 0 to qry1.FieldCount - 1 do
begin
qry2[qry1.Fields[i].Name] := qry1[qry1.Fields[i].Name];
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧