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

📄 usearch.pas

📁 人事档案管理
💻 PAS
字号:
unit uSearch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMenu, StdCtrls, Buttons, ComCtrls, DBCtrls, ADODB, DB, uDlgbase;

type
  TfrmFind = class(TfrmDlgBase)
    Label3: TLabel;
    gbInqus: TGroupBox;
    rbEName: TRadioButton;
    rbName: TRadioButton;
    rbStano: TRadioButton;
    edtInqu: TEdit;
    btnSearch: TBitBtn;
    btnCancel: TBitBtn;
    pcFind: TPageControl;
    tcSingle: TTabSheet;
    tsMul: TTabSheet;
    gbInqum: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label6: TLabel;
    Label10: TLabel;
    cbDep: TComboBox;
    cbSort: TComboBox;
    cbLevel: TComboBox;
    xqFind: TXPMenu;
    cbSex: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    cbCap: TComboBox;
    cbDState: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure btnSearchClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
  private
    { Private declarations }
    procedure FillData;
  public
    { Public declarations }
  published
    procedure RadioButtonClick(Sender: TObject);
  end;

var
  frmFind: TfrmFind;

implementation

uses uStainfo, uData, uGlobal;

var
  fId: Integer = 0;

{$R *.dfm}

procedure TfrmFind.RadioButtonClick(Sender: TObject);
begin
  case TRadioButton(Sender).Tag of
    0: label3.Caption := '请输入工号:';
    1: label3.Caption := '请输入姓名:';
    2: label3.Caption := '请输入拼音:';
  end;
  edtInqu.SetFocus;
end;

procedure TfrmFind.FillData;
var
  aqFillData: TADOQuery;
begin
  aqFillData := TADOQuery.Create(self);
  dmPer.OpenQuery(aqFillData, 'select dep from dept');
  cbDep.Clear;
  while not aqFillData.Eof do
  begin
    cbDep.Items.add(aqFillData.FieldByName('dep').AsString);
    aqFillData.Next;
  end;
  dmPer.OpenQuery(aqFillData, 'select sname, iflag from oinfo');

  FilterData(aqFillData, 'iflag = 1');
  cbSort.Items.Clear;
  while not aqFillData.Eof do
  begin
    cbSort.Items.add(aqFillData.FieldByName('sname').AsString);
    aqFillData.Next;
  end;

  FilterData(aqFillData, 'iflag = 4');
  cbLevel.Items.Clear;
  while not aqFillData.Eof do
  begin
    cbLevel.Items.add(aqFillData.FieldByName('sname').AsString);
    aqFillData.Next;
  end;

  FilterData(aqFillData, 'iflag = 5');
  cbCap.Items.Clear;
  while not aqFillData.Eof do
  begin
    cbCap.Items.add(aqFillData.FieldByName('sname').AsString);
    aqFillData.Next;
  end;
end;

procedure TfrmFind.FormCreate(Sender: TObject);
begin
  Log.Write('进行员工信息查询模块');
  FillData;
  cbDep.Items.Insert(0, '不 限');
  cbDep.ItemIndex := 0;
  cbSex.Items.Insert(0, '不 限');
  cbSex.ItemIndex := 0;
  cbSort.Items.Insert(0, '不 限');
  cbSort.ItemIndex := 0;
  cbLevel.Items.Insert(0, '不 限');
  cbLevel.ItemIndex := 0;
  cbCap.Items.Insert(0, '不 限');
  cbCap.ItemIndex := 0;
  pcFind.ActivePageIndex := 0;
end;

procedure TfrmFind.btnSearchClick(Sender: TObject);
  function GetDeptID(ADept: string): string;
  var
    aqDept: TADOQuery;
  begin
    Result := '';
    aqDept := TADOQuery.Create(Self);
    dmPer.OpenQuery(aqDept, 'select id, dep from dept');
    if not aqDept.Eof then
      try
        Result := aqDept.Lookup('dep', ADept, 'id');
      except
      end;
    aqDept.Free;
  end;

  function GetInfoID(AInfo: string): string;
  var
    aqInfo: TADOQuery;
  begin
    Result := '';
    aqInfo := TADOQuery.Create(Self);
    dmPer.OpenQuery(aqInfo, 'select id, sname from oinfo');
    if not aqInfo.Eof then
      try
        Result := aqInfo.Lookup('sname', AInfo, 'id');
      except
      end;
    aqInfo.Free;
  end;

var
  i: Integer;
  sSta, sSql, sWhr: string;
begin
  {单人查询}
  if pcFind.ActivePageIndex = 0 then
  begin
    Log.Write('进行单人查询操作');
    if edtInqu.Text <> '' then
    begin
      with frmStainfo do
      begin
        tvPer.SetFocus;
        for i := fid to tvPer.Items.Count - 1 do
        begin
          fid := fid + 1;
          if (tvPer.Items[i].Data <> nil) and (tvPer.Items[i].ImageIndex = 2) then
          begin
            if rbStano.Checked then
              sSta := PNodeData(tvPer.Items[i].Data)^.No
            else if rbName.Checked then
              sSta := tvPer.Items[i].Text
            else sSta := PNodeData(tvPer.Items[i].Data)^.En;
            if sSta = edtInqu.Text then
            begin
              tvPer.Items[i].Selected := True;
              tvPer.Setfocus;
              Break;
            end;
          end;
        end;
        if i = tvPer.Items.Count then
        begin
          fid := 0;
          MessageBox(Self.Handle, '已到了末尾!', '提示', mb_IconInformation + mb_Ok);
        end;
      end
    end
    else
    begin
      MessageBox(Handle, '请输入查询条件!', '提示', mb_IconInformation + mb_Ok);
      edtInqu.SetFocus;
    end;
  end
  {多人查询}
  else
  begin
    Log.Write('进行多人查询操作');
    sSql := 'select id, stano, sname, ename, depid from stainfo where 0=0 ';
    sWhr := '';
    if cbDep.Text <> '不 限' then sWhr := sWhr + ' and depid=' + GetDeptID(cbDep.Text);
    if cbSex.Text <> '不 限' then sWhr := sWhr + ' and sex=' + QuotedStr(cbSex.Text);
    if cbSort.Text <> '不 限' then sWhr := sWhr + ' and sorts=' + GetInfoID(cbSort.Text);
    if cbLevel.Text <> '不 限' then sWhr := sWhr + ' and level=' + GetInfoID(cbLevel.Text);
    if cbCap.Text <> '不 限' then sWhr := sWhr + ' and duty=' + GetInfoID(cbCap.Text);
    if cbDState.Text <> '不 限' then sWhr := sWhr + ' and dutystate=' + QuotedStr(cbDState.Text);
    if sWhr <> '' then sSql := sSql + sWhr;
    frmStaInfo.sWhr := sWhr;
    frmStaInfo.LoadTree(frmStaInfo.tvPer, sSql);
    frmStaInfo.LoadTree(frmStaInfo.tvPerv, sSql);
  end;
end;

procedure TfrmFind.btnCancelClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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