导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2016/8/21 1:23:04
标题:
谁用过最新的Lazarus? Filter是不是有很严重的bug?
浏览:2046
加入我的收藏
楼主:
Lazarus1.6.0 + Free pascal3.0.0 用adoquery.filtered=true和adoquery.Filter后,Recordcount还是没变
----------------------------------------------
-
作者:
2016/8/21 1:35:27
1楼:
我在centos下用,没有问题
----------------------------------------------
-
作者:
2016/8/21 1:36:57
2楼:
从svn取的最新编译
此帖子包含附件: 大小: 275.0K
----------------------------------------------
-
作者:
2016/8/21 1:42:52
2楼:
fausten,我也是centos的, CentOS6.3 x86 + Lazarus1.6.0 + Free pascal 3.0.0,大概流程都是这样: 设置TSQLQuery.SQL,然后Open,然后Filter,然后Filtered:=true,执行后RecordCount没改变 以前的版本Filter没留意过,但是今天下载这个最新版,刚好要用Filter就发现RecordCount真是一个很大的问题,非常不准确,不像Delphi,一Filter就有反应,RecordCount也实时更新
----------------------------------------------
-
作者:
2016/8/21 1:46:24
3楼:
啊!Lazarus有1.7了吗?哪里可以下载? :-D 官网http://www.lazarus-ide.org/,只写有1.6.0+FPC3.0.0
----------------------------------------------
-
作者:
2016/8/21 1:54:43
4楼:
明天再试试1.7,谢谢fausten兄 :-D
----------------------------------------------
-
作者:
2016/8/21 2:15:27
5楼:
从snv中取的就是最新的,标的1.7 svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus
----------------------------------------------
-
作者:
2016/8/21 4:55:03
6楼:
刚才又用1.6.0测试了下,可能都是这样了,刚才测试过,无论哪个环节,都是现实1000,也就是这个RecordCount是Open后的总数,即使Filter,也无效 var i:Integer; begin q.Last; i:=q.RecordCount; showmessage(inttostr(i));//1000 q.Filter:='Id=0'; q.Filtered:=true; i:=q.RecordCount; showmessage(inttostr(i));//1000 q.First; while not q.EOF do begin i:=q.RecordCount; showmessage(inttostr(i));//这个循环不会进入 q.Next; end; i:=q.RecordCount; showmessage(inttostr(i));//1000 找到了wiki官方的一个说明,说明也就是这样了,Filter不会改变RecordCount: In current stable FPC, '.RecordCount' does not take filters into account, i.e. it shows the unfiltered total.
----------------------------------------------
-
作者:
2016/8/21 4:58:29
7楼:
期待1.7.0正式发布版能改变这个问题 :-D
----------------------------------------------
-
作者:
2016/8/21 10:10:22
8楼:
我用的pgdac,数据库postgresql,可以支持filter。 procedure TForm1.Button1Click(Sender: TObject); var pgconn1: tpgconnection; pgtable1: tpgtable; begin memo1.lines.clear; try pgconn1 := tpgconnection.create(nil); pgtable1 := tpgtable.create(nil); pgconn1.connectstring := 'Data Source=127.0.0.1' +';Port=5432' +';Database=ebizmis' +';User ID=admin' +';Password=xxx' +';Connection Timeout=5;Character Set=UTF8;Login Prompt=False'; pgconn1.Connected := true; pgtable1.connection := pgconn1; pgtable1.TableName := 'biz_wqmeminfo'; pgtable1.active := true; memo1.lines.add('before filter:'+inttostr(pgtable1.RecordCount)); pgtable1.Filter := 'i_mem_id=3477'; pgtable1.filtered := true; memo1.lines.add('after filter:'+inttostr(pgtable1.RecordCount)); finally pgconn1.free; pgtable1.free; end; end;
此帖子包含附件: 大小: 29.0K
----------------------------------------------
-
作者:
2016/8/21 10:20:00
9楼:
我用的全是最新的,Centos 7.2 Kernel(4.7.1) GCC 6.1.0 FPC 3.1.1
----------------------------------------------
-
作者:
2016/8/21 11:06:59
10楼:
http://bbs.ebizmis.com lazarus初学者论坛,欢迎大家加入!
----------------------------------------------
-
作者:
2016/8/21 11:19:33
11楼:
自己使用问题吧 q.Filtered:=false;//如果原来已经打开了过滤器,不关闭后面设置的过滤无效 q.Filter:='Id=0'; q.Filtered:=true;
----------------------------------------------
-
作者:
2016/8/22 1:46:20
12楼:
fausten: postgresql也很不错,可能就是sql的差异,我是用mysql 现在暂时用not eof解决了这个问题 :-D 744840146: Open后Filtered就是false,因为只过滤一次,就没写false
----------------------------------------------
-
作者:
2016/9/5 16:08:10
13楼:
文字 文字 文字
----------------------------------------------
-
作者:
mmwy (wuyu)
★☆☆☆☆
-
普通会员
2016/11/30 23:30:26
14楼:
跟Dataset控件有关系,我用TBufDataSet可以过滤,用TMemDataSet之类的就不支持,看源码直接就没实现。
----------------------------------------------
-