用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做数据提交时就会出错,该怎么办?
比如我在一个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做数据提交时就会出错,该怎么办?
解决方案 »
- 用采集速率10MHz以上的同步高速AD卡 用多线程
- ???请问有没有漂亮一点的 PageControl 控件,或相关的控件组???
- QQ或者MSN的聊天窗体如何实现的?可以插入表情图片和文字的那个区域。
- 新手问超级菜的问题
- 救命啊 数据库连接问题
- 哪位大虾帮小弟转换一段代码
- Debugger Kernel Bordbk50.dll is missing or registered!
- 一个SQL联合查询的问题!高分求解。
- 我需要实现类似速达中的编号功能,谁能告诉我?
- =======>简单问题,高分奉送,高手大侠快来探讨,来着都有分,,,,快来
- 请教:ADOQuery1问题
- cvs配置问题,求救。
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;
dm.ADOConn.BeginTrans; //开始事务try
{更新多个表代码}
dm.ADOConn.CommitTrans; //更新表后结速事务
except //更新出错
dm.ADOConn.RollbackTrans; //更新一个表出错回滚数据
end;
ADO虽然没有直接提供类似BDE TUpdateSQL的功能,但是可以利用 TDataSetProvider 来实现。ADOQuery -> DataSetProvider -> ClientDataSet在 DataSetProvider 的 BeforeUpdateRecord等一些事件中,你能看到TUpdateSQL的影子,感觉你能用TUpdateSQL 理解他也就不难,稍微看下帮助你就理解他和TUpdateSQL多像了。