用ADO做数据库连接时,多表更新如何控制?就象BDE的TUpdateSQL的效果

liugaqiong 2004-11-22 03:26:42
用ADO做数据库连接时,多表更新如何控制?就象BDE的TUpdateSQL的效果.
比如我在一个ADOQuery中写下:
select a.*,b.DeptName,c.PositionName
from Smt_User a left join Smt_Dept b on a.DeptId = b.DeptId
left join Smt_Position c on a.PositionId = c.PositionId
where a.UserId = :UserId

做数据提交时就会出错,该怎么办?
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
耙子 2004-12-01
  • 打赏
  • 举报
回复
这个问题几个月前我回答过一个人。
ADO虽然没有直接提供类似BDE TUpdateSQL的功能,但是可以利用 TDataSetProvider 来实现。

ADOQuery -> DataSetProvider -> ClientDataSet

在 DataSetProvider 的 BeforeUpdateRecord等一些事件中,你能看到TUpdateSQL的影子,感觉你能用TUpdateSQL 理解他也就不难,稍微看下帮助你就理解他和TUpdateSQL多像了。
newcar 2004-12-01
  • 打赏
  • 举报
回复
上边太乱了,简单点。。
dm.ADOConn.BeginTrans; //开始事务

try
{更新多个表代码}
dm.ADOConn.CommitTrans; //更新表后结速事务
except //更新出错
dm.ADOConn.RollbackTrans; //更新一个表出错回滚数据
end;
newcar 2004-12-01
  • 打赏
  • 举报
回复
dm.ADOConn.BeginTrans; //开始事务
try
str:='insert into tkucun(fbm,fkh,fsl,fdj,fje) ';
str:=str+' values('''+cxtextedit1.Text+''','''+cxbox1.Text+''','+cxedit1.Text+','+cxedit3.Text+','+Floattostr(StrToFloat(cxedit5.Text)+StrToFloat(cxedit6.Text))+')';
//application.MessageBox(pchar(str),0,0);
tmp.SQL.add(str);
tmp.ExecSQL;
tmp.SQL.Clear;
str:='insert into truku(fdh,fbm,fkh,frq,fglr,fhth,fsl,fdj,fje,fbz,fren,fyf) ';
str:=str+' values('''+ruku.cxTextEdit1.Text+''','''+cxtextedit1.Text;
str:=str+''','''+cxbox1.Text+''','''+ruku.cxDate.Text+''','''+ruku.cxTextEdit2.Text;
str:=str+''','''+cxtextedit5.Text+''','+cxedit1.Text+','+cxedit3.Text+','+cxedit5.Text+','''+cxmemo1.Text+''','''+frmlogin.struser+''','+cxedit6.text+')';
tmp.SQL.Add(str);
tmp.ExecSQL;
tmp.Close;
dm.ADOConn.CommitTrans; //更新表后结速事务
except
application.messagebox('更新库存出错啦!!!','提示',MB_iconInformation + MB_OK);
dm.ADOConn.RollbackTrans; //更新一个表出错回滚数据
abort;
end;
liugaqiong 2004-11-22
  • 打赏
  • 举报
回复
具体点,怎么弄?
qizhanfeng 2004-11-22
  • 打赏
  • 举报
回复
放在事物里分别提交每个表
newcar 2004-11-22
  • 打赏
  • 举报
回复
在事务里分别更新每个表。。。

2,497

社区成员

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

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