delphi 中如何实现组合查询?(50分)

  • 主题发起人 主题发起人 DYI
  • 开始时间 开始时间
D

DYI

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi 中如何实现组合查询?<br>例如:查询条件项目,edit1到edit5,输入其中一个或2个,点查询,如何实现,以有内容的edit.text为条件,不去判断edit文字为空的!
 
var<br>&nbsp; s:string;<br>begin<br>&nbsp; s:='select * from 表 where 1=1';<br>&nbsp; if trim(edit1.text)&lt;&gt;'' then<br>&nbsp; &nbsp; s:=s+trim(edit1.text);<br>&nbsp; if trim(edit2.text)&lt;&gt;'' then<br>&nbsp; &nbsp; s:=s+trim(edit2.text);<br>&nbsp; if trim(edit3.text)&lt;&gt;'' then<br>&nbsp; &nbsp; s:=s+trim(edit3.text);<br>&nbsp; if trim(edit4.text)&lt;&gt;'' then<br>&nbsp; &nbsp; s:=s+trim(edit4.text);<br>&nbsp; if trim(edit5.text)&lt;&gt;'' then<br>&nbsp; &nbsp; s:=s+trim(edit5.text);<br>&nbsp; adoquery1.close;<br>&nbsp; adoquery1.sql.text:=s;<br>&nbsp; adoquery1.open;
 
在edit做标志,然后进行循环取值组合成SQL语句。
 
在edit的Onchange事件做标志。
 
我的方法与zbdzjx类似,如下:<br>&nbsp; s := 'Select * From 表 Where 1 = 1 ';<br>&nbsp; if Trim(Edit1.Text) &lt;&gt; '' then<br>&nbsp; &nbsp; s := s + 'and field1 = ' + Trim(Edit1.Text);<br>&nbsp; &nbsp; ...<br>但要注意一点:如果字段是varchar型的要这样写:<br>&nbsp; if Trim(Edit1.Text) &lt;&gt; '' then<br>&nbsp; &nbsp; s := s + 'and field1 = ''' + Trim(Edit1.Text) + '''';
 
后退
顶部