我只知道ClientDataSet1.Filter := 'Capital=''L*'''; 这样会查以L开头的字段,另外也可以用ClientDataSet的OnFilterRecord事件 当Filtered设为True时触发它 procedure TForm1.ClientDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin if Pos('Pa', DataSet.['Capital']) > 0 then Accept := True else Accept := False; end;
To cobi(我是小新) 把cds文件中的这个text字段的值用stream读出来,然后要么放在memo里,要么就直接在stream里做模糊查询 但是如果是复合查询,你那方法不行了吧? 例如,象 SQL语句: Select * from table1 where cipai='sss' and text Like '%sss%' 这样的就查不出来呀(cipai 为char 字段,里面有若干记录为sss;text为text字段)
这样会查以L开头的字段,另外也可以用ClientDataSet的OnFilterRecord事件
当Filtered设为True时触发它
procedure TForm1.ClientDataSet1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if Pos('Pa', DataSet.['Capital']) > 0 then
Accept := True
else
Accept := False;
end;
例如,象 SQL语句: Select * from table1 where cipai='sss' and text Like '%sss%'
这样的就查不出来呀(cipai 为char 字段,里面有若干记录为sss;text为text字段)
可以在 Cds 中加入 OnFilterRecord事件 然后在 OnFilterRecord事件中写到Accept := AnsiPos( 'yoursubstring', DataSet.FieldByName('memo').AsString) <> 0;然后一样 Filtered := true; 就可以得到结果了