我正在尝试构建一个发票程序,用于保存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
答案 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);