Filters are not supported on unidirectional datasets
what is unidirectional datasets?

解决方案 »

  1.   

    把它做成C/S结构,客户端使用的dbgrid修改的数据能保留在dbgrid中,然后使用提交,再把数据放回服务器数据库;
      

  2.   

    datasetclient can do.
    you can also use adoquery.
    example :
    adoquery1.recordset.pagesize:=10;
    in doing this,you can get 10 records one time, and then use catche ,you can make the changes  stored in the dbgrid only when you apply update
      

  3.   

    如果用ado连接数据库。 直接用
    select top 10 * from tabel1.  一页只显示10条记录。 这是向下取记录。向上取记录你看看我以前的回答的贴子。 设置一个分页标记.
      

  4.   

    yes,but when i get next 10 records,dbgrid will be modified.dbgrid修改后的数据lost.
      

  5.   

    你可以做成3层结构,设置客户端的ClientDataset的FetchOnDemand为False,
    PacketRecords为你需要一次显示在客户端的记录数,更新数据库是用ClientDataSet.Applyupdates(-1);取下一批数据时用ClientDataSet.GetNextPacket。
      

  6.   

    思路:
    1、设置SQL使得你每次读一部分数据到本地。
    2、使用批更新模式,这样你每次修改的数据暂时都存在本地,也就是所谓的“公文包”模式。
    如果使用ADO组件,必须
    • 设定C u r s o r Ty p e为K e y S e t或S t a t i c。
    • 设定L o c k Ty p e为B a t c h O p t i m i s t i c。
    • 执行的S Q L命令必须是S e l e c t。