回 帖 发 新 帖 刷新版面

主题:新手请教---组合查询问题!!!

各位大侠好:
    如有edit1.text,edit2.text,edit3.text,edit4.text
    通过输入任一或多个edit框的值,则显示相关内容;假如都不输则显示全部内容,目的为查询同一表,


不知如何控制?请详细解答!谢谢!!

[em12][em10][em1]

回复列表 (共2个回复)

沙发

在你查询的时候判断一下  如果是edit1是非空的   才在查询语句中加入EDIT1的查询条件  以下的也是一样

如   ADODataSet1.commandtext:='select * from aa'

那就是

ADODataSet1.commamndtext:='select * from aa where 1=1 '
if edit1.text<>'' then
ADODataSet1.commandtext:=ADODataSet1.commandtext+' and ziduan1 = '+quotedStr(edit1.text);
....

就可以了 


板凳

procedure Tsb.BitBtn2Click(Sender: TObject);
var ed1,ed2,ed3,ed4,ed5,ed7,me1,che:string;
begin
//判断并赋值//
  //1
  if trim(edit1.text)<>'' then
     ed1:='类别='''+trim(edit1.text)+''''
  else
    ed1:='1=1';
  //2
  if Sb.CheckBox1.Checked=true then
    che:='正规=true'
  else
    che:='正规=false';
   //3
  if trim(edit2.text)<>'' then
    ed2:='登记证='''+trim(edit2.text)+''''
  else
    ed2:='1=1';
  //4
  if trim(edit3.text)<>'' then
    ed3:='商品名='''+trim(edit3.text)+''''
  else
    ed3:='1=1';
  //5
  if trim(edit4.text)<>'' then
    ed4:='成份='''+trim(edit4.text)+''''
  else
    ed4:='1=1';
  //6
  if trim(edit5.text)<>'' then
    ed5:='规格='''+trim(edit5.text)+''''
  else
    ed5:='1=1';
  //7
  if trim(edit7.text)<>'' then
    ed7:='生产商='''+trim(edit7.text)+''''
  else
    ed7:='1=1';
  //8
  if trim(memo1.text)<>'' then
    me1:='备注='''+trim(memo1.text)+''''
  else
    me1:='1=1';
Sb.ADODataSet1.Close;
Sb.ADODataSet1.CommandText:='select * from 商品 where '+ed1+' and '+che+' and '+ed5+' and '+ed2+' and '+ed3+' and '+ed4+' and '+ed7+'';
Sb.ADODataSet1.Open;
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册