like的麻烦!!哎,帮帮忙!
高位高手可否告之,我下面的代码到底错在那??我用LIKE模糊查询,我用的是DELPHI和SQL
ha3是动态表名,而cc4是动态的字段名,下面的语句我不知错在那里,我如果把LIKE改为=,把cc5,改为cc2,也就是sql.add(format('where %s='''+cc2+'''',[cc4])),他就能查到记录,可下面的语句一执行就报错,说no argument for format '%7%'.edit1.text:=7,所以为什么会这样了。这样才能解决了???
cc2:=trim(edit1.text);
cc5:='%'+cc2+'%';
with adoquery1 do
begin
close;
sql.clear;
sql.add(format('select * from %s',[ha3]));
sql.add(format('where %s like '''+cc5+'''',[cc4]));
prepared;
open;
问题点数:20、回复次数:3Top
1 楼jingpingyi(jingpingyi)回复于 2001-02-11 11:40:00 得分 9
format函数的问题,
这样应该不会有问题:
SQL.Add('where '+cc4+' like '+''''+cc5+'''');
Top
2 楼steps(壮丁)回复于 2001-02-11 14:13:00 得分 8
老问题了,同样是对Delphi里的'''认识不足
设cc4='Field1', cc5='abc',则
format('where %s like '''+cc5+'''',[cc4])='where Field1 like 'abc''
^^^^^^
结果根本不是个字符串,当然出错
而你需要的实际上是'where Field1 like ''abc'''
经过Delphi编译系统处理后才为字符串where Field1 like 'abc'
jingpingyi的答案表达是正确的,不要用format
Top
3 楼xzisgood(夏)回复于 2001-02-11 17:05:00 得分 3
这样的问题你可以自己看看么.
showmessage(adoquery1.sql.CommaText);
显示的是sql语句,sql语法有没有错误,一眼就能看出来了.Top




