📄 search.pas
字号:
unit Search;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzTabs, RzButton, ExtCtrls, RzPanel, StdCtrls, Mask, RzEdit,
RzCmboBx, ADODB, RzRadGrp, RzRadChk;
type
TSearchForm = class(TForm)
RzPanel1: TRzPanel;
RzGroupBox1: TRzGroupBox;
Label1: TLabel;
Image1: TImage;
Mode: TRzComboBox;
SearchButton: TRzBitBtn;
Label2: TLabel;
RzRadioButton1: TRzRadioButton;
RzRadioButton2: TRzRadioButton;
CheckGroup: TRzCheckGroup;
RzComboBox1: TRzComboBox;
RzComboBox2: TRzComboBox;
RzComboBox3: TRzComboBox;
RzComboBox4: TRzComboBox;
RzEdit1: TRzEdit;
RzEdit2: TRzEdit;
procedure ModeChange(Sender: TObject);
procedure SearchButtonClick(Sender: TObject);
procedure RzComboBox3Change(Sender: TObject);
procedure RzComboBox4Change(Sender: TObject);
//判断搜索条件是否完备
function TestSearchTerm:Boolean;
//生成SQL语句
function SQLBuild:String;
//转化运算符
function TranslationOperator(ID:Integer):String;
procedure RzEdit2Exit(Sender: TObject);
//检测输入的时间,日期格式
procedure TestDateTime(ID:integer;Sender: TObject);
//返回定位转化的数据内容
function TransformData(TableNames,INData:String):String;
private
{ Private declarations }
public
{ Public declarations }
end;
var
SearchForm : TSearchForm;
ADataSet : TADODataSet;
SQLText,
TableNam : String;
implementation
uses DM, MAIN, ClientList;
{$R *.dfm}
procedure TSearchForm.ModeChange(Sender: TObject);
var
Index, I : Integer;
begin
//当更改内容时
ADataSet:=TADODataSet.Create(self);
if Mode.ItemIndex=-1 then Exit;
Index := Mode.ItemIndex;
case Index of
0 : ADataSet:=DM1.ADODataSet1;
1 : ADataSet:=DM1.ADODataSet10;
2 : ADataSet:=DM1.ADODataSet9;
3 : ADataSet:=DM1.LinkManList;
4 : ADataSet:=DM1.SellList;
5 : ADataSet:=DM1.ADODataSet5;
end;
case Index of
0 : Tablenam:='ClientData';
1 : Tablenam:='ClientVisit';
2 : Tablenam:='ClientBespeak';
3 : Tablenam:='LinkMan';
4 : Tablenam:='ProductSell';
5 : Tablenam:='ProductInfo';
end;
SQLText:='Select * from '+Tablenam;
RzComboBox1.Items.Clear;
RzComboBox2.Items.Clear;
with DM1.TransformTable do try
Filtered:=False;
DisableControls;
Filter:='Tables='+''''+TableNam+'''';
//SQL.Add('Select * from Transforms where Tables = '+''''+TableNam+'''');
Filtered:=True;
EnableControls;
First;
for I:=0 To RecordCount-1 do begin
RzComboBox1.Items.Add(FieldByName('TransformFields').AsString);
RzComboBox2.Items.Add(FieldByName('TransformFields').AsString);
Next;
end;
except
end;
RzCombobox1.ItemIndex:=0;
RzCombobox2.ItemIndex:=0;
end;
procedure TSearchForm.SearchButtonClick(Sender: TObject);
begin
//搜索过滤记录
if TestSearchTerm then begin
Messagebox(handle,'您输入的搜索条件不完全,请重新输入。','错误',MB_OK+MB_ICONWARNING);
Exit;
end
else begin
with ADataSet do try
Close;
CommandText:=SQLBuild;
Open;
if RecordCount=0 then begin
messagebox(handle,'没有找到任何记录,请点击确定后重新设置查询条件!','提示',MB_OK+MB_ICONWARNING);
Close;
CommandText:=SQLText;
Open;
Exit;
end;
except
Messagebox(handle,'数据查询出现意外错误,请点击确定返回!','错误',MB_OK+MB_ICONERROR);
with ADataSet do begin
Close;
CommandText:=SQLText;
Open;
Exit;
end;
end;
end;
case Mode.ItemIndex of
0 : MainForm.ShowWindows(51); //客户列表
1 : MainForm.ShowWindows(52); //拜访记录
2 : MainForm.ShowWindows(53); //预约记录
3 : MainForm.ShowWindows(62); //联系人列表
4 : MainForm.ShowWindows(63); //销售列表
5 : MainForm.ShowWindows(54); //产品目录
end;
Close;
end;
procedure TSearchForm.RzComboBox3Change(Sender: TObject);
begin
case RzCombobox3.ItemIndex of
0,1,2,3,4,5,6 : RzEdit1.Enabled:=true;
7,8 : begin
RzEdit1.Enabled:=false;
RzEdit1.Text:=' ';
end;
end;
end;
procedure TSearchForm.RzComboBox4Change(Sender: TObject);
begin
case RzCombobox4.ItemIndex of
0,1,2,3,4,5,6 : RzEdit2.Enabled:=true;
7,8 : begin
RzEdit2.Enabled:=false;
RzEdit2.Text:=' ';
end;
end;
end;
function TSearchForm.TestSearchTerm: Boolean;
var
Check1, Check2 : Boolean;
begin
//判断检索条件是否完备
Result:=false;
Check1:=CheckGroup.ItemChecked[0];
Check2:=CheckGroup.ItemChecked[1];
if ((Check1 and Check2)and((RzEdit1.Text='')or(RzEdit2.Text='')))or
((Check1 and (not Check2))and(RzEdit1.Text=''))or
(((not Check1)and Check2)and(RzEdit2.Text=''))or
((not Check1)and(not Check2))then
Result:=true;
end;
function TSearchForm.SQLBuild: String;
var
Check1, Check2 : Boolean;
SQL1, SQL2 : String;
begin
//生成SQL语句
Result:='';
Check1:=CheckGroup.ItemChecked[0];
Check2:=CheckGroup.ItemChecked[1];
if Check1 then begin
case RzCombobox3.ItemIndex of
0,1,2,3,4,5 : SQL1:=TransformData(TableNam,RzCombobox1.Text)+ TranslationOperator(RzCombobox3.ItemIndex)+
''''+RzEdit1.Text+'''';
6 : SQL1:=TransformData(TableNam,RzCombobox1.Text)+' like '+''''+'%'+RzEdit1.Text+'%'+'''';
7 : SQL1:=TransformData(TableNam,RzCombobox1.Text)+' is Null or '+TransformData(TableNam,RzCombobox1.Text)+'='+''''+'''';
8 : SQL1:=TransformData(TableNam,RzCombobox1.Text)+' <> Null or '+TransformData(TableNam,RzCombobox1.Text)+'<>'+''''+'''';
end;
end;
if Check2 then begin
case RzCombobox4.ItemIndex of
0,1,2,3,4,5 : SQL2:=TransformData(TableNam,RzCombobox2.Text)+ TranslationOperator(RzCombobox4.ItemIndex)+
''''+RzEdit2.Text+'''';
6 : SQL2:=TransformData(TableNam,RzCombobox2.Text)+' like '+''''+'%'+RzEdit2.Text+'%'+'''';
7 : SQL2:=TransformData(TableNam,RzCombobox2.Text)+' is Null or '+TransformData(TableNam,RzCombobox2.Text)+'='+''''+'''';
8 : SQL2:=TransformData(TableNam,RzCombobox2.Text)+' <> Null or '+TransformData(TableNam,RzCombobox2.Text)+'<>'+''''+'''';
end;
end;
if Check1 and Check2 then begin
if RzRadioButton1.Checked then
Result:=SQLText+' where '+SQL1+' and '+SQL2
else Result:=SQLText+' where '+SQL1+' or '+SQL2;
end
else if Check1 and (not Check2)then
Result:=SQLText+' where '+SQL1
else if (not Check1)and check2 then
Result:=SQLText+' where '+SQL2;
end;
function TSearchForm.TranslationOperator(ID: Integer): String;
begin
//转化运算符
case iD of
0 : Result:='=';
1 : Result:='<>';
2 : Result:='>';
3 : Result:='>=';
4 : Result:='<';
5 : Result:='<=';
end;
end;
procedure TSearchForm.RzEdit2Exit(Sender: TObject);
begin
TestDateTime(TRzEdit(sender).Tag,sender);
end;
procedure TSearchForm.TestDateTime(ID: integer;Sender: TObject);
var S : String;
begin
//检测日期或时间格式是否正确
case ID of
1 : S:= RzComboBox1.Text;
2 : S:= RzComboBox2.Text;
end;
if TRzEdit(Sender).Text='' then Exit;
if pos('日期',s)>0 then try
StrToDate(TRzEdit(Sender).Text);
except
Messagebox(handle,'您输入的日期格式不正确,请按照“2008-01-01”的格式重新输入!','错误',MB_OK+MB_ICONWARNING);
TRzEdit(Sender).SetFocus;
Exit;
end;
if pos('时间',s)>0 then try
StrToTime(TRzEdit(Sender).Text);
except
Messagebox(handle,'您输入的时间格式不正确,请按照“12:00”的格式重新输入!','错误',MB_OK+MB_ICONWARNING);
TRzEdit(Sender).SetFocus;
end;
end;
function TSearchForm.TransformData(TableNames,InData:String): String;
begin
//返回定位转化的数据内容
with DM1.TransformTable do try
Filtered:=false;
DisableControls;
Filter:='Tables='+''''+TableNames+''''+' and TransformFields='+''''+InData+'''';
Filtered:=true;
EnableControls;
First;
Result:=FieldByName('Fields').AsString;
except
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -