SQL中多重查询的方法?(50分)

  • 主题发起人 主题发起人 xyptt
  • 开始时间 开始时间
X

xyptt

Unregistered / Unconfirmed
GUEST, unregistred user!
我是初学者,在用SQL查询时,如果条件很多,但又不能确定,比如有日期选择后按日
期查询,按check是否被点击为条件查询,如果这种方式大多,如果是平常组合的方式来
查询肯定是不可能的,那么怎么样查询才能使代码短一些,并且使人容易接爱。
 
动态生成SQL语句就行了。
 
动态生成SQL语句:
with query1 do begin
Clear;
SQL.Add('SELECT * FROM Table1');
if CheckBox1.Checked then
SQL.Add('WHERE...');//如此加入你的条件
。。。
end;
 
Hjking:如果是多重条件,比如同时两个限制,估计还要加else比较好!我是初学,请高手指教!
 
写一个存储过程啊,或者用Like子句
 
我来完善一下
假设表单中有一字段为nid(记录编号从1开始递增)
with query1 do
begin
Clear;
SQL.Add('SELECT * FROM Table1 where nid<>-1'); //nid等于-1保证所有记录肯定存在,因为nid从1开始递增
if CheckBox1.Checked then
SQL.Add(' and...');//如此加入你的条件
if CheckBox1.Checked then
SQL.Add(' and...');
。。。
end;
// 增加where nid<>-1,才可以选择查询,当难,不一定要nid 字段,只要您可以增加一个
无关紧要的where语句就行
 
我也遇到过这种情况,我是使用以下的方法:
设定一到数个String型变量(视情况而定),根据不同的情况设定变量的值,
如:
Var
S,S1:String;
Begin
Case GroupBox1.ItemIndex Of
0: S1:='xk=True';
1: S1:='GZ=True';
2: S1:='QF=True';
.
.
.
End;
If CheckBox1.Checked Then
Begin
If CheckBox2.Checked
Then S:='Select * From AAA.DB Where '+Edit1.Text+' and '+S1
Else S:='Select * From AAA.DB Where '+Edit1.Text;
End
Else
Begin
If CheckBox2.Checked
Then S:='Select * From AAA.DB Where '+S1
Else S:='Select * From AAA.DB';
End;
With Query1 Do
Begin
Close;
SQL.Clean;
SQL.Add(S);
ExecSQL;
End;
End;

我想这样的语句应该是够短的了吧?

 
多人接受答案了。
 
后退
顶部