请教为什么TClientDataSet过滤时有一些条件可以过滤,但有一些条件不能过滤?
比如:
CltDS_Km22.Filter := 'jlch='+QuotedStr(Cx_jlchkm22.Text);
CltDS_Km22.Filtered := True;
这样可以过滤出结果,但是:
CltDS_Km22.Filter := 'ksch_km22='+QuotedStr(Cx_kschkm22.Text);
CltDS_Km22.Filtered := True;
这样就没过滤出想要的结果,这是为什么呢?而且我发现对一些字段可以过滤,但对另外一些字段就不能过滤。
比如:
CltDS_Km22.Filter := 'jlch='+QuotedStr(Cx_jlchkm22.Text);
CltDS_Km22.Filtered := True;
这样可以过滤出结果,但是:
CltDS_Km22.Filter := 'ksch_km22='+QuotedStr(Cx_kschkm22.Text);
CltDS_Km22.Filtered := True;
这样就没过滤出想要的结果,这是为什么呢?而且我发现对一些字段可以过滤,但对另外一些字段就不能过滤。
解决方案 »
- 最近研究搜索引擎,搞到些免费电影,大家分享,有顶有送!
- 能否在不用数据组件的情况下,在程序中嵌入SQL语句?
- 在这样的控件代码中如何设控件属性初值?
- 给我看看这段代码:将stringgrid表格的内容导出到excel中
- 好简单的问题啊
- 急急。。。。。。
- Application.terminate不能完全终止程序?!请帮我!
- 怎么用delphi开发asp COM+组件在Web页面中显示一个Word文档?
- 求Rad Studio XE6的fastreport报表控件安装
- element ui 合计行
- 这样的vc的结构体定义,怎么在delphi中定义
- delphi如何修改局域网代理和宽带拨号代理 up有分
在TClientDataSet的OnFilterRecord里做处理//
Accept := StrPos(DataSet.FieldByName('ksch_km22').AsString,Cx_kschkm22.Text) <> nil;
还有可能和楼主待过滤的数据类型有关系:
数值型的过滤条件可以这样写: (以下例子中ColName所表示的是待过滤的数据库列名)
Filter:='ColName>'+Edit1.Text;
其真实的过滤字符会是这样的:ColName>10
字符型的可以这样写:
Filter:='ColName='''+Edit1.Text+'''';
其真实的过滤字符会是这样的:ColName='张三',这里的列取值有单引号
日期型的则需要这样写
Filter:='ColName>"'+Edit1.Text+'"';
其真实的过滤字符会是这样的:ColName>"1920-10-10 10:30:21",这里的列取值为双引号