关与使用过滤进行模糊查找?(20分)

  • 主题发起人 主题发起人 QQL
  • 开始时间 开始时间
Q

QQL

Unregistered / Unconfirmed
GUEST, unregistred user!
有一from1(主窗体)和from2(查寻窗体),过行模糊查找。我使用过滤的方法。
var findstr:string;
begin
findstr:='';
if (from2.edit1.text<>'') then
begin
findstr:='cmcode='''+trim(edit1.text)+'*''';
from1.table1.filter:=findstr;
from1.table1.filtered:=true;
end
这样可找到形如:要找abcd,我输a,可找到。但我输入a以后的字如b,就找不到
abcd.我把findstr:='cmcode='''+trim(edit1.text)+'*''';改为
findstr:='cmcode='''+‘*’+trim(edit1.text)+'*''';但不做任何工作,
什么也不找了。不知这是不是DELPHI的一个小BUG?
请各位大侠指教!还有更好的方法请告知。
谢!



 
delphi的filter有这种情况, 如果你是在filtered=true时改变filter会什么都
查不到. 所以改变filter之前先filtered := false 然后再filter = xxxx然后再
filtered := true, 应该就没你的问题了.
 
呵呵, filter就是这样的, 不过filter:='cmcode=''ab*''';没有问题呀, 肯定
可以找到的. *a*确实是不行:-(
好的方法:
1. query, select * from xxx where cmcode like '%ab%'
2. 在onfilterrecord事件里判断:
if pos('ab',dataset.fieldbyname('cmcode').asstring)=0 then
accept:=false
else
accept:=true;
 
同意 cytown...
 
同意 cytown...
 
可不可以:
table1.filter:='cmcode like '+quotedstr('%'+edit1.text+'%');<font style="font-size: 24pt;color: #ff00ff">?</font>"
 
不用先设置为false;
代码为:table1.filter :='cmcode like '''+Trim(Edit1.Text)+'%''';
table1.Filtered :=true 即可
 
接受答案了.
 
后退
顶部