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

📄 u_luru.pas

📁 简单的人事工资管理系统.... 我是想下载源码菜拿来换的...呵呵~~ 版主给点面子哦~~
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit u_LuRu;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, RzPanel, RzSplit, RzButton, StdCtrls, RzLabel, Mask,
  RzEdit, RzTabs, Grids, DBGrids, RzRadChk, RzCmboBx,DB, RzDBGrid;

type
  TfrmLuRu = class(TForm)
    RzpgCtrl1: TRzPageControl;
    rztbshtTabSheet1: TRzTabSheet;
    rzspltr1: TRzSplitter;
    rzpnl1: TRzPanel;
    rzbtbtn1: TRzBitBtn;
    rzbtbtn2: TRzBitBtn;
    rzbtbtn3: TRzBitBtn;
    rzbtbtn4: TRzBitBtn;
    rzbtbtn5: TRzBitBtn;
    rzpnl2: TRzPanel;
    rzspltr2: TRzSplitter;
    rzpnl3: TRzPanel;
    lblName: TRzLabel;
    lbl2: TRzLabel;
    lbl3: TRzLabel;
    lbl5: TRzLabel;
    lbl6: TRzLabel;
    lbl7: TRzLabel;
    lbl4: TRzLabel;
    edtName: TRzEdit;
    edtxuexiao: TRzEdit;
    edtBuMen: TRzEdit;
    edtmb: TRzEdit;
    RzRdbtnRzRdMan: TRzRadioButton;
    RzRdbtnRzRdGirl: TRzRadioButton;
    cbb1: TRzComboBox;
    dbgrd1: TDBGrid;
    rztbshtTabSheet3: TRzTabSheet;
    rzspltr5: TRzSplitter;
    RzPanel3: TRzPanel;
    RzBitBtn6: TRzBitBtn;
    RzBitBtn7: TRzBitBtn;
    RzBitBtn8: TRzBitBtn;
    RzBitBtn9: TRzBitBtn;
    RzBitBtn10: TRzBitBtn;
    rzspltr6: TRzSplitter;
    RzpgCtrl2: TRzPageControl;
    rztbshtTabSheet7: TRzTabSheet;
    lbl1: TRzLabel;
    lbl8: TRzLabel;
    lbl9: TRzLabel;
    lbl10: TRzLabel;
    lbl11: TRzLabel;
    lbl13: TRzLabel;
    edtCJName: TRzEdit;
    edtCJBM: TRzEdit;
    edt4: TRzEdit;
    edtCJZhenZhi: TRzEdit;
    edtCJChuShen: TRzDateTimeEdit;
    rztbshtTabSheet8: TRzTabSheet;
    lbl12: TRzLabel;
    lbl14: TRzLabel;
    lbl15: TRzLabel;
    edtLLYuanShiZhiWu: TRzEdit;
    edtLLYuanShiShiJian: TRzEdit;
    rztbshtTabSheet9: TRzTabSheet;
    lbl16: TRzLabel;
    lbl17: TRzLabel;
    edtCJZhiChen: TRzEdit;
    edtCJFuDu: TRzEdit;
    rztbshtTabSheet10: TRzTabSheet;
    lbl18: TRzLabel;
    lbl19: TRzLabel;
    lbl20: TRzLabel;
    lbl21: TRzLabel;
    edt12: TRzEdit;
    edt13: TRzEdit;
    edt14: TRzEdit;
    edt15: TRzEdit;
    dbgrd4: TDBGrid;
    rztbshtTabSheet5: TRzTabSheet;
    RzPanel6: TRzPanel;
    RzBitBtn16: TRzBitBtn;
    RzBitBtn17: TRzBitBtn;
    RzBitBtn18: TRzBitBtn;
    RzBitBtn19: TRzBitBtn;
    RzBitBtn20: TRzBitBtn;
    RzPanel9: TRzPanel;
    lbl29: TRzLabel;
    lbl30: TRzLabel;
    edt24: TRzEdit;
    dbgrd6: TDBGrid;
    cbbLuRuZhiChen: TRzComboBox;
    RzRdbtnCJMan: TRzRadioButton;
    RzRdbtnCLGirl: TRzRadioButton;
    lbl31: TRzLabel;
    cbbCurZhiWu: TRzComboBox;
    rztbshtTabSheet2: TRzTabSheet;
    rztbshtTabSheet4: TRzTabSheet;
    RzSplitter1: TRzSplitter;
    RzPanel1: TRzPanel;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn3: TRzBitBtn;
    RzBitBtn4: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    RzSplitter2: TRzSplitter;
    RzPanel2: TRzPanel;
    rzspltr11: TRzSplitter;
    RzSplitter3: TRzSplitter;
    RzSplitter4: TRzSplitter;
    RzSplitter5: TRzSplitter;
    RzPanel4: TRzPanel;
    RzBitBtn11: TRzBitBtn;
    RzBitBtn12: TRzBitBtn;
    RzBitBtn13: TRzBitBtn;
    RzBitBtn14: TRzBitBtn;
    RzBitBtn15: TRzBitBtn;
    RzPanel5: TRzPanel;
    RzBitBtn21: TRzBitBtn;
    RzBitBtn22: TRzBitBtn;
    RzBitBtn23: TRzBitBtn;
    RzBitBtn24: TRzBitBtn;
    RzBitBtn25: TRzBitBtn;
    RzPanel7: TRzPanel;
    RzBitBtn26: TRzBitBtn;
    RzBitBtn27: TRzBitBtn;
    RzBitBtn28: TRzBitBtn;
    RzBitBtn29: TRzBitBtn;
    RzBitBtn30: TRzBitBtn;
    rzpnl4: TRzPanel;
    rzpnl5: TRzPanel;
    rzpnl6: TRzPanel;
    rzpnl7: TRzPanel;
    rzpnl8: TRzPanel;
    rzpnl9: TRzPanel;
    rzdbgrd1: TRzDBGrid;
    rzdbgrd2: TRzDBGrid;
    rzdbgrd3: TRzDBGrid;
    edt1: TRzDateTimeEdit;
    edt3: TRzEdit;
    lbl22: TRzLabel;
    lbl23: TRzLabel;
    edt2: TRzEdit;
    RzGpbx1: TRzGroupBox;
    RzRadioButton1: TRzRadioButton;
    RzRadioButton2: TRzRadioButton;
    RzDateTimeEdit1: TRzDateTimeEdit;
    RzLabel3: TRzLabel;
    RzEdit1: TRzEdit;
    RzLabel1: TRzLabel;
    RzLabel2: TRzLabel;
    RzGpbx2: TRzGroupBox;
    lbl24: TRzLabel;
    lbl25: TRzLabel;
    lbl26: TRzLabel;
    edt7: TRzEdit;
    cbb2: TRzComboBox;
    cbb3: TRzComboBox;
    lbl27: TRzLabel;
    lbl28: TRzLabel;
    lbl32: TRzLabel;
    lbl34: TRzLabel;
    lbl35: TRzLabel;
    edtKQName: TRzEdit;
    edtKQBM: TRzEdit;
    edtKQChuQin: TRzEdit;
    edtKQChiDao: TRzEdit;
    edtKQHiaBan: TRzEdit;
    edtKQChuChai: TRzEdit;
    lbl36: TRzLabel;
    lbl37: TRzLabel;
    edtKQChuShen: TRzDateTimeEdit;
    procedure rzbtbtn5Click(Sender: TObject);
    procedure cbbLuRuZhiChenDropDown(Sender: TObject);
    procedure RzBitBtn16Click(Sender: TObject);
    procedure edt24KeyPress(Sender: TObject; var Key: Char);
    procedure edt22KeyPress(Sender: TObject; var Key: Char);
    procedure RzBitBtn6Click(Sender: TObject);
    procedure edtLLYuanShiShiJianKeyPress(Sender: TObject; var Key: Char);
    procedure edtCJFuDuKeyPress(Sender: TObject; var Key: Char);
    procedure edt12KeyPress(Sender: TObject; var Key: Char);
    procedure edt13KeyPress(Sender: TObject; var Key: Char);
    procedure edt14KeyPress(Sender: TObject; var Key: Char);
    procedure edt15KeyPress(Sender: TObject; var Key: Char);
    procedure cbbCurZhiWuDropDown(Sender: TObject);
    procedure cbb1DropDown(Sender: TObject);
    procedure rzbtbtn1Click(Sender: TObject);
    procedure cbb1KeyPress(Sender: TObject; var Key: Char);
    procedure edt3KeyPress(Sender: TObject; var Key: Char);
    procedure RzBitBtn11Click(Sender: TObject);
    procedure RzBitBtn21Click(Sender: TObject);
    procedure edt7KeyPress(Sender: TObject; var Key: Char);
    //procedure edt5KeyPress(Sender: TObject; var Key: Char);
    //procedure edt6KeyPress(Sender: TObject; var Key: Char);
    procedure cbb2DropDown(Sender: TObject);
    procedure cbb3DropDown(Sender: TObject);
    procedure RzComboBox1DropDown(Sender: TObject);
    procedure rzbtbtn3Click(Sender: TObject);
    procedure rzbtbtn4Click(Sender: TObject);
    procedure rzbtbtn2Click(Sender: TObject);
    procedure RzBitBtn12Click(Sender: TObject);
    procedure RzBitBtn13Click(Sender: TObject);
    procedure RzBitBtn14Click(Sender: TObject);
    procedure RzBitBtn8Click(Sender: TObject);
    procedure RzBitBtn9Click(Sender: TObject);
    procedure RzBitBtn7Click(Sender: TObject);
    procedure RzBitBtn26Click(Sender: TObject);
    procedure edtKQChuQinKeyPress(Sender: TObject; var Key: Char);
    procedure edtKQChiDaoKeyPress(Sender: TObject; var Key: Char);
    procedure edtKQHiaBanKeyPress(Sender: TObject; var Key: Char);
    procedure edtKQChuChaiKeyPress(Sender: TObject; var Key: Char);
    procedure RzBitBtn22Click(Sender: TObject);
    procedure RzBitBtn23Click(Sender: TObject);
    procedure RzBitBtn24Click(Sender: TObject);
    procedure RzBitBtn28Click(Sender: TObject);
    procedure RzBitBtn29Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmLuRu: TfrmLuRu;

implementation

uses DataModule,U_Common;

{$R *.dfm}

procedure TfrmLuRu.rzbtbtn5Click(Sender: TObject);
begin
     close;
end;

procedure TfrmLuRu.cbbLuRuZhiChenDropDown(Sender: TObject);
var
    sql:string;
begin
    sql:='select 职称 from ZhiChen';
    if not OpenQuery(DM.qryCommon,sql,qmOpen) then
       Exit
    else
       with DM.qryCommon do
          begin
            cbbLuRuZhiChen.Items.Clear;
            while not Eof do
              begin
                cbbLuRuZhiChen.Items.Add(DM.qryCommon.FieldByName('职称').Value);
                Next;
              end;
           Close;
           end;
end;

procedure TfrmLuRu.RzBitBtn16Click(Sender: TObject);
begin
     if trim(cbbLuRuZhiChen.Text)='' then
         begin
           ShowErrorMsgBox('请选择一个职称');
           Exit;
         end;
   if trim(edt24.Text)='' then
       begin
         ShowErrorMsgBox('工资增长幅度不允许为空');
         Exit;
       end;

    dm.atblZhiChen.Open;
     if dm.atblZhiChen.Locate('职称',Trim(cbbLuRuZhiChen.Text),[loCaseInsensitive]) then
        begin
            ShowErrorMsgBox('数据重复,请重新输入!');
            //Close;
            Exit;
        end;

    with dm.atblZhiChen do
         begin
             Append;
             FieldByName('工资增长幅度').Value:=Trim(edt24.Text);
             FieldByName('职称').Value:=Trim(cbbLuRuZhiChen.Text);
             Post;
             //Close;
             ShowTipMsgBox('添加成功!');
         end;
end;

procedure TfrmLuRu.edt24KeyPress(Sender: TObject; var Key: Char);
begin

   if (Trim(edt24.Text)='') and (Key ='.') then //如果第一次输入小数点,则写成'0.',并设置光标位置.
   begin
      edt24.Text:='0.';
      edt24.SelStart:=2;
   end;
   
   if not(Key in ['0'..'9','.',Char(8)]) then Key:=#0;
   if (Key='.') and (Pos('.',edt24.Text)>0) then Key:=#0;
end;

procedure TfrmLuRu.edt22KeyPress(Sender: TObject; var Key: Char);
begin
   if not(Key in ['0'..'9','.',Char(8)]) then Key:=#0;
end;

procedure TfrmLuRu.RzBitBtn6Click(Sender: TObject);
var
    SQL,SQL1:string;
    EmployeeNo,LvLiNO,ZhiChenNO,KaoQinNO,JC:Integer;
    BaseTime,JiaBan,ChuCha,ChiDao:Integer;
    ZhenZhangFuDu:Single;
begin
    LvLiNO:=-1;
    ZhiChenNO:=-1;
    KaoQinNO:=-1;
    BaseTime:=0;
    JiaBan:=0;
    ChuCha:=0;
    ChiDao:=0;
    ZhenZhangFuDu:=1;

    //员工信息
    //----------------------------
    if Trim(edtCJName.Text)='' then
    begin
      ShowErrorMsgBox('请填写员工的姓名!');
      Exit;
    end;

    //查找员工是否存在于employee表
    SQL:='select * from employee where 姓名='+QuotedStr(Trim(edtCJName.Text));
    if RzRdbtnCJMan.Checked then
       SQl:=SQL+' and 性别='+BoolToStr(True)
    else
       SQl:=SQL+' and 性别='+BoolToStr(False);

    if  Trim(edtCJBM.Text)<>'' then
       SQL:=SQL+' and 部门='+QuotedStr(Trim(edtCJBM.Text));

    if  Trim(edtCJZhenZhi.Text)<>'' then
       SQL:=SQL+' and 政治面貌='+QuotedStr(Trim(edtCJZhenZhi.Text));

    if  Trim(edtCJChuShen.Text)<>'' then
       SQL:=SQL+' and 出生日期='+Trim(edtCJChuShen.Text);

   if not OpenQuery(DM.qryCommon,SQL,qmOpen) then
   begin
     DM.qryCommon.Close;
     ShowErrorMsgBox('根据你填写的员工资料没有找到这个员工,'+#13#10+'请先添加该员工基本的信息!');
     Exit;
   end else
   begin
     if (DM.qryCommon.RecordCount>1) then
     begin
       DM.qryCommon.Close;
       ShowErrorMsgBox('根据你填写的员工资料,系统查询到多个员工,'+#13#10+'请添写更详细的员工信息!');

       Exit;
     end;
   end;
   EmployeeNo:=DM.qryCommon.fieldbyName('编号').Value;
   //---------------------------


   //履历
   //----------------------------
   if (Trim(cbbCurZhiWu.Text)<>'') or (Trim(edtLLYuanShiZhiWu.Text)<>'')
          or (Trim(edtLLYuanShiShiJian.Text)<>'') then
   begin
           if Trim(cbbCurZhiWu.Text)='' then
           begin
              ShowErrorMsgBox('当前职务 不允许为空!');
              Exit;
           end;

           if Trim(cbbCurZhiWu.Text)=Trim(edtLLYuanShiZhiWu.Text) then
           begin
               ShowErrorMsgBox('你添写了错误的信息:'+#13#10+'当前职务 和 原始职务 相同!');
               Exit;
           end;

           if not ((Trim(edtLLYuanShiZhiWu.Text)='')=(Trim(edtLLYuanShiShiJian.Text)='')) then
           begin
               ShowErrorMsgBox('你必须填写 原始职务 或 原始职务任职时间!');
               Exit;
           end;

           SQL:='select * from LvLi where 当前职务='+QuotedStr(cbbCurZhiWu.Text);
           if Trim(edtLLYuanShiZhiWu.Text)<>'' then
              SQL:=SQL+' and 原始职务='+QuotedStr(edtLLYuanShiZhiWu.Text);

           if  Trim(edtLLYuanShiShiJian.Text)<>'' then
              SQL:=SQL+' and 原始职务任职时间='+edtLLYuanShiShiJian.Text;

           if not OpenQuery(DM.qryCommon,SQL,qmOpen) then
           begin
              DM.qryCommon.Close;
              ShowErrorMsgBox('没有找到到该员工的履历信息,'+#13#10+'请先添加员工履历信息!'+#13#10+'或者你填写了错误的履历信息!');
              Exit;
           end   else
           begin
             if DM.qryCommon.RecordCount>1 then
             begin
                DM.qryCommon.Close;
                ShowErrorMsgBox('系统检索到多份履历,'+#13#10+'不能正确定位到该员工的履历.'+#13#10+'请添写更详细的履历信息!');
                Exit;
             end;
           end;
           LvLiNO:=DM.qryCommon.fieldbyName('编号').Value;
           BaseTime:=DM.qryCommon.fieldbyName('原始职务任职时间').Value;
   end;
   //---------------------------

   //added 2007-5-20
   //根据员工编号检索考勤信息



   //职称
   //----------------------------
   if  (Trim(edtCJZhiChen.Text)<>'') or (Trim(edtCJFuDu.Text)<>'') then
   begin
           if Trim(edtCJZhiChen.Text)='' then
           begin
              ShowErrorMsgBox('请填写员工 职称!');
              exit;
           end;
           SQL:='select * from ZhiChen where 职称='+QuotedStr(Trim(edtCJZhiChen.Text));
           if Trim(edtCJFuDu.Text)<>'' then
             SQL:=SQL+' and 工资增长幅度='+Trim(edtCJFuDu.Text);

           if not OpenQuery(dm.qryCommon,SQL,qmOpen) then
           begin
              DM.qryCommon.Close;
              ShowErrorMsgBox('没有找到这个职位,'+#13#10+'请先添加员工这个职位的信息!'+#13#10+'或者你填写了错误的职位信息!');
              exit;
           end else if dm.qryCommon.RecordCount>1 then
           begin
              DM.qryCommon.Close;
              ShowErrorMsgBox('请填写更详细的职称信息!');
              Exit;
           end;
          ZhiChenNO:=DM.qryCommon.fieldbyName('编号').Value;
          ZhenZhangFuDu:=DM.qryCommon.fieldbyName('工资增长幅度').Value;
   end;
   //---------------------------

   //定位考勤
   if (Trim(edt12.Text)<>'') or (Trim(edt13.Text)<>'') or (Trim(edt14.Text)<>'')  then
   begin
      SQL:='select * from KaoQin where 员工编号='+inttostr(EmployeeNO);
      if OpenQuery(DM.qryCommon,SQL,qmOpen) then
      begin
              KaoQinNO:=DM.qryCommon.fieldbyName('编号').Value;
              ChuCha:=DM.qryCommon.fieldbyName('出差天数').Value;
              JiaBan:=DM.qryCommon.fieldbyName('出差天数').Value;
              ChiDao:=DM.qryCommon.fieldbyName('迟到天数').Value;
      end;
   end;



   //-------------------------------------------
   //开始添加数据
   //惩奖=(基本工资+原始职务任职时间*30)*工资增长幅度+ 加班时间*3+出差天数*50-迟到天数*100;
   //暂时假定是这种惩奖计算方法

   SQL1:='insert into JiangChen(员工编号,奖惩) Values('+inttostr(EmployeeNo);

   JC:=(1800+BaseTime*30)* trunc((ZhenZhangFuDu*1000)) div 1000 +JiaBan*3+ChuCha*50-ChiDao*100;
   SQL1:=SQL1+','+inttostr(JC)+')';

   OpenQuery(DM.qryCommon,SQL,qmExec);
   ShowTipMsgBox('奖惩信息录入成功!');
   //--------------------------------------------
end;

procedure TfrmLuRu.edtLLYuanShiShiJianKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not(Key in ['0'..'9','.',Char(8)]) then Key:=#0;
end;

procedure TfrmLuRu.edtCJFuDuKeyPress(Sender: TObject; var Key: Char);
begin

 if (Trim(edtCJFuDu.Text)='') and (Key ='.') then //如果第一次输入小数点,则写成'0.',并设置光标位置.
   begin
      edtCJFuDu.Text:='0.';
      edtCJFuDu.SelStart:=2;
   end;
   if not(Key in ['0'..'9','.',Char(8)]) then Key:=#0;
   if (Key='.') and (Pos('.',edtCJFuDu.Text)>0) then Key:=#0;
end;

procedure TfrmLuRu.edt12KeyPress(Sender: TObject; var Key: Char);

⌨️ 快捷键说明

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