多条件查询的难题(10分)

  • 主题发起人 hnzcg124
  • 开始时间
H

hnzcg124

Unregistered / Unconfirmed
GUEST, unregistred user!
unit sb_kxxfx_cxs;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, Mask, DBCtrlsEh, StdCtrls, ExtCtrls;

type
Tsb_kxxfx_cx = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox5: TComboBox;
ComboBox4: TComboBox;
ComboBox6: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DBDateTimeEditEh2: TDBDateTimeEditEh;
DBDateTimeEditEh3: TDBDateTimeEditEh;
ComboBox9: TComboBox;
ComboBox10: TComboBox;
DBDateTimeEditEh1: TDBDateTimeEditEh;
GroupBox3: TGroupBox;
Search: TSpeedButton;
quit: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox9Change(Sender: TObject);
procedure DBDateTimeEditEh1Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure SearchClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure quitClick(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure DBDateTimeEditEh2Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure ComboBox10Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure ComboBox6Change(Sender: TObject);
procedure DBDateTimeEditEh3Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }

end;

var
sb_kxxfx_cx: Tsb_kxxfx_cx;
str,str2,str3:string;
i,i2,i3:string;
implementation

uses sb_kxxfxs;

{$R *.dfm}

procedure Tsb_kxxfx_cx.FormCreate(Sender: TObject);
begin
str:='';i:=''; str2:='';i2:='';str3:='';i3:='';
combobox1.Clear;
combobox1.Items.Add('序号');
combobox1.Items.Add('分析报告名称');
combobox1.Items.Add('分析报告内容');
combobox1.Items.Add('填表日期');
//----------------------
combobox3.Clear;
combobox3.Items.Add('序号');
combobox3.Items.Add('分析报告名称');
combobox3.Items.Add('分析报告内容');
combobox3.Items.Add('填表日期');
//--------------------------------
combobox5.Clear;
combobox5.Items.Add('序号');
combobox5.Items.Add('分析报告名称');
combobox5.Items.Add('分析报告内容');
combobox5.Items.Add('填表日期');
end;

procedure Tsb_kxxfx_cx.ComboBox1Change(Sender: TObject);
begin
combobox2.Enabled:=true;
i:='';
case combobox1.ItemIndex of
0: i:='xh';
1: i:='fxbgmc';
2: i:='fxbgnr';
3: i:='tbrq';
end;
DBDateTimeEditEh1.visible:=false;
edit1.visible:=true;
if combobox1.Text='填表日期'then
begin
combobox2.Clear;
combobox2.Items.add('=');combobox2.Items.Add('>');combobox2.Items.Add('<');
combobox2.Items.Add('>=');combobox2.Items.Add('<=');combobox2.Items.Add('<>');
end
else
begin
combobox2.Clear;
combobox2.Items.Add('<>');
combobox2.Items.Add('=');
combobox2.Items.Add('like');
end;//设置combobox2的值
end;//++++++++++++++++++++++++++++++
procedure Tsb_kxxfx_cx.ComboBox2Change(Sender: TObject);
begin
if combobox1.Text='填表日期'then
begin
dbdatetimeediteh1.Enabled:=true;
DBdatetimeediteh1.Visible:=true;
edit1.Visible:=false;
DBdatetimeediteh1.Text:=' - - ';
end
else
begin
edit1.Visible:=true;
edit1.Enabled:=true;
edit1.Text:='';
DBdatetimeediteh1.Enabled:=false;
DBdatetimeediteh1.Visible:=false;
end;
end;//+++++++++++++++++++++++++++++++++++++++++++
procedure Tsb_kxxfx_cx.ComboBox9Change(Sender: TObject);
begin
str:='';
if combobox2.Text='like' then
begin
str:=i+' '+trim(combobox2.Text)+' '+''''+trim(edit1.Text)+'%'+'''';
end
else
begin
str:=i+' '+trim(combobox2.Text)+' '+''''+trim(edit1.Text)+'''';
end;
if combobox1.Text='填表日期'then
begin
str:=i+' '+trim(combobox2.Text)+' '+''''+trim(dbdatetimeediteh1.Text)+'''';
end;
case combobox9.ItemIndex of
0: str:=str+' and ';
1: str:=STR+' or ';
END;
end;//-------------------------------------------
procedure Tsb_kxxfx_cx.DBDateTimeEditEh1Change(Sender: TObject);
begin
str:='';
str:=str+i+' '+trim(combobox2.Text)+' '+''''+trim(dbdatetimeediteh1.Text)+'''';
combobox9.Enabled:=true;
end;//++++++++++++++++++++++++++++

procedure Tsb_kxxfx_cx.Edit1Change(Sender: TObject);
begin
if trim(edit1.Text)<>''then
begin
combobox9.Enabled:=true;
end;
str:='';
if combobox2.Text='like'then
str:=str+i+' '+trim(combobox2.Text)+' '+''''+trim(edit1.Text)+'%'+''''
else
str:=str+i+' '+trim(combobox2.Text)+' '+''''+trim(edit1.Text)+'''';
end;//++++++++++++++++++++++++++++++++++++++

procedure Tsb_kxxfx_cx.SearchClick(Sender: TObject);
var
k:string;
begin
k:=str+' '+str2+' '+str3;
showmessage(str);showmessage(str2);showmessage(str3);
showmessage(k);
if (((combobox1.Text='序号')or(combobox1.Text='分析报告名称')or(combobox1.Text='分析报告内容')) and (trim(edit1.Text)=''))then
begin
application.MessageBox('查询条件不完全,请输入查询条件','提示!',mb_ok);
edit1.SetFocus;
exit;
end;//---------------------------------------------------------------------
if ((combobox3.Text='序号')or(combobox3.Text='分析报告名称')or(combobox3.Text='分析报告内容')) and (trim(edit2.Text)='')then
begin
application.MessageBox('查询条件不完全,请输入查询条件','提示!',mb_ok);
edit2.SetFocus;
exit;
end;//---------------------------------------------------------------------
if ((combobox5.Text='序号')or(combobox5.Text='分析报告名称')or (combobox5.Text='分析报告内容')) and (edit3.Text='')then
begin
application.MessageBox('查询条件不完全,请输入查询条件','提示!',mb_ok);
edit3.SetFocus;
exit;
end;//--------------------------------------------------------------------
sb_kxxfx.clientdataset1.close;
sb_kxxfx.clientdataset1.commandtext:='select * from sb_kxxfx where '+k;
sb_kxxfx.clientdataset1.open;
{ if trim(combobox9.Text)='' then
begin
if (trim(combobox1.Text)='')or(trim(combobox2.Text)='')or(trim(edit1.Text)='') then
begin
application.MessageBox('请输入查询条件!','提示',MB_OK+MB_iconinformation);
combobox9.Text:='';
combobox9.ItemIndex:=-1;
end
else
}
end;//+++++++++++++++++++++++++++++++++++++++++++++++++

procedure Tsb_kxxfx_cx.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
sb_kxxfx_cx:=nil;
end;//****************************************
procedure Tsb_kxxfx_cx.quitClick(Sender: TObject);
begin
close;
end;//************************************
procedure Tsb_kxxfx_cx.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if combobox1.Text='序号'then
begin
if ((key<'0')or(key>'9'))and(key<>#8)and(key<>#13)then
begin
key:=#0;
application.MessageBox('请输入数字','提示!',mb_ok);
end;
END;
end;//****************************************************************
procedure Tsb_kxxfx_cx.ComboBox3Change(Sender: TObject);
begin
case combobox3.ItemIndex of
0: i2:='xh';
1: i2:='fxbgmc';
2: i2:='fxbgnr';
3: i2:='tbrq';
end;
if combobox3.text='填表日期' then
begin
combobox4.Clear;
combobox4.Items.Add('=');
combobox4.Items.Add('<');
combobox4.Items.Add('>');
combobox4.Items.Add('>=');
combobox4.Items.Add('<>');
combobox4.Items.Add('<=');
end
else
begin
combobox4.Clear;
combobox4.Items.add('=');
combobox4.Items.Add('<>');
combobox4.Items.Add('like');
end;//设置combobox2初始值
combobox4.Enabled:=true;
end;//*********************************************************
procedure Tsb_kxxfx_cx.ComboBox4Change(Sender: TObject);
begin
if combobox3.text='填表日期' then
begin
dbdatetimeediteh2.Enabled:=true;
dbdatetimeediteh2.Visible:=true;
edit2.Visible:=false;
dbdatetimeediteh2.Text:=' - - ';
end
else
begin
edit2.Enabled:=true;
edit2.Visible:=true;
edit2.Text:='';
DBdatetimeediteh2.Enabled:=false;
dbdatetimeediteh2.Visible:=false;
end;
end;//设置edit2或dbdatetimeediteh2的值 ***************************************
procedure Tsb_kxxfx_cx.DBDateTimeEditEh2Change(Sender: TObject);
begin
combobox10.Enabled:=true;
str2:='';
str2:=str2+i2+' '+trim(combobox4.Text)+' '+''''+trim(dbdatetimeediteh2.Text)+'''';
end;

procedure Tsb_kxxfx_cx.Edit2Change(Sender: TObject);
begin
if (trim(edit2.Text)<>'')then
begin
combobox10.Enabled:=true;
end;
str2:='';
if combobox4.Text='like' then
begin
str2:=str2+i2+' '+trim(combobox4.Text)+' '+''''+trim(edit2.Text)+'%'+'''';
end
else
begin
str2:=str2+i2+' '+trim(combobox4.Text)+' '+''''+trim(edit2.Text)+'''';
end;
end;

procedure Tsb_kxxfx_cx.ComboBox10Change(Sender: TObject);
begin
combobox10.Clear;
combobox10.Items.Add('and');
combobox10.Items.Add('or');
//=======给自己赋值
combobox5.Enabled:=true;
str2:='';
if combobox4.Text='like' then
begin
str2:=i2+' '+trim(combobox4.Text)+' '+''''+trim(edit2.Text)+'%'+'''';
end
else
begin
str2:=i2+' '+trim(combobox4.Text)+' '+''''+trim(edit2.Text)+'''';
end;
if combobox3.Text='填表日期'then
begin
str2:=i2+' '+trim(combobox4.Text)+' '+''''+trim(dbdatetimeediteh2.Text)+'''';
end;
case combobox10.ItemIndex of
0: str2:=str2+' and ';
1: str2:=STR2+' OR ';
END;
end;

procedure Tsb_kxxfx_cx.ComboBox5Change(Sender: TObject);
begin
case combobox5.ItemIndex of
0: i3:='xh';
1: i3:='fxbgmc';
2: i3:='fxbgnr';
3: i3:='tbrq';
end;
if combobox5.text='填表日期' then
begin
combobox6.Clear;
combobox6.Items.Add('=');
combobox6.Items.Add('<');
combobox6.Items.Add('>');
combobox6.Items.Add('>=');
combobox6.Items.Add('<>');
combobox6.Items.Add('<=');
end
else
begin
combobox6.Clear;
combobox6.Items.add('=');
combobox6.Items.Add('<>');
combobox6.Items.Add('like');
end;//设置combobox2初始值
combobox6.Enabled:=true;
end;

procedure Tsb_kxxfx_cx.ComboBox6Change(Sender: TObject);
begin
if combobox5.text='填表日期' then
begin
dbdatetimeediteh3.Enabled:=true;
dbdatetimeediteh3.Visible:=true;
edit3.Visible:=false;
dbdatetimeediteh3.Text:=' - - ';
end
else
begin
edit3.Enabled:=true;
edit3.Visible:=true;
edit3.Text:='';
DBdatetimeediteh3.Enabled:=false;
dbdatetimeediteh3.Visible:=false;
end;
end;

procedure Tsb_kxxfx_cx.DBDateTimeEditEh3Change(Sender: TObject);
begin
str3:='';
str3:=str3+i3+''+trim(combobox6.Text)+''+''''+trim(dbdatetimeediteh3.Text)+'''';
end;

procedure Tsb_kxxfx_cx.Edit3Change(Sender: TObject);
begin
str3:='';
if combobox6.Text='like' then
begin
str3:=str3+i3+' '+trim(combobox6.Text)+' '+''''+trim(edit3.Text)+'%'+'''';
end
else
begin
str3:=str3+i3+' '+trim(combobox6.Text)+' '+''''+trim(edit3.Text)+'''';
end;
end;

procedure Tsb_kxxfx_cx.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
IF COMBOBOX3.Text='序号' THEN
BEGIN
IF ((KEY<'0') OR (KEY>'9'))AND (KEY<>#8)and(key<>#13) THEN
KEY:=#0;
APPLICATION.MessageBox('请输入数字','提示',MB_OK);
END;

end;

procedure Tsb_kxxfx_cx.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
IF COMBOBOX5.Text='序号' THEN
BEGIN
IF ((KEY<'0') OR (KEY>'9'))AND (KEY<>#8)and(key<>#13) THEN
KEY:=#0;
APPLICATION.MessageBox('请输入数字','提示',MB_OK);
END;
end;

end.
 
一般於言,多條件查詢我是全部寫到SQL存儲過程中的,看了半天,沒有看明白
 
靠,没一点的OOP
 
害怕啊,是我水平下降乐啊,怎么看不懂啊
 
多人接受答案了。
 
顶部