DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: fiscan1
今日帖子: 4
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
2016/8/21 1:23:04
标题:
谁用过最新的Lazarus? Filter是不是有很严重的bug? 浏览:2046
加入我的收藏
楼主: Lazarus1.6.0 + Free pascal3.0.0

用adoquery.filtered=true和adoquery.Filter后,Recordcount还是没变
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2016/8/21 1:35:27
1楼: 我在centos下用,没有问题
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2016/8/21 1:36:57
2楼: 从svn取的最新编译
此帖子包含附件:
PNG 图像
大小:275.0K
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
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也实时更新
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
2016/8/21 1:46:24
3楼: 啊!Lazarus有1.7了吗?哪里可以下载? :-D

官网http://www.lazarus-ide.org/,只写有1.6.0+FPC3.0.0
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
2016/8/21 1:54:43
4楼: 明天再试试1.7,谢谢fausten兄 :-D
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2016/8/21 2:15:27
5楼: 从snv中取的就是最新的,标的1.7
 svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
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.
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
2016/8/21 4:58:29
7楼: 期待1.7.0正式发布版能改变这个问题 :-D
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
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;
此帖子包含附件:
PNG 图像
大小:29.0K
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2016/8/21 10:20:00
9楼: 我用的全是最新的,Centos 7.2 Kernel(4.7.1) GCC 6.1.0 FPC 3.1.1
----------------------------------------------
-
作者:
男 fausten (fausten) ★☆☆☆☆ -
盒子活跃会员
2016/8/21 11:06:59
10楼: http://bbs.ebizmis.com

lazarus初学者论坛,欢迎大家加入!
----------------------------------------------
-
作者:
男 744840146 (744840146) ▲▲▲▲▲ -
普通会员
2016/8/21 11:19:33
11楼: 自己使用问题吧

q.Filtered:=false;//如果原来已经打开了过滤器,不关闭后面设置的过滤无效
q.Filter:='Id=0';
q.Filtered:=true;
----------------------------------------------
-
作者:
男 yesky08 (yesky) ▲▲▲▲▲ -
普通会员
2016/8/22 1:46:20
12楼: fausten:
postgresql也很不错,可能就是sql的差异,我是用mysql
现在暂时用not eof解决了这个问题 :-D


744840146:
Open后Filtered就是false,因为只过滤一次,就没写false
----------------------------------------------
-
作者:
男 qiaoxuhui888 (qiaoxuhui888) ★☆☆☆☆ -
普通会员
2016/9/5 16:08:10
13楼: 文字文字文字
----------------------------------------------
-
作者:
男 mmwy (wuyu) ★☆☆☆☆ -
普通会员
2016/11/30 23:30:26
14楼: 跟Dataset控件有关系,我用TBufDataSet可以过滤,用TMemDataSet之类的就不支持,看源码直接就没实现。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行85.9375毫秒 RSS