如何实现用户自定义查询?
请详细说明,谢谢!

解决方案 »

  1.   

    你把各种条件连接起来不就得了!举例说明:
    var
       mysql:string;
       iswhere:boolean;
    begin
       ......
       query1.close;
       query1.sql.clear;
       mysql:='select * from mytable';
       iswhere:=false;
       if edit1.text<>'' then
          begin
             mysql:=mysql+' where myfield1='''+Edit1.text+'''';
             iswhere:=true;
          end;
       if edit2.text<>'' then
          if iswhere then
             mysql:=mysql+' and myfield2='''+Edit2.text+''''
          else
             mysql:=mysql+' where myfield2='''+Edit2.text+'''';
       ....
       query1.sql.add(mysql);
       query1.open;
    end;
      

  2.   

    自定义查询首先要让用户可以选择查询条件,然后通过所选择的查询条件来构建SQL语句!
      

  3.   

    利用数据字典,做一个表,里面存放所有的表的名称,以及字段名称,和中文表述。这样让用户首先选择表,然后再选择字段,最后确定关系。这样,你根据用户的选择,再从字典表取出相应字段的名称,生成SQL语句即可。
      

  4.   

    sundayzhao(皮皮虾)的办法最好。
      

  5.   

    我是用动态数组来搞定的,因为查询时一个表与一个表不同,然后显示给用户中文,我们在程序中翻译成表的字段,再把大于,小于,等于,不小于,不大于,近似于翻译成>,<,=,>=,<=, like 等 ,
    代码有点长,给我发E_mail我发给你代码:[email protected]
      

  6.   

    vb里的
    Private Sub Cbo_astoper_LostFocus()
      If Me![Cbo_astoper] <> "" Then
       astoper = True
        If product = True Or jp_oper = True Or jp_cop = True Or jp_dep = True Or stardate = True Or enddate = True Or chn_cop = True Or chn_oper = True _
       Or chn_dep = True Or fact_cop = True Or fact_dep = True Or chn_id = True Or pact_status = True Or fact_id = True Or pact_id = True Or pact_name = True Or jp_id = True Then
       sql = sql + " and c.vchr_Operater='" & Me![Cbo_astoper] & "'"
      Else
       sql = sql + " where c.vchr_Operater='" & Me![Cbo_astoper] & "'"
    End If
    End If
    End Sub
      

  7.   

    vb里的
    Private Sub Cbo_astoper_LostFocus()
      If Me![Cbo_astoper] <> "" Then
       astoper = True
        If product = True Or jp_oper = True Or jp_cop = True Or jp_dep = True Or stardate = True Or enddate = True Or chn_cop = True Or chn_oper = True _
       Or chn_dep = True Or fact_cop = True Or fact_dep = True Or chn_id = True Or pact_status = True Or fact_id = True Or pact_id = True Or pact_name = True Or jp_id = True Then
       sql = sql + " and c.vchr_Operater='" & Me![Cbo_astoper] & "'"
      Else
       sql = sql + " where c.vchr_Operater='" & Me![Cbo_astoper] & "'"
    End If
    End If
    End Sub