看了李维的<Delphi.5.x.分布多层应用系统>中所写的ClientDataSet的无状态,有些问题请教一下?
我用的是delphi7.0及SQL数据库
在ClientDataSet设置FetchOnDemand为False,PacketRecords为5,按照书上的说法,我现在应该是在无状态,即应用程序不再维护我的Cursor,但是我使用GetNextPacket也能得到数据.根据书上的讲,应该在ClientDataSet与DataSetProvider的BeforGetRecord传递当前客户端的最后一个数传值,让应用程序能够定位到客户端当前的Cursor.
现在问题,是我没有在BeforGetRecords中编写代码,直接使用GetNextPacket一样能得到数据!为何?是不是Delphi7已经将这样的问题解决啦!不需要用户编写额外的代码呢?

解决方案 »

  1.   

    如果在同一个程序中有两个ClientDataSet连接相同的DataSetProvider,按那样的做法,完全可以维护每个ClientDataSet在DataSetProvider的Cursor状态!
      

  2.   

    不知道,不过不要老用这些控件了,
    如果你想得到经常使用的数据,就
    作一个buffer,或者dataset,
    操作数据又快又好(用批提交)。
      

  3.   

    如果深究這個問題不妨裝個DELPHI5,總之5與7在多層應用有不少改進!