怎样用sql.add同时进行精确查询和模糊查询?(5分)

  • 主题发起人 主题发起人 zhuifeng
  • 开始时间 开始时间
Z

zhuifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
edit1和edit2 的内容进行精确查询,edit3的内容进行模糊查询,
用sql.add应该怎样写?
sql.add('select * from table wehere field1='''+edit1.text+''' and field2='''+edit2.text+''' and field3 like '''+edit3.text+'%'+'''');
我照上面这样写可是运行时却出现错误?
请各位高手多多指教,谢谢!·
 
sql.add('select * from table wehere field1='''+edit1.text+''' and field2='''+edit2.text+''' and field3 like '''+edit3.text+'%'+'''');
table wehere ?这里是你的笔误马
如果不是,那么报错信息是什么
 
sql.add('select * from table where (field1='''+edit1.text+''') and (field2='''+edit2.text+''') and (field3 like ''%'+edit3.text+'%'')');
好象是这样吧!
 
错误提示信息为:
[odbc visual foxpro drive]commands contain unrecognized phrase/keyword; process stopped;

 
那肯定是你的where当时写成了wehere
 
if (edit1.text<>'') and (edit2.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtgddm='''+edit1.text+''' and wtzqdm='''+edit2.text+''' and wthtxh like '''+edit3.text+'%'+'''');
if (edit1.text<>'') and (edit2.text<>'') then
sql.add('select * from sjswt where wtgddm='''+edit1.text+''' and wtzqdm='''+edit2.text+'''');
if (edit1.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtgddm='''+edit1.text+''' and wthtxh like '''+edit3.text+'%'+'''');
if (edit2.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtzqdm='''+edit1.text+''' and wthtxh like '''+edit3.text+'%'+'''');
我的原程序就是这样写的,可不知错在什么地方?
 
是不是query没有clear引起的?
 
我在程序刚开始已经将query1.close 了,
在运行时就报错:
错误提示信息为:
[odbc visual foxpro drive]commands contain unrecognized phrase/keyword; process stopped;

我怎么看也搞不清楚错在什么地方?
 
sql.add('select * from sjswt where wtgddm='''+edit1.text+''' and wtzqdm='''+edit2.text+''' and wthtxh like '''+edit3.text+'%'+'''');
要那么多引号干嘛? ~~~ ~~~ ~~~ ~~~ ~~~ ~~~~
改成这样:
sql.add('select * from sjswt where wtgddm='+edit1.text+' and wtzqdm='+edit2.text+' and wthtxh like "'+edit3.text+'%"'); //里面的是双引号,不是两个单引号
 
showmessage(sql.text)
在其他地方run一下看看
两个单引号没错
""也是可以的

'%'+''''='%''',简单一点
 
我照你们说的已经将相应的地方改了过来,
if (edit1.text<>'') and (edit2.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtgddm='+edit1.text+' and wtzqdm='+edit2.text+' and wthtxh like "'+edit3.text+'%"');
if (edit1.text<>'') and (edit2.text<>'') then
sql.add('select * from sjswt where wtgddm='''+edit1.text+''' and wtzqdm='''+edit2.text+'''');
if (edit1.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtgddm='+edit1.text+' and wthtxh like "'+edit3.text+'%"');
if (edit2.text<>'') and (edit3.text<>'') then
sql.add('select * from sjswt where wtzqdm='+edit1.text+' and wthtxh like "'+edit3.text+'%"');
可是运行的时候还是抱错,我头都快炸了,各位高手再帮帮忙吧!
 
你的if语句有问题,照你这个逻辑,如果三个edit的内容都不为空最后
Query.Sql.Text应该有四个select语句了。
建议你这样写:
SQL.Close;
SQL.Clear;
SQL.Add(' select * from sjswt where wtgddm like ' + Quotedstr('%'+edit1.Text+'%')+
' and wtzqdm like ' + Quotedstr('%'+edit2.Text+'%')+
' and wthtxh like ' + Quotedstr('%'+edit3.Text+'%'));
SQL.Open;
 
哦,对了,唉!
谢谢大家了,不好意思,我是新手,没有多少分了,
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
680
import
I
后退
顶部