如果用select..where那么会将不符合条件的记录过滤掉。那和模糊定位的概念不一样了。
用LOCATE方法,它只能从字段内容开始部分进行模糊定位,但当如果要定位的条件是中间或后面的部分,那如何实现?还请各位大侠指点,谢谢!
用LOCATE方法,它只能从字段内容开始部分进行模糊定位,但当如果要定位的条件是中间或后面的部分,那如何实现?还请各位大侠指点,谢谢!
解决方案 »
- 发送WM_VSCROLL消息怎样自由控制滚动量
- 数据类型转换的问题
- tabsheet和webbrowser的使用问题
- 在DBGrid中,如何控制输入数据的格式?
- 我访问了网站,我的注册表被管理员禁用,请问我想用DELPHI编个程序,恢复注册表,请问如何做
- 一个第一次学DELPHI的人,从不会到可以自己做一个管理系统大概需要多长时间?
- 老板卸磨杀驴,为难得的失业状态,散分!
- 从集中营归来,感受到自由,看到这里的朋友还是这样热情,散分!
- 新年好,给delphi的兄弟拜年了
- 怎样模糊查找?
- 使用odac将net打为true时,连接数据库时报 Net:Invalid SID!错,如何这是什么原因啊?
- 如何实现这个查询功能!
我认为两步
1.WHERE 条件语句联合你的模糊的定义的条件,比如满足条件的第三条.得到主键的值.
select keyid
from
(
select keyid
from table
where cri.....
)
where monotonic()=3;
2.再以主键值进行定位.
LOCATE语句我不熟,你自己写了.
/////////////////
可以这样
Filter:=false;
Filter='字段 like ''%值%''';
Filtered:=true;
例:在一个表格中有1000条记录,指定条件后,光标就跳到该记录上,而我不想过滤掉不符合条件的记录。用filter,select .. where ... like '%..%'都会将不符合条件的记录过滤掉。
而locate就可以直接定位,但有一问题是,locate在模糊定位时,只能从内容的开始部分进行模糊,如'12345abcd',对该内容进行模糊定位的话,locate('123',...)可以定位到该条记录,但用locate('abc'...)就不能定位到该条记录了。
我想要问的就是如何实现locate('abc'...)也可以定位到该条记录,而不是用filter,like等过滤方式。还请各位大侠指点!谢谢 !
var
tmpstr:string;
begin
with aDataSet do
begin
DisableControls;
Filtered:=false;
Filter:='字段1 like ''%'+'abc'+'%''';
Filtered:=true;
str:=FieldByName('字段1').AsString;
Filtered:=false;
Locate('字段1',str,[loCaseInsensitive]);
EnableControls;
end;
end;
...........
第一你该早点说清楚你的要求.不过要求还算写得清晰.
第二,看看我的思路吧.只是要分两步走.
begin
First;
DisableControls;
while not Eof do
begin
if pos('abc', FieldByName('字段1').AsString) <= 0 then
Next
else Break;
end;
EnableControls;
end;大概是这个意思,我没调试这段代码。
你调试一下,执行起来了就达到你的目的了。