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

📄 search.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit search;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls,ADODB, CheckLst,dateutils;

type
  TForm_search = class(TForm)
    PageControl1: TPageControl;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    btn_ok: TButton;
    btn_cancel: TButton;
    TreeView_search: TTreeView;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Label7: TLabel;
    Label3: TLabel;
    combo_operator: TComboBox;
    Label5: TLabel;
    Combo_rel: TComboBox;
    btn_setup: TButton;
    byn_delete: TButton;
    btn_moresearch: TButton;
    Panel2: TPanel;
    Label1: TLabel;
    Splitter1: TSplitter;
    list_fields: TCheckListBox;
    edit_value: TComboBox;

    procedure FormShow(Sender: TObject);
    procedure btn_setupClick(Sender: TObject);
    procedure byn_deleteClick(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure List_fieldsClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btn_cancelClick(Sender: TObject);
    procedure btn_moresearchClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);
    procedure btn_addClick(Sender: TObject);
    procedure list_fieldsClickCheck(Sender: TObject);

  private
    { Private declarations }
    procedure  HideColumn(i:integer;ifShow:boolean);
    procedure AddOperator(FieldType:string);
    function GetQueryStr() :string;
    function GenerateSql(tempNode:Ttreenode):string;
    function GetRelation(tempStr:String):string;
    function GetRelation2(tempStr:String):string;
    function GetOneSql(tempStr:String):string;
    function DealSearchText(tempStr:string):string;
    procedure AddValues(FieldName:string);
  public
    { Public declarations }
      TransADO: TADOQuery;
  end;

var
  Form_search: TForm_search;
  myNode:Ttreenode;
  myChildNode:Ttreenode;




implementation

uses wxp_dm, Unit_wxp, partinfo, partout, partorder, partin, partsell,
  machinetest, maintain, z_machine_in, z_machine_out, contract_order,
  contract_cjd, contract_cjd_ys, contract_tract, transit_proxy, contract,
  Unit_hkhs, Unit_cjqk, Unit_thqk, Unit_cjyfk;

{$R *.dfm}

procedure TForm_search.FormShow(Sender: TObject);
var
i:integer;
begin
        //向list_fields控件中增加字段

        //TransADO.Open ;
        for i:=0 to TransADO.FieldList.Count-1  do
        begin
                list_fields.Items.Add  (TransADO.Fields[i].FieldName  );
                //将每个字段的字段类型放在数组中
                unit_wxp.FieldType[i]:= TransADO.Fields[i].DataType;

        end;

        //向树型控件中增加跟节点
        with treeview_search.Items do
        begin
                myNode:=add(nil,'以下为查询条件');
                //myChildNode:=addchild(myNode,'hello');

        end;

        //向list_delete中增加上一次过滤的字段
        //if unit_wxp.FilterArray >0 then
        //begin
             for i:=0 to list_fields.Items.Count -1 do
                 list_fields.checked[i]:=unit_wxp.FilterArray[i];
        //end;
            //list_fields.Items


end;

procedure TForm_search.btn_setupClick(Sender: TObject);
var
        TempString:string;
        tempNode: Ttreenode;
        NodeString:string;
begin
        if edit_value.Text='' then
        begin
                ShowMessage('请输入查询条件');
                exit;
        end
        else if list_fields.ItemIndex <0 then
               showmessage('请选择一个字段')
        else
        begin
                with treeview_search do
                begin
                if selected=nil then
                        tempNode:=myNode

                else
                        tempNode:=selected;

                NodeString:=list_fields.Items.Strings[list_fields.itemindex]+
                unit_wxp.GetOperator(combo_operator.Text )+DealSearchText(edit_value.Text)
                +'('+unit_wxp.GetRelation(combo_rel.Text )+')';

                if (copy(tempNode.text,1,6)='子条件') or (tempNode=myNode) then
                        myChildNode:=Items.addchild(tempNode,NodeString)
                else
                begin
                        tempNode:=tempNode.Parent ;
                        myChildNode:=Items.addchild(tempNode,NodeString);
                end;
        
               end;
        end;
    treeview_search.FullExpand ;
end;



procedure TForm_search.byn_deleteClick(Sender: TObject);
begin
        //with treeview_search do
        //begin
        if treeview_search.Selected =nil then
           showmessage('请选择删除结点')
        else if treeview_search.Selected =myNode then
             showmessage('根结点不能删除')
        else
           treeview_search.Items.Delete(treeview_search.Selected );
                //items.Delete(itemindex)
        //end;
end;

procedure TForm_search.btn_okClick(Sender: TObject);
var
   i:integer;
   tempStr:string;
begin
        //根据查询语句重新建立查询
        //查询以前先关闭连接然后打开连接
        tempStr:= GetQueryStr;
        //showmessage(tempStr);
        if trim(tempStr)<>'' then
            //showmessage(GetQueryStr);

            begin
                 unit_wxp.FinalSql :=  tempStr;            
                 with TransADO  do
                 begin
                 Close ;
                 SQL.Clear ;
                 SQL.Add(tempStr);
                 Open ;
                 end ;

            end;

        close;


end;

procedure TForm_search.List_fieldsClick(Sender: TObject);
begin
        edit_value.SetFocus ;
        AddOperator(unit_wxp.GetFieldType(list_fields.ItemIndex ) );
        AddValues(list_fields.Items.Strings[list_fields.ItemIndex]);

        //showmessage(inttostr(list_fields.ItemIndex));
end;


procedure TForm_search.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
        action:=cafree;
end;

procedure TForm_search.btn_cancelClick(Sender: TObject);
begin
        close;
end;

//添加子条件
procedure TForm_search.btn_moresearchClick(Sender: TObject);
var
        tempNode:Ttreenode;
begin
         with treeview_search  do
         begin
               if Selected=nil then
                       tempNode:=myNode
               else
                       tempNode:=selected;
               if (copy(tempNode.text,1,6)<>'子条件') and (tempNode<>myNode) then
                begin
                        myChildNode:=items.AddChild(tempNode,tempNode.Text );
                        tempnode.Text :='子条件('+unit_wxp.GetRelation(combo_rel.Text )+')';
                end
               else
               tempNode:=items.addChild(tempNode,'子条件('+unit_wxp.GetRelation(combo_rel.Text )+')');

         end;
         treeview_search.FullExpand ;
end;

//增加过滤字段事件
procedure TForm_search.btn_deleteClick(Sender: TObject);
var
   tempIndex:integer;
begin
{        if list_fields.ItemIndex <0 then
        begin
                showmessage('请选择一个过滤字段');
                exit;
        end;
        tempIndex:=list_delete.Items.IndexOf(list_fields.Items.Strings[list_fields.itemindex]);
        if tempIndex<0 then
            begin
            list_delete.Items.Add (list_fields.Items.Strings[list_fields.itemindex]);
            //form_partinfo.DBGrid1.Columns.Items[list_fields.itemindex].Visible :=false;


            end
        else
            showmessage('已经过滤了该字段');      }
end;


//恢复过滤字段
procedure TForm_search.btn_addClick(Sender: TObject);
var
   tempIndex:integer;
begin
{     if list_delete.ItemIndex <0 then
        showmessage('请选择恢复字段')
     else
     begin
        tempIndex:=list_fields.Items.IndexOf(list_delete.Items.Strings[list_delete.ItemIndex]);
        list_delete.DeleteSelected ;
        form_partinfo.DBGrid1.Columns[tempIndex].Visible :=true;
     end;  }
end;




//自定义函数过程
/////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -