2

sI 有一个名为“受控”的客户端数据集布尔字段

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

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

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

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

任何想法或它只是在新版本中?

4

2 回答 2

1

只要是布尔字段,那“不受控制”呢?如果过滤器字符串解释器没有正确评估布尔字段,如果Controlled = true有效,您应该可以使用not (Controled = true)or Controled <> true。以你的例子为例,这意味着而不是Controled = 1简单地 write Controled <> 1

于 2012-11-03T21:01:26.370 回答
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 = FalseFilter = ''):

未设置过滤器

过滤器 =Controlled = False

过滤器 = 假

过滤器 =Controlled = True

过滤器 = 真

于 2012-11-03T21:28:45.427 回答