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

  • 主题发起人 主题发起人 baniu
  • 开始时间 开始时间
B

baniu

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADO连接SQLSERVER的主-明细-子明细表,在录入数据时,子明细表录入后,转到明细时,
如何解决子明细的重提数据的问题?(分不够可以再加)
 
我刚编写个ADO+证明细的,我想可以帮你忙。但不懂你“重提数据”是什么意思。
是重新提取数据吗?能说具体点吗?
 
我用的是ADO的UPDATABATCH模式,在ADODATASET里用SQL参数连表,当我输完明细的子明
细之后,再输入第二条明细及其子明细时,再转第一条明细,此时ADODATASET会重新提取
子明细的相关数据,而此时,输的第一条明细的子明细还在缓存中,并没有存到数据库中。
ADODATASET重新根据其参数去表中提取数据,而提不到,从而我先输的记录不见了。不知
我讲的清不清楚。要不请你留下QQ。
 
你ADODATASET的属性怎么设置?Cousortype、locktypet怎么设的?
 
Cousortype: 是CURSORTYPE吧,我设的是:ctKeyset

locktypet: 是LOCKTYPE吧,我设的是:ltBatchOptimistic
 
//重新根据其参数去表中提取数据????
这里是不是作关闭动作了。这是不行的。
 
那要怎么用ADO的缓存更新方式连接SQLSERVER2000的主-明细-子明细表啊。
特别是新增和修改时记录及DATASET之间的切换怎么办啊。
 
修改时用locate,next,prior等作定位就行了。增加直接append就行了。
我不明白为什么你要作关闭动作。
 
是不是你没有用Post
不要用Close
 
POST也没有用啊,我主表增加一条,明细增加两条,子明细增加四条(对应每条明细两条),
输完第一条明细及子明细,我又要输第二条明细及其子明细,这时第一条明细及子明细保存
在缓存中,子明细的DATASET要刷新,又要从第一条开始。这样会冲掉我第一条明细的子明细啊。
 
你到底是怎么做的?我怎么越看越糊涂。实际上你就是多表更新。
//子明细的DATASET要刷新??????
那你用缓存更新干吗?
 
如果不刷新,明细与子明细记录如何对应啊?
 
对啊,不就是多表更新问题。怎么这么复杂呢?
把代码扪出来!
 
可能是我没有说清楚,本来,我们的主-明细表,在输入记录时,主表一条记录要对应明细表
多条记录,而且修改时是不能让主表移动记录的,对吧? 现在我用的是主-明细-子明细表。
即明细还有子明细。而明细不止一条,一条明细又会对应多条子明细。录入数据时我能不让
明细移动记录吗?不让移动,要录入第二条明细怎么办?让他移动,先前的子明细又要怎么
办呢?
 
如果要做这个动作的话最好的办法是请你用CLIENTDATASET去连接上你的ADODATASET,这样
缓存中的数据就会留下来,然后你就去利用CLIENTDATASET的APPLYUPDATES 去更新数据
 
这样做是不是又需要和bde一起分发了呢?
 
在事件:更新前,post,保存数据
 
主表的locktype 可以为ltbatchoptimistic
从表的locktype 要为ltoptimistic(立即更新),否则
在主表(对于从明细来说是明细表)数据滚动时,从表是要刷新的,但
你无法控制从表的更新工作,除非从表post 后立即updatebatch ,如此
以来反而不如ltoptimistic有效 .
 
我是这样做的,当从表提交时,我将从表的数据集CLONE成另一个数据集,再从这个数据集中
查找所输入的这条记录是否重复,如主键重复等,如果存在那么不许保存
 
不要用主从关系表,自己来做主从关系就行了!
 
后退
顶部