【问题标题】:TCheckBox to filter dataset by a fieldTCheckBox 按字段过滤数据集
【发布时间】:2015-07-22 14:24:35
【问题描述】:

我在勾选复选框时尝试按一个字段过滤数据集,以下是我整理并认为是正确的代码,但它似乎不起作用,它带回 0 条记录。

procedure TfrmCustomers.cbClick(Sender: TObject);
if cbActive.Checked = True then
with dmod.cds do
begin
  DisableControls;
  try
    Filtered := False;
    FilterOptions := [foCaseInsensitive,foNoPartialCompare];
    Filter := ('active LIKE true');
    Filtered := True;
  finally
    EnableControls;
  end;
end;
end;

数据集中字段的名称称为“活动”,它存储“真”或“假”的字符串。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

    标签: delphi delphi-xe2 tcheckbox


    【解决方案1】:

    如果'active'字段包含一个字符串,你应该写:

    Filter := ('active = ''true''');
    

    现在您正在过滤布尔值 True。 另外,为什么不为这个 Active 字段使用布尔/位字段?

    【讨论】:

      【解决方案2】:

      像这样改变过滤线

      Filter := ('active = ''true''');
      

      【讨论】:

      • 没有。 LIKE 速度较慢,适用于使用通配符时使用。如果您要匹配特定内容,请改用=
      猜你喜欢
      • 2021-03-09
      • 2017-02-05
      • 1970-01-01
      • 2014-08-30
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多