用ADO连接SQLSERVER的主-明细-子明细表,在录入数据时,子明细表录入后,转到明细时,如何解决子明细的重提数据的问题?(分不够可以再加)(200分)

  • 主题发起人 主题发起人 baniu
  • 开始时间 开始时间
To:小黄鱼
我有Post啊,但第三层的明细在输第二层的另外的记录时要怎么办啊?
To:zhbj2
如果用ltoptimistic(立即更新),如果我输了几条后,用户需要取消怎么办?要频繁与后台交互?
To:无忧鱼
我数据量很大啊,你如何clon,如何查找重复等?而且我联表的字段并不止一个.
To:hpretty
自已做主从关系还不是一样的,第二层的明细数据输完第一条后,如何输入第二条?第一条的数据保存在哪里呢?
 
主表字段:
ID INT PK
明细字段:
ID INT PK
ItemID INT PK
二级明细:
ID INT PK
ItemID INT PK
当你打开一级明细时,可类似于:
SELECT * FROM DetailTable WHERE (ID = :ID)
当你打开二级明细时,可类似于:
SELECT * FROM DetailTable WHERE (ID = :ID) AND (ItemID = :ItemID)
当要保存时, 用UpdateBatch,反之用CancelBatch
 
To:wellknown
我的明细和子明细分别放在两个dbgrid中, 我输完第一条明细及其对应的所有子明细后,
需要再录入第二条明细及其所有子明细,此时明细不得不移动记录,SELECT * FROM DetailTable
WHERE (ID = :ID) AND (ItemID = :ItemID) 会再表中提取相应数据,这之前
子明细要如何处理? post
会丢掉,updatabatch会不好取消.而且,与我们缓存更新的方式不符.
 
主细的最好自己写sql 语句,不然数据量大的话,会很慢,我吃过这个亏,现在,除了,
update 以外都写sql 语句。(update 用时会有点问题。特别是多人一起update时,就报
错,不知道哪为前辈有过该经历的能给我说说怎么解决。呵呵!zhouhj@mail.716.com.cn)
 
自已写sql也不行啊,怎么处理第二层的明细和第三层的子明细呢
 
這個問題有意思,估計回答成功的機會不大
 
to baniu
你用巢状表吧,它在两层下能很好的实现你的要求的,但三层下有点问题。
作法是这样的:用TADOConnection连接数据库。然后用2个adoDataSet(一主
一从)连接这个TADOConnection,在主adoDataSet的CommandText中写好与主表连接的SQL。
然后再放一个DATASOURCE (dsMaster)连接这个主表的adoDataSet。主表就完成了,
接下来作从表。
在从adoDataSet的CommandText中写好与从表连接的SQL。接着设定它的DATASOURCE为上面的
DATASOURCE(dsMaster)。然后再设定它的MasterFields为主表的关键字。
到这从表也作完了。这只是主从表的连接关系,其它的功能你自己增加。
 
To:wumeng
谢谢你仔细的回答.李维的书上正是这样讲的.但是如果 设定从表的MasterFields后.
Ado会将从表中的所有数据提出来,再根据MasterFields来过滤,我的数据量很大,很慢.
如果你用sqlserver,可以打开事件查探器查看.
 
用TClientDataSet做本地缓冲可解决你的问题
 
高深,搬凳子
 
多人接受答案了。
 
后退
顶部