ADOQuery 或 ADOTable 使用了 filtered=true后,DBgrid 的滚动条基本上拉不动数据 ADOQuery 或 ADOTable 使用了 filtered=true后,DBgrid 的滚动条基本上拉不动数据,数据不怎么滚动,请问是怎么回事? 如果将filtered=false 一切又正常 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哦,你的filter是什么,dataset的改变不会影响grid的啊 我没有写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 的滚动条拉得很费劲了。 filterer是要与filter相配合用的。ADOTable1.Filter:='字段名=字段值';ADOTable1.Filtered:=true;这样就能起到过滤的作用。 废话,谁不知道这样过滤?只是过滤了以后,显示在dbGrid里的数据,你拉滚动条往下浏览数据根本拉不动。 不喜欢不做过实验的人乱回答问题。 同样不喜欢答非所问 Up→truelang(truelang)。我说楼主你这人怎么那么四六不靠哇,人家帮你回答问题你还说人家“废话”,你以为咱们就指着你那些点数活命呀。你知道filtered和filter要搭配使用,那你为什么不用啊?你这人不是有问题吗,你瞧瞧你自己问的问题,明知道单独使用filtered没有作用,故意不用filter,你这是有意来测试开发者本来需要避免的不合理的事情,那当然就有问题喽。怎么你想帮Inprise公司做测试啊,程序开发的时候你真正用到filtered的时候,你也不用filter?那我还真是佩服你。可能我的话有些令人不愉快,我先向你致歉。我不是针对你,我只是非常不喜欢傲慢的态度。 不是我不用filter,而是用了也一样。AdoQuery1.close;AdoQuery1.Sql:='select * from 员工表';AdoQuery1.open; //数据正常显示,DBGrid显示所有员工,滚动条拉动没问题 AdoQuery1.Filtered:=False;AdoQuery1.Filter:='性别=''男''';AdoQuery1.Filtered:=True; //数据正常过滤,DBGrid显示的男性员工,滚动条有问题!!!!一旦采用了过滤,那么DBgrid的滚动条就不灵了。当然过滤后的数据如果只有几条,那也不存在滚动条,如果过滤后的数据超过几十条或者更多,滚动条就不行了。 不信的可以试试 确实存在这样的情况,我也遇到过!我的解决办法是用StringGrid了;如果一定要用DBGrid就不让它出现滚动条,每次只显示固定数量的记录,看后面的就翻页 Up→moeryang(黑马啸啸)。经过测试,我已经知道你的意思了。这应该是Borland自身的问题,它将所有的数据下到客户端后进行过滤处理,行指针在定位的过程中出现的问题。还有一个办法可以根治你的问题,就是使用动态SQL语句,比如:SELECT * FROM XXX_TableWHERE SEX = 'MALE'; //根据你的举例或许你要查询设计的面很广,不容易写出SQL语句来,但有一句是不会错的:“在开发多层数据库应用程序的时候,多用SQL语句能够开发出健壮的程序来”。 哦,对了补充一句,尽量使用TADOQuery,毕竟SQL Server多用于C/S结构的应用中。上午情绪激动了点,希望你不要介意。 用 Close... SLQ.add... open....这个我试过没有问题的,但是主要是因为close和open如果在过滤的数据量也很大的情况下会很慢,所以才考虑用filtered过滤。 换其他dbgrid比如dxdbgrid,rxdbgrid,功能是一样的,只是细节稍有加强 用adoquery进行模糊查询,代码该怎么写?????在线等!!!!! 急问一个奇怪的问题 如何屏蔽win2000信使服务的弹出信息,并且捕获信息 如何删除一个字符串的前10个字符? 一个网络下载中网址的问题。 同时添加多个控件? 请问table.filter 怎么用??? 在线等待,请求帮忙! 100分急求关于一个Email地址验证组件问题 ????请教高手, 如何在mdiform客户区画线??? 请求多线程的例子!! cxGrid控件怎么手动往TcxGridTableView里增加记录?
我没有写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 的滚动条拉得很费劲了。
ADOTable1.Filter:='字段名=字段值';
ADOTable1.Filtered:=true;
这样就能起到过滤的作用。
你拉滚动条往下浏览数据根本拉不动。 不喜欢不做过实验的人乱回答问题。
同样不喜欢答非所问
我说楼主你这人怎么那么四六不靠哇,人家帮你回答问题你还说人家“废话”,你以为咱们就指着你那些点数活命呀。
你知道filtered和filter要搭配使用,那你为什么不用啊?你这人不是有问题吗,你瞧瞧你自己问的问题,明知道单独使用filtered没有作用,故意不用filter,你这是有意来测试开发者本来需要避免的不合理的事情,那当然就有问题喽。
怎么你想帮Inprise公司做测试啊,程序开发的时候你真正用到filtered的时候,你也不用filter?那我还真是佩服你。
可能我的话有些令人不愉快,我先向你致歉。我不是针对你,我只是非常不喜欢傲慢的态度。
AdoQuery1.Sql:='select * from 员工表';
AdoQuery1.open; //数据正常显示,DBGrid显示所有员工,滚动条拉动没问题
AdoQuery1.Filtered:=False;
AdoQuery1.Filter:='性别=''男''';
AdoQuery1.Filtered:=True;
//数据正常过滤,DBGrid显示的男性员工,滚动条有问题!!!!
一旦采用了过滤,那么DBgrid的滚动条就不灵了。当然过滤后的数据如果只有几条,那
也不存在滚动条,如果过滤后的数据超过几十条或者更多,滚动条就不行了。
不信的可以试试
我的解决办法是用StringGrid了;
如果一定要用DBGrid就不让它出现滚动条,每次只显示固定数量的记录,看后面的就翻页
经过测试,我已经知道你的意思了。这应该是Borland自身的问题,它将所有的数据下到客户端后进行过滤处理,行指针在定位的过程中出现的问题。
还有一个办法可以根治你的问题,就是使用动态SQL语句,比如:
SELECT *
FROM XXX_Table
WHERE SEX = 'MALE'; //根据你的举例
或许你要查询设计的面很广,不容易写出SQL语句来,但有一句是不会错的:“在开发多层数据库应用程序的时候,多用SQL语句能够开发出健壮的程序来”。
上午情绪激动了点,希望你不要介意。
Close...
SLQ.add...
open....
这个我试过没有问题的,但是主要是因为close和open如果在过滤的数据量也很大的情况下
会很慢,所以才考虑用filtered过滤。