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

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

在Delphi XE(VCL)中,我正在使用以下代码,并且可以正常工作:

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


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

任何想法还是新版本中的一个?

最佳答案

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

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


我创建的测试表包含一个名为integerID字段和一个名为BooleanControlled字段(与您的表相同,但拼写为2 L)。

测试按钮的点击代码:

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

10-08 04:48