回 帖 发 新 帖 刷新版面

主题:delphi如何实现多功能组合查询

delphi如何实现多功能组合式查询

回复列表 (共1个回复)

沙发

unit uMtQy;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ADODB, ComCtrls, cxDropDownEdit, cxTextEdit,
  cxMaskEdit, cxCalendar, cxControls, cxContainer, cxEdit, cxCheckBox,
  cxLookAndFeelPainters, cxButtons, cxGroupBox;

type
  TFrmMtQy = class(TForm)
    cxGroupBox1: TcxGroupBox;
    cxGroupBox2: TcxGroupBox;
    Label6: TLabel;
    DTdate: TcxDateEdit;
    CheckBox6: TcxCheckBox;
    cxGroupBox3: TcxGroupBox;
    Label2: TLabel;
    ComboBox6: TcxComboBox;
    CheckBox2: TcxCheckBox;
    Label4: TLabel;
    ComboBox4: TcxComboBox;
    CheckBox4: TcxCheckBox;
    cxGroupBox4: TcxGroupBox;
    Label3: TLabel;
    ComboBox2: TcxComboBox;
    CheckBox3: TcxCheckBox;
    BtnOK: TcxButton;
    BtnCancel: TcxButton;
    cxGroupBox5: TcxGroupBox;
    procedure BtnCancelClick(Sender: TObject);
    procedure BtnOKClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CheckBox6Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure DTdateExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmMtQy: TFrmMtQy;
  sMtQy  : string;

implementation

uses uGlobal;

{$R *.dfm}

procedure TFrmMtQy.BtnCancelClick(Sender: TObject);
begin
  sMtQy := '';
  ModalResult := mrCancel;
end;

procedure TFrmMtQy.BtnOKClick(Sender: TObject);
var
  sSQLO, sSQLT, sSQLS, sSQLF: string;
begin
  if (CheckBox2.Checked = False) and (CheckBox3.Checked = False)
  and (CheckBox4.Checked = False) and (CheckBox6.Checked = False) then
  begin
    MessageBox(Handle,'请选择查询方式!',sSysName,MB_ICONINFORMATION);
    Exit;
  end;

  if CheckBox6.Checked = True then
  begin   
    if DTdate.Text = '' then
    begin  
      MessageBox(Handle,'请输入日期!',sSysName,MB_ICONINFORMATION);
      DTdate.SetFocus;
      Exit;
    end;
    sSQLO := 'DATE = ''' + DateToStr(DTDate.Date) + '''';
  end
  else
  begin
    sSQLO := '1 = 1';
  end;

  if CheckBox2.Checked = True then
  begin
    if (ComboBox6.Text = '请选择或输入设备名称') or (ComboBox6.Text = '') then
    begin
      MessageBox(Handle,'请选择或输入设备名称!',sSysName,MB_ICONINFORMATION);
      ComboBox6.SetFocus;
      Exit;
    end;
    sSQLT := 'EQUIPMENT_NAME = ''' + ComboBox6.Text + '''';
  end
  else
  begin
    sSQLT := '1 = 1';
  end;

  if CheckBox3.Checked = True then
  begin
    if (ComboBox2.Text = '请选择维修类别') or (ComboBox2.Text = '') then
    begin
      MessageBox(Handle,'请选择维修类别!',sSysName,MB_ICONINFORMATION);
      ComboBox2.SetFocus;
      Exit;
    end;
    sSQLS := 'TYPE = ''' + ComboBox2.Text + '''';
  end
  else
  begin
    sSQLS := '1 = 1';
  end;

  if CheckBox4.Checked = True then
  begin
    if (ComboBox4.Text = '请选择或输入维修负责人') or (ComboBox4.Text = '') then
    begin
      MessageBox(Handle,'请选择或输入维修负责人!',sSysName,MB_ICONINFORMATION);
      ComboBox4.SetFocus;
      Exit;
    end;
    sSQLF := 'PRIMCIPAL = ''' + ComboBox4.Text + '''';
  end
  else
  begin
    sSQLF := '1 = 1';
  end;

  sMtQy := 'SELECT * FROM MAINTAIN_RECODR WHERE ( 1 = 1 )' +
           ' AND (' + sSQLO + ') AND (' + sSQLT + ') AND (' + sSQLS +
           ') AND (' + sSQLF + ') ORDER BY DATE DESC';
                 
  ModalResult := mrOk;
end;
procedure TFrmMtQy.CheckBox6Click(Sender: TObject);
begin
  if CheckBox6.Checked = True then
  begin
    DTDate.Enabled := True;
    DTDate.SetFocus;
  end
  else
  begin
    DTDate.Enabled := False;
  end;
end;

procedure TFrmMtQy.CheckBox2Click(Sender: TObject);
begin
  if CheckBox2.Checked = True then
  begin
    ComboBox6.Enabled := True;
    ComboBox6.SetFocus;
  end
  else
  begin
    ComboBox6.Enabled := False;
  end;
end;

procedure TFrmMtQy.CheckBox3Click(Sender: TObject);
begin
  if CheckBox3.Checked = True then
  begin
    ComboBox2.Enabled := True;
    ComboBox2.SetFocus;
  end
  else
  begin
    ComboBox2.Enabled := False;
  end;
end;

procedure TFrmMtQy.CheckBox4Click(Sender: TObject);
begin
  if CheckBox4.Checked = True then
  begin
    ComboBox4.Enabled := True;
    ComboBox4.SetFocus;
  end
  else
  begin
    ComboBox4.Enabled := False;
  end;
end;

procedure TFrmMtQy.DTdateExit(Sender: TObject);
begin
  if (DTdate.Text <> '') AND (DTdate.Text < '1799-12-31') then
  begin
    MessageBox(Handle,'您输入的日期有误!',sSysName,MB_ICONINFORMATION);
    DTdate.SetFocus;
  end;
end;

end.

我来回复

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