程序用的是远程多层数据库,用的是DCOM联接,
grid用的是EhLib控件中的grideh控件,为了上滚轮滚动选定记录不动使用了内存控件memtableeh.
在这里发现一个问题,用了memtableeh后数据显示不全,只有点击scrollbar下箭关按钮才能一步步显示,直到于部显示。clientdataset 中的PacketRecords:=-1 //没有设置数据缓冲clietdataset属性不变,在grideh中如果不用memtableeh控件,直接联接,就能一次显示全部数据,用了memtableeh后就会出现数据缓冲的现象,我现在要使用memtableeh,但不需要数据缓冲,应该怎么作。

解决方案 »

  1.   

    我测试用的是delphi7自带的demo中的madis->AdHoc 示例,在上面添加了ehLib 5.3控件中的grideh,memtableeh,DataSetDriverEh1,还有一个DataSource2  ,然后将这些控件数据联接。就会出现我遇到的问题,使用memtableeh后,即使clientdataset的packetrecords=-1,grideh也会出现数据缓冲效果。我不需要这个效果,因为有了这个又后,对grid点击标题栏排序结果就会不准确了
      

  2.   

    自问自答:
        研究了一整天,终于搞明白了。在memtableeh中有个属性memtableeh1.FetchAllOnOpen
       为true时,将所有数据取到内存中。   大概试用了一下,发现这个属性与clientdataset的packetrecords有些冲突。
       如果设置了fetchallonopen为true后,clientdataset中的packetrecords就不起作用了。
      

  3.   

    继续讨论啊,各位,给力 dbgrideh 
      

  4.   

    我也非常喜欢用ehlib,但是memtableeh,DataSetDriverEh1非常不习惯,想用dbgrideh的分组统计功能,能不能不通过内存表实现,复杂且速度慢