请教三层结构的数据更新问题,急救,请各位大虾快快发招!(100分)

  • 主题发起人 主题发起人 apartment
  • 开始时间 开始时间
A

apartment

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个三层结构的主副表,服务端用两个adoquery,一个datasource,一个datasetprovider
两个adoquery通过参数关联,主表SQL为:SELECT * from publishers(主表包含pub_id字段),
主表为datasource1的dataset属性值
副表SQL为:select * from titles where pub_id=:pub_id,datasource设置为:datasource1,
在客户端通过clientdataset1.applyupdates(-1)进行更新时,修改都可以,副表insert也可以,
可偏偏主副表同时增加就不行,没有报错,可就是没有insert到数据库里。
 
请大虾不啬指教
 
这有点像SQL SERVER中对视图的操作,
即不能对两个表同时进行插入操作,
你必须在datasetprovider自己进行处理,

if updatekind=ukInsert then
begin
.....{主副表各自处理}
end;
 
补上一句:
你必须在datasetprovider的beforeupdaterecord中自己进行处理,然后applied:=true;
 
to netkk:
照你的做法肯定可以,不过比较麻烦。我是想实现BDE那样的操作,两个TQUERY控件
相关联做主副表,然后在客户端同时增加主副表,只用CLIENTDTASET.APPLYUPDATES(0)
就可以了,而在服务端不需要什么编程,然而用ADO控件时却行不通,我不知道是编程问题
还是ADO控件的限制,你说呢?
 
其实,delphi5的主副表,不是这样设置的,有简单的方法实现,可以参考李维的系统篇
我现在就是用delph5 + midas + sqlserver7编程,使用主从表,简单的数据增删该没有
问题,但是如果数据更新频繁,ado还是有bug, 建议不用主从表。
 
多人接受答案了。
 
后退
顶部