case DataSet.Fieldbyname(fieldname).DataType of ftString,ftWideString: begin if not checkbox1.Checked then begin dataset.Filtered:=false; dataset.Filter:=''; end; dataset.OnFilterRecord:=FilterRecord; dataset.Filtered:=true; end; ftSmallint,ftInteger,ftWord,ftLargeint,ftFloat,ftBCD: begin if not checkbox1.Checked then dataset.Filtered:=false; dataset.Filter:=fieldname+'='+trim(edit1.text); dataset.Filtered:=true; end; else begin raise exception.Create('该字段类型不可识别!'); end; end; procedure TFilterForm.FilterRecord(DataSet: TDataSet;var Accept: Boolean); begin if pos(StrLower(pchar(trim(edit1.text))),StrLower(pchar(dataset.FieldByName(fieldname).asstring)))>0 then accept:=true else accept:=false; end;
我用的 是 dbgrideh 并启用了 STfilter 过滤功能 问题是 还没有到 ClientDataSet1FilterRecord 这个过程 dbgrideh 的 ehlibcds 单元就 错了 type mismatch in expression
var
strTemp: String;
begin
strTemp:= DataSet.FindField('字段名').AsString;
if Pos('中文', strTemp) <> 0 then
Accept:= True
else
Accept:= false;
end;
http://topic.csdn.net/t/20061114/09/5155649.html
两篇帖子,你看一下
ftString,ftWideString:
begin
if not checkbox1.Checked then
begin
dataset.Filtered:=false;
dataset.Filter:='';
end;
dataset.OnFilterRecord:=FilterRecord;
dataset.Filtered:=true;
end;
ftSmallint,ftInteger,ftWord,ftLargeint,ftFloat,ftBCD:
begin
if not checkbox1.Checked then
dataset.Filtered:=false;
dataset.Filter:=fieldname+'='+trim(edit1.text);
dataset.Filtered:=true;
end;
else
begin
raise exception.Create('该字段类型不可识别!');
end;
end;
procedure TFilterForm.FilterRecord(DataSet: TDataSet;var Accept: Boolean);
begin
if pos(StrLower(pchar(trim(edit1.text))),StrLower(pchar(dataset.FieldByName(fieldname).asstring)))>0 then
accept:=true
else
accept:=false;
end;
问题是 还没有到 ClientDataSet1FilterRecord 这个过程
dbgrideh 的 ehlibcds 单元就 错了 type mismatch in expression