其实你不用在界面上把每个需要查询的内容都列出来,你可以将表字段作为一个下拉表框,由其选择,然后录入相应的值,关系也用下拉框实际,由其选择,如果取值为空的话,请用函数实现ISNULL,

解决方案 »

  1.   

    部门 (取值于 combobox1) 关系 =EdtDept.text
    地区 (取值于 combobox2) 关系 =EdtReg.Text 
    金额 (取值于 edit1)     关系 >、<、=、>=、<= (取值于 combobox3)
    时间 (取值于 datetimepicker1 和 datetimepicker2之间) 关系 >datetimepicker1 并且 <datetimepicker2if (ComboBox1.text<>'') and(EdtDept.Text<>'') then
    StrSQL:=StrSQL+'and '+ComboBox1.text+'='''+EdtDept.text+''';
    if (ComboBox2.text<>'') and(EdtReg.Text<>'') then
    StrSQL:=StrSQL+'and '+ComboBox2.text+'='''+EdtReg.text+''';...//按这种规则写下去,得到StrSQLQuery.SQL.text:='select ... from table where 1<>2 and '+StrSQL;Query.Open;
      

  2.   

    Sorry!Query.SQL.text:='select ... from table where 1<>2 '+StrSQL;Query.Open;
      

  3.   

    这样我能实现多条件查询嘛?
    另外用函数实现ISNULL,怎么实现
      

  4.   

    renzhm(戴尔飞),说得很好,其实我就是对于第一个 And不知道怎么来处理,我试一下
      

  5.   

    if (ComboBox1.text<>'') then
     StrSQL:=StrSQL+'and  字段名='''+EdtDept.text+'''';这样一直加下去就行了。
      

  6.   

    if (ComboBox1.text<>'') then
     StrSQL:=StrSQL+'and  字段名='''+ComboBox1.text+'''';这样一直加下去就行了
      

  7.   

    我在实际作业中,一般是写一个通用的取得条件(也即where的语句的查询窗口),里面放两个ComboBox,一个edit,还有一些用于加如"("之类逻辑符号的按钮,另外再加一个list,不加也可以,只需定义一个用于保存录入条件的可视组件即可比如memo用于显示已输入的条件.每选择一次即加入该条件当然你也可把你不想要的条件删除掉.where前面的语句则根据你的需要加入即可.另外ISNULL是数据库系统自带的函数,不用自己实现,具体的数据库系统可能函数名称不一样查查手册即可
      

  8.   

    如果在SQL语句中,ISNULL是自带的函数,如果在Delphi中:1、字符型数据,你可直接用''判断2、variant型数据,你可用VarIsEmpty来判断
      

  9.   

    动态生成SQL语句就行了!兄弟别说你不会连接字符串哦
    select * from (select * from ( ....(select * from x where 条件1)...) 条件n)
    一个递归的方法就搞定了!
                                            
      

  10.   

    你的email是多少?我给你发一个我以前做的查询,通用与万能,不管你有什么样的查询条件.
      

  11.   

    本想结账的,既然有mail收,在等一下。