有谁用delphi做过通用查询的程序,能不能,给我参考一下???
  
各位朋友帮帮忙,非常感谢!

解决方案 »

  1.   

    procedure TChaxunForm.SpeedButton1Click(Sender: TObject);
    var
      i :integer;
      s :string;
    begin
      s := '';     // 查询条件
      if (zdmc.Text='') and (xm.Text='')and(zxipdz.Text='')and(rtulx.Text='')and(lljlx.Text='')and(sftj.Text='') then
        Application.MessageBox('请至少选择一项查询条件','提示',MB_IconWarning)
      else
      begin
        for i := 0 to GroupBox1.ControlCount - 1 do
          if GroupBox1.Controls[i] is TComboBox then
          begin
            if (GroupBox1.Controls[i] as TComboBox).Name = 'zdmc' then   //如果选中的是zdmc
            begin
              if (GroupBox1.Controls[i] as TComboBox).Text <> '' then    // 如果zdmc不为空
              begin
                if s = '' then
                  s := (GroupBox1.Controls[i] as TComboBox).Name+' = '+#39+
                       Copy((GroupBox1.Controls[i] as TComboBox).Text,
                       pos(':',(GroupBox1.Controls[i] as TComboBox).Text)+1,
                       length((GroupBox1.Controls[i] as TComboBox).Text)-
                       pos(':',(GroupBox1.Controls[i] as TComboBox).Text)+1)+#39
                else
                  s := s+' and '+(GroupBox1.Controls[i] as TComboBox).Name+' = '
                       +#39+Copy((GroupBox1.Controls[i] as TComboBox).Text,
                       pos(':',(GroupBox1.Controls[i] as TComboBox).Text)+1,
                       length((GroupBox1.Controls[i] as TComboBox).Text)-
                       pos(':',(GroupBox1.Controls[i] as TComboBox).Text)+1)+#39
              end   //如果zdmc不为空
            end      //如果选中的不是zdmc
            else if (GroupBox1.Controls[i] as TComboBox).Text <> '' then  //若选择项不为空
            begin
              if s = '' then
                s := (GroupBox1.Controls[i] as TComboBox).Name+' = '+#39
                     +(GroupBox1.Controls[i] as TComboBox).Text+#39
              else
                s := s+' and '+(GroupBox1.Controls[i] as TComboBox).Name+' = '+#39
                     +(GroupBox1.Controls[i] as TComboBox).Text+#39;
            end;
          end;
        adoquery2.Filtered := false;
        adoquery2.Filter := s;
        adoquery2.Filtered := true;
        //showmessage(s)
        ADOQuery2.Sort:='txzh';  
      end;
    end;