ClientDataSet中的嵌套表(题目很长,耐心看完者就有分)(300分)

  • 主题发起人 主题发起人 LeeChange
  • 开始时间 开始时间
L

LeeChange

Unregistered / Unconfirmed
GUEST, unregistred user!
Server:
MasterQuery
sql=select ID1, ID2, Name from TableA

MasterDataSource
DataSet=MasterQuery

DetailQuery
DataSource=MasterDataSource
sql=select * from TableB where ID1=:ID1 and ID2=:ID2

Client:
MasterClientDataSet
Provider=MasterQuery

DetailClientDataSet
Provider=Nil
DataSetField=MasterClientDataSetDetailQuery

说明:
MasterQuery为主表,DetailQuery为明细表,用ID1和ID2关联。
MasterClientDataSet为客户端主表,有一DataSet型字段MasterClientDataSetDetailQuery。

疑惑:
DetailClientDataSet在Post时就出致命错误(开发环境下出CPU窗口,只能Reset,系统环境退出程序)。
如将关联字段合并为一个,既Select * form TableB where ID=:ID则一切正常。
 
将ID1,ID2
组成一个联合索引
 
ID1,ID2原本就是联合主键
 
疑问:
1) D4 OR D5?
2) 如果是D4,使用Provider的了吗?
我个人认为,如果没有Provider的话,你的设置应该是正确的,但
不清楚Provider的配置情况,因为你是主从表,所以在Provider的
Options项加入poCascadeDeletes, poCascadeUpdates.
如果有问题请在公开你的Provider的配置情况,我想我能解决。
 
我整了几天都是这样的错误,最后只好不使用主细方法,全部用自己的
方法处理,虽然麻烦不少,但不会出错。我至今也没搞清楚这到底是怎么
回事,如果我用DBGrid来编细表,没问题,一但用DBEdit,只要一退出,
立即全面死掉,最的是一个C00000001D的一个错误代码。
烦哪!
哪位仁兄有了好消息别忘了告诉一下。
 
用不用Provider两种方法我都试了。
级联删除与更新也都试过。
都不行:-(
 
其实更是否有Provider没什么大关系,Post时就出错,而不是ApplyUpdate。
 
大家倒是发表以下意见呀,好歹300大洋啊!
 
Detailclientdataset不需要post.既然是嵌套表只要提交主表就可以了
 
就不要 POST 了
拿个SQL语句来代替,怎么样?
 
这样的问题,我到从未见过。
不过我的问题你没有完全回答,到底是D4还是D5,两者的MIDAS相差太大。
如果是D5,可以把你的问题送到我的邮箱里,我来看看到底怎么回事。
没有你的例子,我帮不了你的。
 
主表Post时,会先Post从表,一样是会错的。
 
有趣,听听?
你有没有写什么事件?BEFOREPOST之类?
 
你既然不愿意公开的代码,光说现象,那么我想水平在高的人
也帮不了你。一切靠你自己摸索吧。
 
任何事件都没写,所以才觉得死的冤
 
此问题已升值,<A HREF="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=221867">这儿</A>还有200分
 
有两种方法建立多层结构的主从表
一种是在APPSERVER建立
客户端只需连上就可以
另一种是在客户端建
APPSERVER端不用做任何东西
 
是索引有问题吧?
 
后退
顶部