三层结构,ADO多表连接时如何插入记录?(100分)

  • 主题发起人 主题发起人 echoljb
  • 开始时间 开始时间
E

echoljb

Unregistered / Unconfirmed
GUEST, unregistred user!
(看了以前的帖子,还是不明白)
中间层用ADOConnection连接SQL Sever,一个ADODataSeat,
从SQL Server中select两个连接的表:
select table1.ID1,table2.ID2,table2.foreignkey(即table1.id1)
From table1,table2
where table1.ID1=table2.ID2
一个DataProvider1.
客户端用DComConnection,Clientdataset,DBGrid,DBNavigator来更新
数据库。
问题:
更新数据后调用clientDataSet.ApplyUpdates(0)可以更新数据库,但是
如何插入记录呢?调用ApplyUpdates(0)是不行的,那只能在中间层写sql语句来
对两个表分别执行插入操作,那客户端如何将SQL或者是DataSet发给中间层呢?
大富翁上有网友曾说用OLEVariant参数发,不是很明白,请指教。
//bow
 
你可以在中间层中使用UPDATESQL组件,具体方法是:你要更新的数据表对应一个UPDATESQL
组件,然后用UPDATESQL组件的编辑器写一个INSERT语句。
再在DATASETPROVIDER的Beforeupdaterecord事件中写入一下语句:
begin
adodataset.updateobject:=XXX;{这里的XXX是第一个表}
setParams(XXX,deltads,updatekind);
xxx.execsql(updatekind);
adodataset.updateobject:=XXX2;{这里的XXX是第二个表}
setParams(XXX2,deltads,updatekind);
xxx2.execsql(updatekind);
end;

你可以试一下!
 
在Provide的BeforeUpdateRecord自己写SQL
 
我一般是加个事务处理后对各表单独插记录
 
直接在SQL SERVER建立一个储存过程,然后在中间层增加ADOStoredProc组件,
 
谢谢几位大侠
 
后退
顶部