⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.pas

📁 针对快餐店的会员管理系统.具有详细的分类及管理作用
💻 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 + -