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

📄 empreq.pas

📁 pasa人力资源考勤管理系统
💻 PAS
字号:
unit empreq;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, RXDBCtrl, StdCtrls, DBCtrls, Buttons, Mask, ImgList,
  ExtCtrls, ComCtrls, ToolWin, Db, ADODB, Menus, OleCtrls;

type
  TFormempreq = class(TForm)
    ImageList1: TImageList;
    Panel2: TPanel;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label6: TLabel;
    Label13: TLabel;
    Label18: TLabel;
    DBEdit2: TDBEdit;
    DateTimePicker1: TDateTimePicker;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    DBEdit15: TDBEdit;
    DBEdit17: TDBEdit;
    DBComboBox3: TDBComboBox;
    DBGrid2: TDBGrid;
    ScrollBox1: TScrollBox;
    btsave: TBitBtn;
    btcancel: TBitBtn;
    btclose: TBitBtn;
    DataSource1: TDataSource;
    Panel4: TPanel;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    DBGrid3: TDBGrid;
    Panel5: TPanel;
    DBMemo1: TDBMemo;
    ScrollBox2: TScrollBox;
    Label4: TLabel;
    Splitter1: TSplitter;
    PopupMenu1: TPopupMenu;
    n12: TMenuItem;
    n13: TMenuItem;
    n11: TMenuItem;
    PopupMenu2: TPopupMenu;
    MenuItem1: TMenuItem;
    n2: TMenuItem;
    N4: TMenuItem;
    MenuItem3: TMenuItem;
    Splitter2: TSplitter;
    ToolBar1: TToolBar;
    toolbutton3: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    tbnprint: TToolButton;
    TBEXIT: TToolButton;
    DBNav: TDBNavigator;
    Aqy1: TADOQuery;
    procedure Label10Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Label3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure DateTimePicker3Change(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid2KeyPress(Sender: TObject; var Key: Char);
    procedure btcloseClick(Sender: TObject);
    procedure TBEXITClick(Sender: TObject);
    procedure btsaveClick(Sender: TObject);
    procedure btcancelClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBGrid3DblClick(Sender: TObject);
    procedure Panel3Exit(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure n2Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid2TitleClick(Column: TColumn);
    procedure tbnsortClick(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure n11Click(Sender: TObject);
    procedure n12Click(Sender: TObject);
    procedure n13Click(Sender: TObject);
    procedure tbnfindClick(Sender: TObject);
    procedure tbnprintClick(Sender: TObject);
    procedure toolbutton3Click(Sender: TObject);
    procedure DBComboBox3Exit(Sender: TObject);
    procedure DBComboBox3Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DBGrid3Exit(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    manyfield:boolean;
    findex:array[1..5] of integer;
    fsort:array[1..5] of string;
    fcount:0..5;
    f:string;
  public
    { Public declarations }
  end;

var
  Formempreq: TFormempreq;

implementation

uses main,datamol,publicfunction, formzonghe, formdepatment, viewreq,
  repprintsetup;
{$R *.DFM}

procedure TFormempreq.Label10Click(Sender: TObject);
begin
     case (sender as tlabel).tag of
       0:formmain.personal_edu.Click;
       1:formmain.personal_kind.Click;
       2:formmain.personal_prof.Click;
     end;
end;

procedure TFormempreq.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  setdbgridwidth(dbgrid1,'p'+'empsave');
  setdbgridwidth(dbgrid2,'p'+'empsave');
  formempreq:=nil;
  action:=cafree;
end;

procedure TFormempreq.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (activecontrol=dbgrid1) or (activecontrol=dbgrid2) then
    exit
  else
     if key=#13 then
     begin
        key:=#0;
        selectnext(activecontrol,true,true);
     end;
end;

procedure TFormempreq.Label3Click(Sender: TObject);
begin
 if not assigned(formdept) then
      formdept:=tformdept.create(application);
      formdept.show;
end;

procedure TFormempreq.FormActivate(Sender: TObject);
begin
  getdbgridwidth(dbgrid1,'p'+'empreq');
  getdbgridwidth(dbgrid2,'p'+'empreq');
  dbcombobox3.Items.Clear;
  with datamod.adoquery1 do
  begin
    sql.Clear;
    sql.add('select * from pub05010');
    open;
    while not eof do
    begin
      dbcombobox3.Items.Add(fieldbyname('dno').asstring);
      next;
    end;
    close;  
  end;
end;

procedure TFormempreq.DateTimePicker3Change(Sender: TObject);
begin
  dbedit15.text:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd',datetimepicker1.date)
end;

procedure TFormempreq.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
   dbgrid_keypress(dbgrid1,key);
end;

procedure TFormempreq.DBGrid2KeyPress(Sender: TObject; var Key: Char);
begin
    dbgrid_keypress(dbgrid2,key);
end;

procedure TFormempreq.btcloseClick(Sender: TObject);
begin
  close;
end;

procedure TFormempreq.TBEXITClick(Sender: TObject);
begin
  close;
end;

procedure TFormempreq.btsaveClick(Sender: TObject);
begin
 if datamod.adoempreq1.Modified then
 begin
  datamod.Adoempreq1.Post;
  datamod.Adoempreq.Refresh;
 end;    
end;

procedure TFormempreq.btcancelClick(Sender: TObject);
begin
  datamod.Adoempreq1.CancelUpdates;
end;

procedure TFormempreq.DBGrid1DblClick(Sender: TObject);
begin
  if (dbgrid1.SelectedIndex =1) or (dbgrid1.SelectedIndex =2) or (dbgrid1.SelectedIndex=5)or (dbgrid1.SelectedIndex=8) then
  begin
   panel3.Visible :=true;
   with Aqy1 do
   begin
    case dbgrid1.selectedindex of
    1:begin
       close;
       sql.clear;
       sql.Add('select * from per05010');  //科系
       open;
       Fields[0].DisplayLabel:='科系代码';
       Fields[1].DisplayLabel:='科系名称';
      end;
    2:begin
       close;
       sql.clear;
       sql.Add('select * from per04010');//学历
       open;
       Fields[0].DisplayLabel:='学历代码';
       Fields[1].DisplayLabel:='学历名称';
       end;
    5:begin
       close;
       sql.clear;
       sql.Add('select * from per01010');//职务
       open;
       Fields[0].DisplayLabel:='职务代码';
       Fields[1].DisplayLabel:='职务名称';
      end;
    8:begin
       close;
       sql.Clear;
       sql.add('select * from per03010');  //籍贯
       open;
       Fields[0].DisplayLabel:='籍贯代码';
       Fields[1].DisplayLabel:='籍贯名称';
      end;
    end;
   end;
  end;
end;

procedure TFormempreq.DBGrid3DblClick(Sender: TObject);
begin
   datamod.adoempreq1.edit;
   case dbgrid1.SelectedIndex of
    1:datamod.adoempreq1Rcourse.asstring:=aqy1.fields[1].AsString;
    2:datamod.adoempreq1Rdegree.asstring:=aqy1.fields[1].AsString;
    5:datamod.adoempreq1Rprof.asstring:=aqy1.fields[1].AsString;
    8:datamod.adoempreq1Rprov.asstring:=aqy1.fields[1].AsString;
   end;
end;

procedure TFormempreq.Panel3Exit(Sender: TObject);
begin
  panel3.Visible:=false;
end;

procedure TFormempreq.N3Click(Sender: TObject);
var i:1..5;
begin
  for i:=1 to fcount do
    dbgrid2.Columns[findex[i]].Color :=clwindow;
  fcount:=0;
end;

procedure TFormempreq.N1Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid2.SelectedIndex =findex[i] then
    begin
     fsort[i]:='ASC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid2.selectedindex;
    fsort[fcount]:='ASC';
    dbgrid2.Columns[dbgrid2.selectedindex].Color :=clgray;
   end;
end;

procedure TFormempreq.n2Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid2.SelectedIndex =findex[i] then
    begin
     fsort[i]:='DESC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid2.selectedindex;
    fsort[fcount]:='DESC';
    dbgrid2.Columns[dbgrid2.selectedindex].Color :=clgray;
   end;
end;

procedure TFormempreq.DBGrid1TitleClick(Column: TColumn);
begin
   if f='DESC' then
     f:='ASC'
   else
     f:='DESC';
   datamod.ADOempreq1.Sort :=column.FieldName+' '+f;
end;

procedure TFormempreq.DBGrid2TitleClick(Column: TColumn);
begin
   if f='DESC' then
     f:='ASC'
   else
     f:='DESC';
   datamod.ADOempreq.Sort :=column.FieldName+' '+f;
end;

procedure TFormempreq.tbnsortClick(Sender: TObject);
var i:1..5;
begin
  if manyfield then
   begin
     manyfield:=false;
     tbnsort.hint:='设定多字段排序';
     popupmenu2.Items[0].Enabled :=false;
     popupmenu2.Items[1].Enabled :=false;
     popupmenu2.Items[2].Enabled :=false;
     popupmenu2.Items[3].Enabled :=false;
   end
  else begin
    manyfield:=true;
    tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
    f:='';
    popupmenu2.Items[0].Enabled :=true;
    popupmenu2.Items[1].Enabled :=true;
    popupmenu2.Items[2].Enabled :=true;
    popupmenu2.Items[3].Enabled :=true;
    fcount:=0;
    for i:=1 to 5 do
     begin
      findex[i]:=0;
      fsort[i]:='';
     end;
  end;
end;

procedure TFormempreq.N4Click(Sender: TObject);
var i:1..5;
   sortexp:string;
begin
  sortexp:='';
  for i:=1 to fcount do
  begin
   if dbgrid2.Columns[findex[i]].Color=clgray then
    begin
     sortexp :=sortexp+dbgrid2.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then sortexp:=sortexp+',';
    end;
  end;
  if sortexp<>'' then datamod.Adoempreq.Sort :=sortexp;
end;

procedure TFormempreq.n11Click(Sender: TObject);
begin
  datamod.ADOempreq1.append;
end;

procedure TFormempreq.n12Click(Sender: TObject);
begin
  datamod.Adoempreq1.Edit;
end;

procedure TFormempreq.n13Click(Sender: TObject);
begin
  datamod.Adoempreq1.Delete;
end;

procedure TFormempreq.tbnfindClick(Sender: TObject);
begin
  findrecorder(datamod.adoempreq1,'Adoempreq1','emp06011');   //调用publicfuction中的查询功能
end;

procedure TFormempreq.tbnprintClick(Sender: TObject);
begin
  if not assigned(printsetup) then
     printsetup:=tprintsetup.create(self);
     printsetup.show;
end;

procedure TFormempreq.toolbutton3Click(Sender: TObject);
begin
  if not assigned(formview) then
    formview:=Tformview.create(application);
  formview.show;
end;

procedure TFormempreq.DBComboBox3Exit(Sender: TObject);
var ary:Tadoquery;
begin
  ary:=Tadoquery.Create(application);
  ary.Connection :=datamod.Database1;
  with ary do
  begin
    sql.Clear;
    sql.Add ('select * from pub05010 where dno='''+dbcombobox3.text+''' ');
    open;
    if eof then
     begin
      Application.messagebox('没有此部门','提示',mb_ok+mb_iconinformation);
      close;
     end
    else begin
      dbcombobox3.Hint :=fieldbyname('dept').asstring;
      dbedit11.Text :=fieldbyname('sumperson').asstring;
      close;
      sql.Clear;
      sql.Add ('select count(*) from per24010 where deptno='''+dbcombobox3.text+''' ');
      open;
      if not eof then
        dbedit10.text:=fields[0].AsString;
      close;
    end;
  end;
end;

procedure TFormempreq.DBComboBox3Change(Sender: TObject);
var ary:Tadoquery;
begin
  ary:=Tadoquery.Create(application);
  ary.Connection :=datamod.Database1;
  with ary do
  begin
    sql.Clear;
    sql.Add ('select * from pub05010 where dno='''+dbcombobox3.text+''' ');
    open;
    if eof then
     begin
      Application.messagebox('没有此部门','提示',mb_ok+mb_iconinformation);
      close;
     end
    else begin
      dbcombobox3.Hint :=fieldbyname('dept').asstring;
      datamod.Adoempreq.FieldByName('sumperson').asstring :=fieldbyname('sumperson').asstring;
      close;
      sql.Clear;
      sql.Add ('select count(*) from per24010 where deptno='''+dbcombobox3.text+''' ');
      open;
      if not eof then
        datamod.Adoempreq.FieldByName('nowperson').asstring:=fields[0].AsString;
      close;
    end;
  end;
end;

procedure TFormempreq.FormCreate(Sender: TObject);
begin
  with datamod do
  begin
    Adoempreq.close;
    Adoempreq1.close;
    Adoempreq.CursorType :=ctKeyset;
    Adoempreq.LockType :=ltpessimistic;
    Adoempreq1.CursorType :=ctKeyset;
    Adoempreq1.LockType :=ltpessimistic;
    Adoempreq.Open;
    Adoempreq1.Open;
  end;
  datetimepicker1.date:=date;
end;

procedure TFormempreq.DateTimePicker1CloseUp(Sender: TObject);
begin
  datamod.adoempreq.fieldbyname('rdate').asstring:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd',datetimepicker1.date)
end;

procedure TFormempreq.DBGrid3Exit(Sender: TObject);
begin
  panel3.visible:=false;
end;

procedure TFormempreq.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_F1 then
      begin
        //showmessage('ok!')
     //MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0);
      Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
      application.HelpJump('SHM_CONTENTS0046');
    end;
end;

end.

⌨️ 快捷键说明

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