0

你好,我如何在 sql 中准备动态 where 我的表单元素 edit1、edit2、edit3 和 datetimepicker1、2

如果用户无法选择 datetimepicker 则必须查询select * from table
如果用户选择 datetimepicker 那么按钮问题

可以

adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('where siptar>=');
adoquery1.sql.add(QuotedStr(DateTostr(DateTimePicker1.DateTime)+' 00:00:00.000')+' and siptar <=');
adoquery1.sql.add(QuotedStr(DateTostr(DateTimePicker2.DateTime)+' 23:59:59.000'));
adoquery1.Open;

我找到了必要的代码..

ADOQuery1.sql.clear;
ADOQuery1.sql.add('select ck.cname, si.rkod, sk.location, sk.sipno, sh.skod, convert(varchar(50), sk.siptar, 105) as siptar from siparis_kay sk');
ADOQuery1.sql.add('left join siparis_har sh on sh.sipno = sk.sipno');
ADOQuery1.sql.add('left join cari_kart ck on ck.ckod = sk.Carikod');
ADOQuery1.sql.add('left join si_gchar si on si.fisno = sh.sipno and si.fisharInx=sh.sipharinx and si.skod = sh.skod');
ADOQuery1.SQL.add('WHERE 1=1' );

If EdtStok.Text <> '' then
  ADOQuery1.SQL.Add('and sh.skod >= ' + QuotedStr(EdtStok.Text));

If EdtStok1.Text <> '' then
  ADOQuery1.SQL.Add('and sh.skod <= ' + QuotedStr(EdtStok1.Text));

If EdtCari.Text <> '' then
  ADOQuery1.SQL.Add('and ck.ckod >= ' + QuotedStr(EdtCari.Text));

If EdtCari1.Text <> '' then
  ADOQuery1.SQL.Add('and ck.ckod <= ' + QuotedStr(EdtCari1.Text));

If EdtLocation.Text  <> '' then
  ADOQuery1.SQL.Add('and sk.location = ' + QuotedStr(EdtLocation.Text));

ADOQuery1.sql.add('and siptar >= ' + QuotedStr(DateTostr(dtpbas.DateTime) + ' 00:00:00.000'));
ADOQuery1.sql.add('and siptar <= ' + QuotedStr(DateTostr(dtpbit.DateTime) + ' 23:59:59.997'));
4

0 回答 0