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

📄 bsearch.pas

📁 用delphi编写的数据库管理软件
💻 PAS
字号:
unit Bsearch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base_DLL, StdCtrls, Grids, DBGridEh, wwdbedit, Mask, DB, DBClient,
  ComCtrls;

type
  TfrmSearch = class(TfrmBase_DLL)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    btnexit: TButton;
    btnsearch: TButton;
    btncleartiao: TButton;
    btnsettiao: TButton;
    grid: TDBGridEh;
    filename: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    tiaovalue: TwwDBEdit;
    tiaoset: TComboBox;
    CDSgrid: TClientDataSet;
    DSgrid: TDataSource;
    CDSgridfid: TAutoIncField;
    CDSgridftableName: TWideStringField;
    CDSgridfname: TWideStringField;
    CDSgridftype: TWideStringField;
    CDSgridflength: TIntegerField;
    CDSgridfisnullable: TBooleanField;
    CDSgridfdesc: TWideStringField;
    CDSgridfisvisible: TBooleanField;
    listtiao: TListView;
    rband: TRadioButton;
    rbor: TRadioButton;
    procedure btnexitClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure gridGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure FormCreate(Sender: TObject);
    procedure tiaosetChange(Sender: TObject);
    procedure DSgridDataChange(Sender: TObject; Field: TField);
    procedure btnsettiaoClick(Sender: TObject);
    procedure btncleartiaoClick(Sender: TObject);
    procedure btnsearchClick(Sender: TObject);
    procedure gridTitleBtnClick(Sender: TObject; ACol: Integer;
      Column: TColumnEh);
  private
    procedure AddComboData;
    procedure GetgridData;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSearch: TfrmSearch;

implementation

uses DataProcess, Global;

{$R *.dfm}

procedure TfrmSearch.AddComboData;
begin
  tiaoset.Items.Add('包含');
  tiaoset.Items.Add('大于');
  tiaoset.Items.Add('小于');
end;

procedure TfrmSearch.btnexitClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmSearch.FormDestroy(Sender: TObject);
begin
  inherited;
  frmSearch:=nil;
end;

procedure TfrmSearch.gridGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
  inherited;
  if grid.SumList.RecNo mod 2=1 then
    BackGround:=$00EAEFED
    else
    BackGround:=clWhite;
end;

procedure TfrmSearch.FormCreate(Sender: TObject);
begin
  inherited;
AddComboData;
GetgridData;
tiaoset.Text:='';
tiaovalue.Text:='';
rbor.Checked:=False;
rband.Checked:=True;
end;

procedure TfrmSearch.tiaosetChange(Sender: TObject);
begin
  inherited;
  tiaovalue.SetFocus;
end;

procedure TfrmSearch.GetgridData;
begin
  Getsqldata(CDSgrid,'TTableField','fid','ftablename='+vartosql(FromInterface));
  cdsgrid.First;
end;

procedure TfrmSearch.DSgridDataChange(Sender: TObject; Field: TField);
begin
  inherited;
  filename.Caption:=CDSgrid['fdesc'];
end;

procedure TfrmSearch.btnsettiaoClick(Sender: TObject);
var
  SQL:TListItem;
begin
  inherited;
  if (Trim(tiaoValue.Text)='') then
    begin
      messagedlg('查找条件不能为空 ! ',mtError,[mbok],0);
      Exit;
    end;
  if Trim(tiaoset.Text)='' then
    begin
      messagedlg('查找值不能为空 !  ',mtError,[mbok],0);
      Exit;
    end;

  if Trim(tiaoset.Text)='包含' then
    begin
      if Searchtiao='' then
        begin
           Searchtiao:=CDSgrid.fieldbyname('fname').AsString+space(2)+
                      'like'+space(2)+
                       Vartosql('%'+Trim(tiaovalue.Text)+'%')+space(2);
        end
        else
        begin
          if rband.Checked then
             Searchtiao:=Searchtiao+space(2)+' and '+
                         CDSgrid.fieldbyname('fname').AsString+space(2)+
                         'like'+space(2)+
                         Vartosql('%'+Trim(tiaovalue.Text)+'%')+space(2)
            else
               Searchtiao:=Searchtiao+space(2)+' or '+
                         CDSgrid.fieldbyname('fname').AsString+space(2)+
                         'like'+space(2)+
                         Vartosql('%'+Trim(tiaovalue.Text)+'%')+space(2)

        end;
       Sql:=Listtiao.Items.Add;
       if listtiao.Items.Count > 1 then
        begin
          if rband.Checked then
           Sql.Caption:='并且'
           else
           Sql.Caption:='或者';
        end
        else
          sql.Caption:='';
       Sql.Subitems.Add(CDSGrid.fieldbyname('fdesc').AsString);
       sql.SubItems.Add(trim(tiaoset.Text));
       Sql.SubItems.Add(Trim(tiaovalue.Text));

    end
    else
     if Trim(tiaoset.Text)='大于' then
      begin
        if Searchtiao='' then
          begin
             Searchtiao:=CDSgrid.fieldbyname('fname').AsString+space(2)+
                         '>'+space(2)+
                         Vartosql(Trim(tiaovalue.Text))+space(2);
          end
          else
          begin
            if rband.Checked then
               Searchtiao:=Searchtiao+space(2)+' and '+
                           CDSgrid.fieldbyname('fname').AsString+space(2)+
                           '>'+space(2)+
                           Vartosql(Trim(tiaovalue.Text))+space(2)
               else
                Searchtiao:=Searchtiao+space(2)+' or '+
                           CDSgrid.fieldbyname('fname').AsString+space(2)+
                           '>'+space(2)+
                           Vartosql(Trim(tiaovalue.Text))+space(2);

          end;
         Sql:=Listtiao.Items.Add;
       if listtiao.Items.Count > 1 then
        begin
          if rband.Checked then
           Sql.Caption:='并且'
           else
           Sql.Caption:='或者';
        end
        else
          sql.Caption:='';
       Sql.Subitems.Add(CDSGrid.fieldbyname('fdesc').AsString);
       sql.SubItems.Add(trim(tiaoset.Text));
       Sql.SubItems.Add(Trim(tiaovalue.Text));
      end
      else
     if Trim(tiaoset.Text)='小于' then
      begin
        if Searchtiao='' then
          begin
             Searchtiao:=CDSgrid.fieldbyname('fname').AsString+space(2)+
                         '<'+space(2)+
                         Vartosql(Trim(tiaovalue.Text))+space(2);
          end
          else
          begin
            if rband.Checked then
               Searchtiao:=Searchtiao+space(2)+' and '+
                           CDSgrid.fieldbyname('fname').AsString+space(2)+
                           '<'+space(2)+
                           Vartosql(Trim(tiaovalue.Text))+space(2)
               else
               Searchtiao:=Searchtiao+space(2)+' or '+
                           CDSgrid.fieldbyname('fname').AsString+space(2)+
                           '<'+space(2)+
                           Vartosql(Trim(tiaovalue.Text))+space(2);

          end;
         Sql:=Listtiao.Items.Add;
       if listtiao.Items.Count > 1 then
        begin
          if rband.Checked then
           Sql.Caption:='并且'
           else
           Sql.Caption:='或者';
        end
        else
          sql.Caption:='';
       Sql.Subitems.Add(CDSGrid.fieldbyname('fdesc').AsString);
       sql.SubItems.Add(trim(tiaoset.Text));
       Sql.SubItems.Add(Trim(tiaovalue.Text));
      end;
end;

procedure TfrmSearch.btncleartiaoClick(Sender: TObject);
begin
  inherited;
  Searchtiao:='';
  Listtiao.Items.Clear;
  tiaoset.Text:='';
  tiaovalue.Text:='';
  rband.Checked:=true;
  rbor.Checked:=false;
end;

procedure TfrmSearch.btnsearchClick(Sender: TObject);
begin
  inherited;
  Searchtiao:=Trim(Searchtiao);
  Close;
end;

procedure TfrmSearch.gridTitleBtnClick(Sender: TObject; ACol: Integer;
  Column: TColumnEh);
var
  sortstring:string;
begin
  inherited;
  with Column do
  begin
    if FieldName = '' then
      Exit;
    case Title.SortMarker of
      smNoneEh:
      begin
        Title.SortMarker := smDownEh;
        sortstring := Column.FieldName + ' ASC';
      end;
      smDownEh: sortstring := Column.FieldName + ' ASC';
      smUpEh: sortstring := Column.FieldName + ' DESC';
    end;

    try
      CDSGrid.IndexFieldNames:= sortstring
    except
    end;
  end;
end;

end.

⌨️ 快捷键说明

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