ADO的问题,主明细表中,当光标在主档的记录移动时,细档会重复显示,动几次就会重复几次。(100分)

  • 主题发起人 主题发起人 wumeng
  • 开始时间 开始时间
W

wumeng

Unregistered / Unconfirmed
GUEST, unregistred user!
ADO的问题,MIDAS的主明细表程序中,当光标在主档的记录移动时,细档会重复显示,
动几次就会重复几次。但细档刷新一下,重复记录就会消失。
 
我不太懂你的意思?是不是这样
dbgrid.datasource.dataset.disablecontrol;
.....
dbgrid.datasource.dataset.enablecontrol;
 
我是说,这有可能是D5 ADO 控件的一个BUG,我写的一个MIDAS的主明细表程序,当光标在
主档的记录移动时,(假设你从最后一条[这时细档显示的是最后一条的明细记录,假设有
3条。]移动到上一条[这时细档显示的是上一条的明细记录,假设有2条],这时再把主档
的光标移动到最后一条记录上,明细档会有6条记录[也就是说有3条是重复显示的],
你如果多次重复这个动作,明细档上的记录就会重复显示多次)。
不知道次是不是说的明白了?!
 
兄弟,你可以换种方式作,先是下载主表的记录,然后在主表的Clientdataset的AfterSocall
事件中根据主表的外健,去重新下载从表的记录,这样比较好,反正我现在作的项目一直是这么
做的,^_^
 
我也碰到此类问题,我的解决办法是,用巢状结构做主从表,也就是主从关系设置在中间层,不
要设置在客户层,具体可以参考李维的“巢状结构”。
 
xmcys说的对,能够解决问题,但当数据量比较大时中间层的压力较大,JJzhou_2001的方法也可以,但处理小数据量的方案时就有点笨了
 
主从关系设置在中间层时,客户端不能看到别人新加的数据。
难道没有别的好办法了吗???
 
看这个例子吧Demos/Midas/Mstrdtl。
客户端是可以看到别人新加的数据的,用masterclientdataset.refresh
 
你把ClientDateSet的PacketRecords设为10试试
 
索引沒有好﹐請重新索引﹐試試
 
不是ADO的毛病,是ClientDataSet的问题,估计在ClientDataSet有参数,以前我遇过,试试不用参数
自己定义接口方法取得主从数据,应该就没有问题了
 
接上面继续说,还有一种可能就是ClientDataSet的fetchondemand设为了True,这样的话在客户端游标
到达EOF时会要求下一笔由PackageRecord指定数量的数据,ClientDataSet好像在这点上处理得有点
问题,因此会造成细表重复记录。
 
还是没有解决。。。
 
如果还没有好办法的话,下次就发分了。。。
 
我原来也遇到跟你一样的问题,后来改用巢状结构的主从表解决了,但又存在一个新的问题.
问题为:http://www.delphibbs.com/delphibbs/dispq.asp?lid=849701
该问题一直未解决.
不过你的问题只要改用巢状结构的主从表就立马可以解决了.
 
多人接受答案了。
 
后退
顶部