过滤记录为false的客户端数据集中的记录

时间:2012-11-03 19:41:08

标签: delphi filter tclientdataset

sI有一个名为“ Controled ”的clientdataset布尔字段。

我想过滤不受控制的记录。

在Delphi XE(VCL)中,我正在使用这些代码并且它正在运行:

ClientDataSet1.Filter := 'Controled = 0';  
ClientDataSet1.Filtered := True;

在Delphi XE2(FMX)中,此代码不起作用,但我可以过滤控制的记录(Controled =1)并且它可以工作,但我想要未控制的记录。

任何想法或它是新的版本?

2 个答案:

答案 0 :(得分:1)

只要它是一个布尔字段,那么“不控制”呢?如果过滤器字符串解释器没有正确评估布尔字段,如果Controlled = true有效,那么not (Controled = true)Controled <> true就可以了。举个例子,这意味着只需编写Controled = 1而不是Controled <> 1

答案 1 :(得分:1)

XE3中的快速测试表明,如果您实际使用TrueFalse(这是您应该一直这样做的话),过滤器可以正常工作。

ClientDataSet1.Filter := 'Controled = False';
ClientDataSet1.Filtered := True;

我创建的测试表包含一个名为integer的{​​{1}}字段和一个名为ID的{​​{1}}字段(与您的字段相同,但拼写为2个Ls)。

测试按钮点击代码:

Boolean

没有设置过滤器(Controlledprocedure TForm3.Button1Click(Sender: TObject); begin ClientDataSet1.Filtered := False; if Edit1.Text <> '' then begin ClientDataSet1.Filter := Edit1.Text; ClientDataSet1.Filtered := True; end else ClientDataSet1.Filter := ''; end; ):

No filter set

过滤= Filtered = False

Filter = False

过滤= Filter = ''

Filter = True