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

过滤器 =Controlled = False

过滤器 =Controlled = True
