sI有一个名为“ Controled ”的clientdataset布尔字段。
我想过滤不受控制的记录。
在Delphi XE(VCL)中,我正在使用这些代码并且它正在运行:
ClientDataSet1.Filter := 'Controled = 0';
ClientDataSet1.Filtered := True;
在Delphi XE2(FMX)中,此代码不起作用,但我可以过滤控制的记录(Controled =1
)并且它可以工作,但我想要未控制的记录。
任何想法或它是新的版本?
答案 0 :(得分:1)
只要它是一个布尔字段,那么“不控制”呢?如果过滤器字符串解释器没有正确评估布尔字段,如果Controlled = true
有效,那么not (Controled = true)
或Controled <> true
就可以了。举个例子,这意味着只需编写Controled = 1
而不是Controled <> 1
。
答案 1 :(得分:1)
XE3中的快速测试表明,如果您实际使用True
和False
(这是您应该一直这样做的话),过滤器可以正常工作。
ClientDataSet1.Filter := 'Controled = False';
ClientDataSet1.Filtered := True;
我创建的测试表包含一个名为integer
的{{1}}字段和一个名为ID
的{{1}}字段(与您的字段相同,但拼写为2个Ls)。
测试按钮点击代码:
Boolean
没有设置过滤器(Controlled
和procedure 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;
):
过滤= Filtered = False
过滤= Filter = ''