本人用SQL语句,加上IF的判断条件来做的。在多个combobox中选择选项,以此(所选的项)做为条件,然后通过单击按钮来实现符合多个条件的或一个条件的查询,结果符合条件的记录显示在DBGrid中。
  但在做当其中任何一个或多个combobox中为空值时(就是没有做出选择时),如何让SQL语句来实现:不去读取该空值而继续判断已经做出选择的combobox,从而显示出符合条件的记录.
  或是如果你有好的方法来完成多个条件的查询,也劳架你帮帮我,好吗?谢谢!!!!

解决方案 »

  1.   

    根据是否为空拼写动态sql语句随后再执行
      

  2.   

    var sqlStr: String;
      sqlStr := 'select * from tablename where 1=1 ';
      if combobox1.itemindex <> -1 then
        sqlStr := sqlStr + ' and a='''+combobox1.items[combobox1.itemindex]+'''';
      if combobox2.itemindex <> -1 then
        sqlStr := sqlStr + ' and b='''+combobox2.items[combobox2.itemindex]+'''';
      .................
      if comboboxN.itemindex <> -1 then
        sqlStr := sqlStr + ' and N='''+comboboxN.items[comboboxN.itemindex]+'''';
      Query1.Close;
      Query1.Sql.Text := sqlStr;
      Query1.Open;
      

  3.   

    With Query1 do
      Begin
        Close;
        Sql.Clear;
        Sql.Add('Select * From TableName Where Names=''大虫子''');
        IF Combobox1.Text<>'' then 
          Sql.Add('And Params1='''+Combobox1.Text+'''');
        IF Combobox2.Text<>'' then 
          Sql.Add('And Params2='''+Combobox2.Text+'''');
        IF Combobox3.Text<>'' then 
          Sql.Add('And Params3='''+Combobox3.Text+'''');
        IF Combobox4.Text<>'' then 
          Sql.Add('And Params4='''+Combobox4.Text+'''');
      
              ....... 
        open;
      End;
      

  4.   

    另:还可以给变量设置 初始值,sql语句为固定式的!如果,该Combobox.text为空,则取默认值。比如:  aa between ' ' and 'zz'