需要有关Delphi和ADOTable筛选的帮助

yc0p9oo0  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(125)

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

问题:我想让程序在用户打字时过滤记录。它可能会过滤数据库网格或tedit,这都无关紧要。我以某种方式找到了一些代码,例如:

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

上面的代码给出此错误:Project Project1.exe引发异常类eoleExcept,并显示Message:Item无法在与请求的名称或序号对应的集合中找到

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

诚心
奥努尔

wljmcqd8

wljmcqd81#

在筛选器中使用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);

相关问题