主从表 (50分)

  • 主题发起人 主题发起人 无忧鱼
  • 开始时间 开始时间

无忧鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
我用两个ADOQUERY做了 一个主从表,两个ADOQUERY用的是缓冲更新方式,即LOCKTYPE为ltBatchOptimistic
问题是:
当主表新增,从表也新增,而且都POST之后未updatebatch之前,我再修改主表某一个字段,
无论修改主表哪一个字段,从表的记录全部丢失!!!为什么????
 
帮帮我,这是我一个基类中的问题
 
不要用LOCKTYPE为ltBatchOptimistic,我们现在作的三层的都用即时更新,就是因为解决
不了这个问题。

强烈关注!!!
 
如果不用缓冲更新,就显得太麻烦了.
大家研究一下,看看有什么好办法
 
用存储过程可不可以啊?
 
//当主表新增,从表也新增,而且都POST之后未updatebatch之前,我再修改主表某一个字段,
无论修改主表哪一个字段,从表的记录全部丢失!!!为什么????

??从表新增了什么?
这两个表的关系字段是什么?
 
to:wlmmlw
比如说主表adoquery1新增,一条记录,并post,然后再在从表adoquery2里新增两条记录,
也POST,这时如果我再修改主表的任意一个字段值(不管是不是关联字段),刚刚我在从表
里新增 的那两条记录就消失了。
 
主从表的关联设定:
C/S模式
主表:adoquery1
sql: select * from test1
从表:adoquery2
sql: select * from test2 where T001=:T002
注:T002为主表test1里的一个字段

另加两个datasource,一个datasource的dataset设为adoquery1,即主表,
另一个datasource的dataset设为adoquery2即从表,再将从表adoquery2.datasource设为
主表的datasource1
 
唉,问题总算解决,我用了一个笨方法,稍微麻烦了点,但总算解决了。
我是这样的:
1.主从表关系的设定还是与上面一样
2.声明一个TDATASOURCE变量,在窗体启动时,将从表ADOQUERY的DATASOURCE属性付给
这个TDATASOURCE变量,再将从表ADOQUERY的TDATASOURCE属性设为
NIL,这样就保证了主从表之间的修改互不相关(但有些地方要手工处理,如主表移动时
如何更新从表内容等),为什么要声明一个TDATASOURCE变量呢?其实在基类当中有许
多方法与事件都用到相关联的主从表数据集,声明一个TDATASOURCE只是方便写基类而己


总之,这个问题己经解决了,哈哈
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
685
SUNSTONE的Delphi笔记
S
S
回复
0
查看
645
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部