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

📄 umain.pas

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

procedure TForm_Main.PMEmployeeOK;
begin
  //职工表右键菜单
  AddNewEmployee.Enabled := true;
  EditEmployee.Enabled := true;
  DeleteEmployee.Enabled := true;
  MoveOtherDept.Enabled := true;
  Family.Enabled := true;
  Leave.Enabled := true;
  Award.Enabled := true;
  Cultivate.Enabled := true;
  MoveToDept.Enabled := true;
  WorkStoy.Enabled := true;
  AllEmployeeNumber.Enabled := true;
  OutTxt.Enabled := true;
  OutEXCEL.Enabled := true;
  OutHTML.Enabled := true;
  //主菜单-编辑
  MainMenu_AddNewEmployee.Enabled := true;
  MainMenu_EditEmployee.Enabled := true;
  MainMenu_DeleteEmployee.Enabled := true;
  MainMenu_MoveOtherDept.Enabled := true;
  MainMenu_Family.Enabled := true;
  MainMenu_Leave.Enabled := true;
  MainMenu_Award.Enabled := true;
  MainMenu_Plant.Enabled := true;
  MainMenu_MoveToDept.Enabled := true;
  MainMenu_WorkStoy.Enabled := true;
  MainMenu_AllEmployeeNumber.Enabled := true;
  MainMenu_OutTxt.Enabled := true;
  MainMenu_OutEXCEL.Enabled := true;
  MainMenu_OutHTML.Enabled := true;
end;

procedure TForm_Main.FormCreate(Sender:TObject);
var
  systemName:string;
begin
  //获取程序执行文件路径
  AppPath := ExtractFilePath(Application.ExeName);
  //初始化选中部门名称
  FirstDeptName := '';
  SecondDeptName := '';
  //连接数据库
  try
    ADOC1.Connected := false;
    ADOC1.Connected := TRUE;
  except
    beep;
    showmessage('数据库连接失败,程序即将关闭');
    close;
  end;
  //显示登录窗口
  Form_UserLogin := TForm_UserLogin.Create(self);
  Form_UserLogin.ShowModal;
  username := Form_UserLogin.username;
  form_userlogin.Free;
  //开始计算载入时间
  RunStartTime;
  // userName := Form_UserLogin.username;
   //初始化职工表右键菜单
  PMEmployeeBeginning;
  with TabSystem do
  begin
    close;
    open;
    first;
    systemname := fieldByName('systemname').AsString;
    close;
  end;
  Form_main.Caption := systemName;
  ComboBox1.Clear;
  ComboBox1.Items.Add('按职工编号 查询');
  ComboBox1.Items.Add('按姓名模糊查询');
  ComboBox1.Text := '按工号查询';
end;

//=========================================
// 载入部门树
//=========================================

procedure TForm_Main.LoadDataForDeptTree;
var
  RootNode, FirstDeptNode, SecondDeptNode:TTreeNode;
  FirstDeptName, SecondDeptname:string;
  PFirstDeptdata:PMyData;
  PSecondDeptdata:PMyData;
begin
  Dept_tree.Color := RGB($FF, $FF, $FF);
  Dept_tree.Items.Clear;
  //载入目录树根名称;
  with TabSystem do
  begin
    close;
    open;
    first;
    Corpname := fieldByName('CorpName').AsString; //我是从数据库读公司名称的
    close;
  end; // with
  RootNode := Dept_Tree.Items.Add(nil, Corpname);
  RootNode.ImageIndex := 59;
  RootNode.SelectedIndex := 59;
  //加载一级部门
  with Tabdept do
  begin
    close;
    open;
    first;
    while not eof do
    begin
      if FieldByName('dept_type').AsBoolean then
      begin
        PFirstDeptdata := new(PMyData);
        PFirstDeptdata.id := fieldByName('dept_id').AsInteger;
        PFirstDeptdata.nodetype := 0;
        FirstDeptName := FieldByName('dept_name').AsString;
        FirstDeptNode := Dept_Tree.Items.AddChildObject(RootNode, FirstDeptName,
          PFirstDeptdata);
        FirstDeptNode.ImageIndex := 48;
        FirstDeptNode.SelectedIndex := 48;
        next;
        //加载二级部门;
        with Tabdept2 do
        begin
          close;
          open;
          first;
          while not eof do
            if fieldByName('dept_upid').AsInteger = PFirstDeptdata.id then
            begin
              PSecondDeptdata := new(PMyData);
              PSecondDeptdata.id := fieldByName('dept_id').AsInteger;
              PSecondDeptdata.nodetype := 1;
              SecondDeptName := FieldByName('dept_name').AsString;
              SecondDeptNode := Dept_Tree.Items.AddChildObject(FirstDeptNode,
                SecondDeptName, PSecondDeptdata);
              SecondDeptNode.ImageIndex := 51;
              SecondDeptNode.SelectedIndex := 51;
              next;
            end
            else
              next;
          close;
        end;

      end
      else
        next;
    end;
    close;
  end; // with
  RootNode.Expanded := true; //设置根目录默认打开
end;
//================================
//设置新编号
//================================

function TForm_Main.GetNewID(var Number, idlength:integer):string;
var
  i, j:integer;
  NewEmployeeid:string;
begin
  j := length(inttostr(Number));
  NewEmployeeID := '';
  if j > Idlength then
  begin
    beep;
    showmessage('传入的参数有误,不能生成新编号');
    exit;
    result := '';
  end;
  for i := 1 to idlength - j do
  begin
    NewEmployeeID := NewEmployeeID + '0';
  end;
  NewEmployeeID := NewEmployeeID + inttostr(Number);
  result := NewEmployeeID;
end;
//==================================
// 将生成的新旧职工编号存入新旧编号表中
//==================================

procedure TForm_Main.InsertDataToNewEmployeeID(var newid, oldid:string);
begin
  try
    with ADOQ1 do
    begin
      close;
      sql.Clear;
      sql.Add('insert into NewOldSerialNumber  (NewEmployeeID,OldEmployeeID) Values ');
      sql.Add('(''' + newid + '''' + ',' + '''' + oldid + ''')');
      ExecSQL;
      close;
      //showmessage('插入成功');
    end;
  except
    beep;
    showmessage('打开新旧编号表失败');
  end;
end;

//==================================
// 修复其它关联表格中的职工编号
//==================================

procedure TForm_Main.UpdateDataToRecord(var newid, oldid:string);
begin
  //修复家庭成员表中的职工编号
  try
    with TabFamily do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('Family_Employeeid').AsString = Oldid then
          begin
            Update;
            TabFamily.edit;
            fieldbyname('Family_Employeeid').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复家庭成员表失败');
  end;
  //修复培训表中的职工编号
  try
    with TabCultivate do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('Cultivate_EmployeeID').AsString = Oldid then
          begin
            Update;
            edit;
            fieldbyname('Cultivate_EmployeeID').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复培训表失败');
  end;
  //修复奖惩表中的职工编号
  try
    with TabAward do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('AP_Employeeid').AsString = Oldid then
          begin
            Update;
            edit;
            fieldbyname('AP_Employeeid').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复奖惩表失败');
  end;
  //修复请假表中的职工编号
  try
    with TabLeave do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('Leave_Employeeid').AsString = Oldid then
          begin
            Update;
            edit;
            fieldbyname('Leave_Employeeid').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复请假表失败');
  end;
  //修复调动表中的职工编号
  try
    with TabMoveTo do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('MT_Employeeid').AsString = Oldid then
          begin
            Update;
            edit;
            fieldbyname('MT_Employeeid').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复调动表失败');
  end;
  //修复工作单位表中的职工编号
  try
    with TabWorkStoy do
    begin
      close;
      open;
      if RecordCount > 0 then
      begin
        first;
        while not eof do
        begin
          if fieldbyname('WS_Employeeid').AsString = Oldid then
          begin
            Update;
            edit;
            fieldbyname('WS_Employeeid').AsString := NewID;
            POST;
          end;
          next;
        end;
      end;
      close;
    end;
  except
    beep;
    showmessage('修复工作单位表失败');
  end;
end;

function TForm_Main.RUNstoptime:Cardinal;
begin
  FstopTime := GetTickCount;
  Result := FStopTime - FStartTime;
end;

//=========================================
// 加载按字段排序过程
//=========================================

procedure TForm_Main.Compositor(Column:TColumnEh);
var
  field_sort:string;
begin
  with Column do
  begin
    if FieldName = '' then exit;
    case Title.SortMarker of
      smNoneEh:
        begin
          Title.SortMarker := smDownEh;
          field_sort := Column.FieldName + ' ASC';
        end;
      smDownEh:field_sort := Column.FieldName + ' DESC';
      smUpEh:field_sort := Column.FieldName + ' ASC';
    end;
    try
      ADOQDBGrid.Sort := field_sort
    except
      beep;
      showmessage('排序不成功');
    end;
  end;
end;

//=========================================
//调用部门设置
//=========================================

procedure TForm_Main.N5Click(Sender:TObject);
begin
  Form_DeptSet := TForm_DeptSet.Create(self);
  Form_DeptSet.ShowModal;
  Form_DeptSet.Free;
  LoadDataForDeptTree;
end;

//=========================================
//调用系统设置
//=========================================

procedure TForm_Main.N1Click(Sender:TObject);
begin
  Form_SystemSet := TForm_SystemSet.Create(self);
  Form_SystemSet.ShowModal;
  Form_SystemSet.Free;
  LoadDataForDeptTree;
end;

//=========================================
//调用员工资料输入预设置
//=========================================

procedure TForm_Main.N6Click(Sender:TObject);
begin
  Form_PrepSet := TForm_PrepSet.Create(self);
  Form_PrepSet.ShowModal;
  Form_PrepSet.Free;
end;

//=========================================
//调用增加职工窗口
//=========================================

procedure TForm_Main.MainMenu_AddNewEmployeeClick(Sender:TObject);
begin
  form_employee := TForm_employee.Create(self);
  form_employee.Caption := '加入新职工';
  form_employee.CEmployee_FirstDept.Text := FirstDeptName;
  form_employee.CEmployee_SecondDept.Text := SecondDeptName;
  form_employee.ShowModal;
  form_employee.Free;
end;

procedure TForm_Main.N4Click(Sender:TObject);

⌨️ 快捷键说明

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