DataSet过滤器的模糊查询(100分)

  • 主题发起人 主题发起人 tangyin
  • 开始时间 开始时间
T

tangyin

Unregistered / Unconfirmed
GUEST, unregistred user!
发现filter只能过滤以'北京'开头的,
如query1.filter:='北京*'
而想查字符串中含'北京'的,如
Query1.filter := '*北京*';
//查不到数据
因为后台有五千条记录,动态写select固然可以,但速度相当慢。
又不好循环。
请问有什么好办法了。
 
使用 Dataset 的 OnFilterRecord 事件.
procedure TForm1.Query1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := pos('北京',Dataset.FieldByName('Company').asstring)>0;
end;

不过告诉你用Select 也很快!! 当然编程时不会快 :-)).
 
用SQL这样做:
Query1.SQL.Add( 'select * from table where fields like *北京*' );
Query1.Open;
 
其实用select挺快的。主要是过滤之后又要重新刷新为原来未过滤的状态。
所以我是指刷新回原来状态的速度过慢,所以才考虑使用filter的。
SeaSky的应该是个好办法。
茶叶蛋的select语句对吗?
 
对不对您可以在SQL Explore里头看嘛!
我用过‘*北京*’,看见过‘%北京%’,好像是随系统而定。
实在不行可以在SQL Builder里头构造嘛。
反正在我的“大富翁离线浏览器”里头‘*北京*’实现模糊查询用的爽爽的。
 
小茶: 你的Select 语句能看出什么错误吗?
你要做一道改错题 ! :-))
 
对不起,*北京*的外面还有两个引号
下面是成功的例子:
select id, ipaddr from letters where content like '*seasky*'
 
多人接受答案了。
 
后退
顶部