请教Ado组合模糊查询(50分)

  • 主题发起人 主题发起人 wuchi
  • 开始时间 开始时间
W

wuchi

Unregistered / Unconfirmed
GUEST, unregistred user!
Ado组合模糊查询问题:
AdoQ.SQL.Add('Select * From 表名 where 字段一 like "%'+Edit1.Text+'%" and 字段二 Like "%'+ComboBox1.Text+'%" and 字段三 Like "%'+ComboBox2.Text+'%"')
原码如上,
1、为什么上面的源码换行,一换行就提示出错?
2、上面是3个组合查询,我在后面又继续加上一个模糊查询,
变为4个组合查询,就会出错,为什么?4个组合查询应该怎样做?
 
AdoQ.SQL.Add('Select * From 表名 where 字段一 like "%'+Edit1.Text+'%" and'+
' 字段二 Like "%'+ComboBox1.Text+'%" and 字段三 Like "%'+ComboBox2.Text+'%"')
 
AdoQ.SQL.Add('Select * From 表名 where 字段一 like ''%'+Edit1.Text+'%'' and 字段二 Like ''%'
+ComboBox1.Text+'%'' and 字段三 Like ''%'+ComboBox2.Text+'%''')
双引号换成两个单引号就OK了
 
SQLStr: string;
SQLStr := 'Select * From 表名 '
+ ' where 字段一 like ' + QuotedStr('%'+Edit1.Text+'%')
+ ' and 字段二 Like ' + QuotedSTr('%'+ ComboBox1.Text+'%')
+ ' and 字段三 Like ' + QuotedStr('%'+ ComboBox2.Text +'%')
+ ' and 字段四 Like ' + QuotedStr('%'+ ComboBox3.Text +'%')
+ ......
AdoQ.SQL.Add(SQLStr);
 
感谢三位答复,
to delada: 用双引号也能运行,不信你试试
to zhengbo:我没有说清楚,出错是指:
如果ComboBox3.Text没有数据,而ComboBox2.Text有数据,查询ComboBox2.Text时,显示没有数据;
如果ComboBox3.Text有数据,而ComboBox2.Text也有数据,查询ComboBox2.Text时,就显示有数据;
为什么?
 
据我的分析,你查询的ComboBox3.Text 对应的字段有空值,所以才出现了你说的情况,建议
你将SQL语句改成如下试试:
AdoQ.SQL.Add('Select * From 表名 where 字段一 like ''%'+Edit1.Text+'%'' and 字段二 Like ''%'
+ComboBox1.Text+'%'' and 字段三 Like ''%'+ComboBox2.Text+'%''+
' and (字段四 Like ''%'+ComboBox3.Text+'%'' or 字段四 Is NULL) ')
 
执行顺序的问题
加上括号试一下:
AdoQ.SQL.Add('Select * From 表名 where (字段一 like ''%'+Edit1.Text+'%'') and (字段二 Like ''%'
+ComboBox1.Text+'%'') and (字段三 Like ''%'+ComboBox2.Text+'%''+
' )and (字段四 Like ''%'+ComboBox3.Text+'%'' or 字段四 Is NULL) ')
 
已搞定,谢谢!
 
后退
顶部