需要帮助Delphi和ADOTable过滤

时间:2011-07-23 08:33:13

标签: delphi

我正在尝试构建一个发票程序,用于保存Access数据库中的数据。我有一些tedit s,按钮,一个数据源,一个adotable,一个dbgrid和一个弹出菜单。数据库格式为accdb。

问题:我希望程序在用户输入时过滤记录。它可能会过滤dbgrid或tedit,没关系。我以某种方式找到了一些代码,例如:

Table1.FilterOptions:=[foCaseInsensitive];
Table1.Filter:='Filmadi='+QuotedStr(Edit1.Text+'*');
Table1.Filtered:=true;

上面的代码给出了这个错误:Project Project1.exe引发了异常类eoleexception并带有消息:在请求的名称或序号对应的集合中找不到项

其他示例给出了各种错误。

真诚
ONUR

1 个答案:

答案 0 :(得分:1)

在过滤器中使用LIKE运算符:

procedure DoIncrementalFilter(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
  Assert(Assigned(Dataset), 'No dataset is assigned');

  if SearchTerm = '' then
    Dataset.Filtered := False
  else
  begin
    Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
    Dataset.Filtered := True;
  end;
end;

示例:

  DoIncrementalFilter(ADOTable1, 'Filmadi', Edit1.Text);