ADOQuery 或 ADOTable 使用了 filtered=true后,DBgrid 的滚动条基本上拉不动数据,数据不怎么滚动,请问是怎么回事? 如果将filtered=false 一切又正常

解决方案 »

  1.   

    哦,你的filter是什么,dataset的改变不会影响grid的啊
      

  2.   


      我没有写filter啊,只是把数据库都连上后,把ADOTabel的属性的filtered设置=true而已  大家可以试一下:  设计状态下:  1、AdoConnection 随便连接一个数据库,然后 active=true
      2、AdoTable connection=AdoConnection  ,随便连上一个表,active=true;
      3、放一个DataSource组件 ,dataset=Adotable
      4、DBGrid.datasource=dataset1;  这样表里就有内容了,这时拉动滚动条,正常。(运不运行程序都没有关系)  5、这时将ADOTable属性里的filtered改为 true, 再拉滚动条看看
      
      这5步都很简单,都是在设计状态下完成的,不用运行程序。
      当你做到第5步的时候就会发现DBGrid 的滚动条拉得很费劲了。
       
      

  3.   

    filterer是要与filter相配合用的。
    ADOTable1.Filter:='字段名=字段值';
    ADOTable1.Filtered:=true;
    这样就能起到过滤的作用。
      

  4.   

    废话,谁不知道这样过滤?只是过滤了以后,显示在dbGrid里的数据,
    你拉滚动条往下浏览数据根本拉不动。   不喜欢不做过实验的人乱回答问题。
       同样不喜欢答非所问
      

  5.   

    Up→truelang(truelang)。
    我说楼主你这人怎么那么四六不靠哇,人家帮你回答问题你还说人家“废话”,你以为咱们就指着你那些点数活命呀。
    你知道filtered和filter要搭配使用,那你为什么不用啊?你这人不是有问题吗,你瞧瞧你自己问的问题,明知道单独使用filtered没有作用,故意不用filter,你这是有意来测试开发者本来需要避免的不合理的事情,那当然就有问题喽。
    怎么你想帮Inprise公司做测试啊,程序开发的时候你真正用到filtered的时候,你也不用filter?那我还真是佩服你。
    可能我的话有些令人不愉快,我先向你致歉。我不是针对你,我只是非常不喜欢傲慢的态度。
      

  6.   

    不是我不用filter,而是用了也一样。AdoQuery1.close;
    AdoQuery1.Sql:='select * from 员工表';
    AdoQuery1.open;     //数据正常显示,DBGrid显示所有员工,滚动条拉动没问题                                  
    AdoQuery1.Filtered:=False;
    AdoQuery1.Filter:='性别=''男''';
    AdoQuery1.Filtered:=True;
                       //数据正常过滤,DBGrid显示的男性员工,滚动条有问题!!!!
    一旦采用了过滤,那么DBgrid的滚动条就不灵了。当然过滤后的数据如果只有几条,那
    也不存在滚动条,如果过滤后的数据超过几十条或者更多,滚动条就不行了。
      
       不信的可以试试
                        
      

  7.   

    确实存在这样的情况,我也遇到过!
    我的解决办法是用StringGrid了;
    如果一定要用DBGrid就不让它出现滚动条,每次只显示固定数量的记录,看后面的就翻页
      

  8.   

    Up→moeryang(黑马啸啸)。
    经过测试,我已经知道你的意思了。这应该是Borland自身的问题,它将所有的数据下到客户端后进行过滤处理,行指针在定位的过程中出现的问题。
    还有一个办法可以根治你的问题,就是使用动态SQL语句,比如:
    SELECT * 
    FROM XXX_Table
    WHERE SEX = 'MALE';           //根据你的举例
    或许你要查询设计的面很广,不容易写出SQL语句来,但有一句是不会错的:“在开发多层数据库应用程序的时候,多用SQL语句能够开发出健壮的程序来”。
      

  9.   

    哦,对了补充一句,尽量使用TADOQuery,毕竟SQL Server多用于C/S结构的应用中。
    上午情绪激动了点,希望你不要介意。
      

  10.   


      Close...
      SLQ.add...
      open....
    这个我试过没有问题的,但是主要是因为close和open如果在过滤的数据量也很大的情况下
    会很慢,所以才考虑用filtered过滤。
      

  11.   

    换其他dbgrid比如dxdbgrid,rxdbgrid,功能是一样的,只是细节稍有加强