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

📄 umain.pas

📁 说明: 比较简单的人事档案管理程序,包含了人事档案的大部分功能,做人事档案的兄弟可以看看. 本程序类型:delphi7 + Access2000 桌面数据库 初始用户名/密码:admin
💻 PAS
📖 第 1 页 / 共 5 页
字号:
begin
  close;
end;

procedure TForm_Main.N9Click(Sender:TObject);
begin
  Form_AutoSave := TForm_AutoSave.Create(self);
  Form_AutoSave.ShowModal;
  Form_AutoSave.Free;
end;

//=========================================
//定义职工表的右键菜单状态
//=========================================

procedure TForm_Main.DBGrid1CellClick(Column:TColumn);
begin
  if ADOQDBGrid.eof then
  begin
    PMEmployeeBeginning;
  end
  else
  begin
    PMEmployeeOK;
  end;
end;

procedure TForm_Main.AddNewEmployeeClick(Sender:TObject);
begin
  MainMenu_AddNewEmployeeClick(Sender);
end;

procedure TForm_Main.TBsystemsetClick(Sender:TObject);
begin
  N1Click(Sender);
end;

//=========================================
//删除一个职工及其相关的资料
//=========================================

procedure TForm_Main.DeleteEmployeeClick(Sender:TObject);
var
  SelectEmployeeID:string;
begin
  if not (ADOQDBGrid.RecordCount > 0) then
  begin
    showmessage('当前没有选中的员工记录!');
    exit;
  end
  else
    if ((MessageDlg('删除职工:' + ADOQDBGrid.FieldValues['Employee_Name'] +
    ' 将会删除其关联的一些数据,您确实要如此操作吗?', mtConfirmation,
    [mbYes, mbNo], 0)) = mrYes) then
  begin
    SelectEmployeeID := ADOQDBGrid.FieldValues['Employee_ID']; //获取员工ID
    ADOQDBGrid.Delete; //在员工表中删除该员工;
    //删除该员工相关的记录
    try
      with ADOQ1 do
      begin
        //删除请假表中相关记录
        SQL.Clear;
        sql.Add('delete * from Leave');
        sql.Add('where Leave.Leave_EmployeeID=''' + SelectEmployeeID + '''');
        ExecSQL;
        //删除调动表中相关记录
        SQL.Clear;
        sql.Add('delete * from MoveTo');
        sql.Add('where MoveTo.MT_EmployeeID=''' + SelectEmployeeID + '''');
        ExecSQL;
        //删除家庭成员表中相关记录
        SQL.Clear;
        sql.Add('delete * from Family');
        sql.Add('where Family.Family_EmployeeID=''' + SelectEmployeeID + '''');
        ExecSQL;
        //删除工作经历表中相关记录
        SQL.Clear;
        sql.Add('delete * from WorkStoy');
        sql.Add('where WorkStoy.WS_EmployeeID=''' + SelectEmployeeID + '''');
        ExecSQL;
        //删除离职表中相关记录
        SQL.Clear;
        sql.Add('delete * from Abdicate');
        sql.Add('where Abdicate.Abdicate_EmployeeID=''' + SelectEmployeeID +
          '''');
        ExecSQL;
        //删除奖惩表中相关记录
        SQL.Clear;
        sql.Add('delete * from AwardAndPenalize');
        sql.Add('where AwardAndPenalize.AP_EmployeeID=''' + SelectEmployeeID +
          '''');
        ExecSQL;
      end;
    except
      beep;
      showmessage('删除资料失败');
    end;
  end;
end;

//=========================================
//编辑当前职工的调动表
//=========================================

procedure TForm_Main.MoveToDeptClick(Sender:TObject);
begin
  if not (ADOQDBGrid.RecordCount > 0) then
  begin
    showmessage('当前没有选中的员工记录!');
    exit;
  end
  else
  begin
    form_MoveTo := Tform_MoveTo.Create(self);
    //传送职工编号
    form_MoveTo.edit1.Text := ADOQDBGrid.FieldValues['employee_id'];
    //职工的编号不能改
    form_MoveTo.edit1.Enabled := false;
    form_MoveTo.Caption := '编辑职工:' + ADOQDBGrid.FieldValues['employee_Name']
      + ' 的调动表';
    form_MoveTo.ComboBox1.Text := ADOQDBGrid.FieldValues['employee_FirstDept'];
    form_MoveTo.ComboBox2.Text := ADOQDBGrid.FieldValues['employee_SecondDept'];
    form_MoveTo.ShowModal;
    form_MoveTo.Free;
  end;
end;

//=========================================
//定义职工表的右键菜单状态
//=========================================

procedure TForm_Main.MoveOtherDeptClick(Sender:TObject);
begin
  if not (ADOQDBGrid.RecordCount > 0) then
  begin
    showmessage('当前没有选中的员工记录!');
    exit;
  end
  else
  begin
    Form_Transfer := TForm_Transfer.Create(self);
    Form_Transfer.Edit1.Text := ADOQDBGrid.FieldValues['Employee_ID'];
    Form_Transfer.Edit2.Text := ADOQDBGrid.FieldValues['Employee_Name'];
    Form_Transfer.Edit3.Text := ADOQDBGrid.FieldValues['Employee_FirstDept'] +
      '------'
      + ADOQDBGrid.FieldValues['Employee_SecondDept'];
    Form_Transfer.ShowModal;
    Form_Transfer.Free;
  end;
end;

procedure TForm_Main.LeaveClick(Sender:TObject);
begin
  if not (ADOQDBGrid.RecordCount > 0) then
  begin
    showmessage('当前没有选中的员工记录!');
    exit;
  end
  else
  begin
    form_Leave := Tform_Leave.Create(self);
    //传送职工编号
    form_Leave.edit1.Text := ADOQDBGrid.FieldValues['employee_id'];
    //职工的编号不能改
    form_Leave.edit1.Enabled := false;
    form_Leave.Caption := '编辑职工:' + ADOQDBGrid.FieldValues['employee_Name']
      + ' 的假期表';
    form_Leave.ShowModal;
    form_Leave.Free;
  end;

end;

procedure TForm_Main.AllEmployeeNumberClick(Sender:TObject);
begin
  showmessage('当前共有职工' + inttostr(ADOQDBGrid.RecordCount) + ' 人');
end;

//=========================================
//编辑职工资料
//=========================================

procedure TForm_Main.EditEmployeeClick(Sender:TObject);
var
  buf:TMemoryStream; //存放图片的内存流
begin
  if ADOQDBGrid.RecordCount > 0 then
  begin
    form_employee := TForm_employee.Create(self);
    form_employee.Caption := '当前编辑职工:' +
      ADOQDBGrid.FieldValues['Employee_Name'];
    //载入员工数据
    try
      with ADOQDBGrid do
      begin
        form_employee.edit1.Text := FieldValues['employee_id'];

        form_employee.edit2.text := FieldValues['employee_name'];

        form_employee.Csex.Text := FieldValues['employee_sex'];

        form_employee.CEmployee_FirstDept.Text :=
          FieldValues['employee_FirstDept'];

        form_employee.CEmployee_SecondDept.Text :=
          FieldValues['employee_SecondDept'];

        form_employee.CEmployee_folk.Text := FieldValues['employee_folk'];

        form_employee.DateTime1.Date :=
          StrToDate(FieldValues['employee_birthday']);

        form_employee.edit3.text := FieldValues['employee_IDcard'];

        form_employee.CEmployee_polity.Text := FieldValues['employee_polity'];

        form_employee.CEmployee_marriage.Text :=
          FieldValues['employee_marriage'];

        form_employee.CEmployee_educate.Text := FieldValues['employee_educate'];

        form_employee.CEmployee_type.Text := FieldValues['employee_type'];

        form_employee.CEmployee_post.Text := FieldValues['employee_post'];

        form_employee.DateTime2.Date :=
          StrToDate(FieldValues['employee_startworkdate']);

        form_employee.DateTime3.date :=
          StrToDate(FieldValues['employee_joindate']);

        form_employee.CEmployee_duty.text := FieldValues['employee_duty'];

        form_employee.CEmployee_banktype.text :=
          FieldValues['employee_banktype'];

        form_employee.edit4.text := FieldValues['employee_banknumber'];

        form_employee.CEmployee_paytype.Text := fieldValues['employee_paytype'];

        form_employee.edit5.Text := fieldValues['employee_endowment'];

        form_employee.edit6.Text := fieldValues['employee_medicare'];

        form_employee.CEmployee_bargain.Text := fieldValues['employee_bargain'];

        form_employee.DateTime4.Date :=
          StrToDate(FieldValues['employee_bargainstart']);

        form_employee.DateTime5.Date :=
          StrToDate(FieldValues['employee_bargainstop']);

        form_employee.edit7.Text := FieldValues['employee_tel'];

        form_employee.edit8.Text := FieldValues['employee_othertel'];

        form_employee.edit9.Text := FieldValues['employee_email'];

        form_employee.edit10.Text := FieldValues['employee_text'];

        form_employee.edit11.Text := FieldValues['employee_number'];

        form_employee.CEmployee_city.Text := FieldValues['employee_city'];

        form_employee.CEmployee_school.Text := FieldValues['employee_school'];

        form_employee.edit12.Text := FieldValues['employee_nowaddress'];

        form_employee.edit13.Text := FieldValues['employee_homepage'];

        form_employee.edit14.Text := FieldValues['employee_moblie'];

        form_employee.memo1.Text := FieldValues['employee_memo'];

        form_employee.edit15.Text := FieldValues['employee_phototype'];

        form_employee.edit1.Enabled := false;

        //显示职工相片类型
     //   showmessage('该职工相片类型: '+FieldValues['employee_PhotoType']);

        if FieldValues['employee_PhotoType'] <> 'NULL' then
        begin
          buf := TMemoryStream.Create;
          try
            buf.Position := 0;
            tblobfield(ADOQDBGrid.FieldByName('Employee_Photo')).SaveToStream(buf);
            buf.Position := 0;
            form_employee.Image1.Picture.Graphic := nil;
            if (ADOQDBGrid.FieldValues['employee_PhotoType'] = 'jpg') then
            begin
              form_employee.Image1.Picture.Graphic := Tjpegimage.create;
              form_employee.Image1.Picture.Graphic.LoadFromStream(buf);
              // buf.Free;
            end;
            if (ADOQDBGrid.FieldValues['employee_PhotoType'] = 'jpeg') then
            begin
              form_employee.Image1.Picture.Graphic := Tjpegimage.create;
              form_employee.Image1.Picture.Graphic.LoadFromStream(buf);
              // buf.Free;
            end;
            if (ADOQDBGrid.FieldValues['employee_PhotoType'] = 'bmp') then
            begin
              form_employee.Image1.Picture.Bitmap := nil;
              form_employee.Image1.Picture.Bitmap.LoadFromStream(buf);
              // buf.Free;
            end;
            buf.Free;
          except
            showmessage('载入图片不成功,请检查是否是JPE/BMP/JPEG类型图片');
          end;
        end;
      end;
      form_employee.ShowModal;
      form_employee.Free;
    except
      Showmessage('打开职工表失败,请检查数据库文件是否存在');
    end;
  end
  else
  begin
    showmessage('当前没有选中记录');
  end;
end;

//=========================================
//备件数据
//=========================================

procedure TForm_Main.ToolButton23Click(Sender:TObject);
begin
  Form_DataBak := TForm_DataBak.Create(self);
  Form_DataBak.Button1.Caption := '开始备份';
  Form_DataBak.Caption := '备份数据';
  Form_DataBak.ShowModal;
  Form_DataBak.Free;
end;

//=========================================
//还原数据
//=========================================

procedure TForm_Main.ToolButton24Click(Sender:TObject);
begin
  //关闭数据库连接
  ADOQDBGrid.Close;
  ADOC1.Connected := false;

  Form_DataBak := TForm_DataBak.Create(self);
  Form_DataBak.Button1.Caption := '开始还原';
  Form_DataBak.Caption := '还原数据';
  Form_DataBak.ShowModal;
  Form_DataBak.Free;

  //打开数据库连接
  ADOC1.Connected := true;
  ADOQDBGrid.Close;
  ADOQDBGrid.Open;
  FormShow(sender);
end;

procedure TForm_Main.ToolButton26Click(Sender:TObject);
begin
  close;
end;

//=========================================
//处理部门树选择响应
//=========================================

procedure TForm_Main.dept_TreeClick(Sender:TObject);
var
  PtrMyData:PMyData;
  FirstDeptID:integer;
  SecondDeptID:integer;
  CourNode:TTreeNode;
begin
  RunStartTime;
  //初始化部门名称
  CourNode := Dept_Tree.Selected;
  //  showmessage('你当前选中的目录为:'+inttostr(CourNode.Level));
  case CourNode.Level of
    //如果选中的是根目录,则显示全部职工(离职除外);
    0:
      begin
        with ADOQDBGrid do
        begin
          close;
          SQL.Clear;
          SQL.Add('SELECT * FROM Employee');
          SQL.Add('WHERE  Employee_Type<>''' + '辞职' + '''');
          open;
          label2.Caption := '本单位现总共有 ' + inttostr(ADOQDBGrid.RecordCount)
            + ' 位职工';
          StatusBar1.Panels[5].Text := '载入全体在职职工耗时: ' +
            inttostr(RunStoptime) + ' 毫秒';
        end;
      end;
    //如果选中的是一级部门目录,则显示当前部门全部职工(离职除外);
    1:
      begin
        PtrMyData := new(PMyData);
        FirstDeptID := (PMyData(CourNode.Data))^.id;
        try
          with TabDept do
          begin
            close;
            open;
            first;
            while not eof do
            begin
              if fieldValues['Dept_ID'] = FirstDeptID then
              begin
                FirstDeptName := FieldValues['Dept_Name'];
                last;
              end;
              next;
            end;
            close;
          end;
        except
          beep;
          showmessage('打开部门表失败,请检查数据库文件是否存在');
        end;
        try
          with ADOQDBGrid do
          begin
            close;
            SQL.Clear;
            SQL.Add('Select * from Employee');
            SQL.Add('Where Employee_FirstDept=''' + FirstDeptName + '''');
            SQL.Add('And Employee_Type<>''' + '辞职' + '''');
            open;
            label2.Caption := FirstDeptName + ' 现总共有 ' +
              inttostr(ADOQDBGrid.RecordCount) + ' 位职工';
            StatusBar1.Panels[5].Text := '载入' + FirstDeptName + '职工耗时: '
              + inttostr(RunStoptime) + ' 毫秒';
          end;
        except
          beep;
          showmessage('打开职工表失败,请检查数据库文件是否存在');
          exit;
        end;
      end;
    2:
      begin
        PtrMyData := new(PMyData);
        SecondDeptID := (PMyData(CourNode.Data))^.id;
        with TabDept do
        begin
          close;
          open;
          first;
          while not eof do
          begin
            if fieldValues['Dept_ID'] = SecondDeptID then
            begin
              SecondDeptName := FieldValues['Dept_Name'];
              last;
            end;

⌨️ 快捷键说明

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