我看来http://bbs.justep.com/forum.php? ... =590这个帖子:
二、因为 SQLFilter (或者 UserFilter)是服务器端过滤,而 Filter 是客户端过滤的。服务器端是可以处理参数,客户段是不可以的。就是说当你设置了SQLFilter 属性并且 SQLFiltered =True 以后,会把 SQLFilter 和 SQL语句共同来组成 SQL 语句发给数据库服务器。因此可以支持参数。
但是我这里用SQLFilter传参数怎么就不行呢?
例:with TSQLDataSet(dsbMatCode.DataSet) do
begin
DisableControls;
//if Active then Close;
//Sql.Text:='Select * from MMS_MatCode where 1=1 '+FsFilterClass+FsFilterOther + FsFilterFind+'';
SQLFiltered := False;
SQLFilter := '1=1 ' + FsFilterClass + FsFilterOther + FsFilterFind;
if not (edtMatcode.Text='') then Params.ParamByName('Matcode').AsString := '%'+edtMatcode.Text.Trim+'%';
if not (edtMatName.Text='') then Params.ParamByName('MatName').AsString := '%'+edtMatName.Text.Trim+'%';
if not (edtMatType.Text='') then Params.ParamByName('MatType').AsString := '%'+edtMatType.Text.Trim+'%';
if not (edtAidCode.Text='') then Params.ParamByName('Aidcode').AsString := '%'+SysUtils.UpperCase(edtAidCode.Text.Trim)+'%';
SQLFiltered := True;
//Open;
EnableControls;
end;
调试时执行到SQLFilter时值为:MatCode like :MatCode
再继续执行赋参数值的时候就报错提示:paramter MatCode not found
求助啊!