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

📄 employee_backup.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Employee_Backup;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, Buttons, ValEdit,
  ComCtrls, Spin, DateUtils, Mask, DBCtrls, RpCon, RpConDS, RpBase,
  RpSystem, RpDefine, RpRave;

type
  TForm_employee_Backup = class(TForm)
    ADOQtmp: TADOQuery;
    DS_emp: TDataSource;
    ADOQ_ADDEmp_LZ: TADOQuery;
    ADOQ_search: TADOQuery;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid: TDBGrid;
    Panel6: TPanel;
    Label5: TLabel;
    ComboBox_ID: TComboBox;
    DS_Emp_backup: TDataSource;
    BitBtn_locate: TBitBtn;
    BitBtn3: TBitBtn;
    PrtBtn: TBitBtn;
    edtname: TEdit;
    Label11: TLabel;
    GroupBox5: TGroupBox;
    Label18: TLabel;
    Label19: TLabel;
    sdate: TDateTimePicker;
    edate: TDateTimePicker;
    ProgressBar1: TProgressBar;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    emp_num: TLabel;
    ListEditor1: TValueListEditor;
    SaveBtn: TBitBtn;
    ExtBtn: TBitBtn;
    Panel5: TPanel;
    Panel3: TPanel;
    AllBtn: TSpeedButton;
    SigBtn: TSpeedButton;
    DelSigBtn: TSpeedButton;
    DelAllBtn: TSpeedButton;
    GroupBox2: TGroupBox;
    Panel4: TPanel;
    RadioGroup1: TRadioGroup;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    SearchBtn: TBitBtn;
    ComboBox_dep: TComboBox;
    ComboBox_duty: TComboBox;
    DBGrid2: TDBGrid;
    ADOQ_employee: TADOQuery;
    ADOQ_Emp_Backup: TADOQuery;
    Label1: TLabel;
    Edt_ZZempid: TEdit;
    Label_Display: TLabel;
    Panel7: TPanel;
    RvProject1: TRvProject;
    RvSystem1: TRvSystem;
    Rv_Emp_backup: TRvDataSetConnection;
    ADOQ_Emp_Backupid: TIntegerField;
    ADOQ_Emp_BackupLZ_empid: TIntegerField;
    ADOQ_Emp_BackupZZ_empid: TIntegerField;
    ADOQ_Emp_Backupempname: TStringField;
    ADOQ_Emp_Backupsex: TStringField;
    ADOQ_Emp_Backupdepname: TStringField;
    ADOQ_Emp_Backupdutyname: TStringField;
    ADOQ_Emp_BackupLZ_date: TDateTimeField;
    ADOQ_Emp_Backupopername: TStringField;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AllBtnClick(Sender: TObject);
    procedure SigBtnClick(Sender: TObject);
    procedure DelSigBtnClick(Sender: TObject);
    procedure DelAllBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SearchBtnClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure ListEditor1StringsChange(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure BitBtn_locateClick(Sender: TObject);
    procedure PrtBtnClick(Sender: TObject);
  private
    { Private declarations }
    s_date, e_date: string;
  public
    { Public declarations }
  end;

var
  Form_employee_Backup: TForm_employee_Backup;

implementation
uses sharefun, sharevar,data;

{$R *.dfm}

procedure TForm_employee_Backup.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  action:=cafree;
end;                                           

procedure TForm_employee_Backup.AllBtnClick(Sender: TObject);
var tmpstr, tmpstr2: string;
is_LZ_flag:boolean;
begin
  if not ADOQ_employee.Active then exit;
  if ADOQ_employee.RecordCount =0 then exit;
  with ADOQ_employee do
  begin
    First;
    while not eof do
    begin
        tmpstr:=trim(ADOQ_employee.FieldValues['empname']);
        tmpstr2:=inttostr(ADOQ_employee.FieldValues['empid']);
        with ADOQtmp do
        begin
          //如果存在未验收的工序料时,提出
          close;sql.clear;
          sql.Add('select empid from outbom_log where qbfl_flag=0 and empid=:v_oldempid ');
          parameters.ParamValues['v_oldempid']:=ADOQ_employee.FieldValues['empid'];
          try
            open;
          except
          end;
          is_LZ_flag:=recordcount<1
        end;
        if (tmpstr<>ListEditor1.Values[tmpstr2]) and is_LZ_flag then
        ListEditor1.InsertRow(tmpstr2,tmpstr,false);
        next;
    end;
  end;
end;

procedure TForm_employee_Backup.SigBtnClick(Sender: TObject);
var tmpstr, tmpstr2: string;
begin
  if not ADOQ_employee.Active then exit;
  if ADOQ_employee.RecordCount =0 then exit;
  tmpstr:=trim(ADOQ_employee.FieldValues['empname']);
  tmpstr2:=inttostr(ADOQ_employee.FieldValues['empid']);
  if tmpstr=ListEditor1.Values[tmpstr2] then
  begin
        msgerr(handle,'员工编号:'+tmpstr2+', 姓名:['+tmpstr+'] 已经存在!');
        exit;
  end;
  
  //如果存在未验收的工序料时,提出
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.Add('select empid from outbom_log where qbfl_flag=0 and empid=:v_oldempid ');
    parameters.ParamValues['v_oldempid']:=ADOQ_employee.FieldValues['empid'];
    try
      open;
    except
    end;
    if recordcount>0 then
    begin
      MsgErr(handle,'该人员有未退工序料,请先退料!');
      abort; exit;
    end;
  end;
  ListEditor1.InsertRow(tmpstr2,tmpstr,false);
end;

procedure TForm_employee_Backup.DelSigBtnClick(Sender: TObject);
begin
  if ListEditor1.Strings.Count=0 then exit;
  if msgqst(handle,'确定删除编号:['+ListEditor1.Cells[0,ListEditor1.Row]+'], 姓名:['+ListEditor1.Cells[1,ListEditor1.Row]+']的数据码?')=idno then exit;
  ListEditor1.Strings.Delete(ListEditor1.Row-1) ;
end;

procedure TForm_employee_Backup.DelAllBtnClick(Sender: TObject);
begin
  if ListEditor1.Strings.Count=0 then exit;
  if msgqst(handle,'确定删除当前选择的所有人员数据吗?')=idno then exit;
  ListEditor1.Strings.Clear;
end;

procedure TForm_employee_Backup.SaveBtnClick(Sender: TObject);
var
tmpstr:string;
i, emp_num_s, emp_num_e,
empid_int, //离职前员工编号
tmp_empid:integer; //离职前员工流水号
emp_BLflag:boolean;
tmp_id, maxid:integer;
begin
  if ListEditor1.Strings.Count=0 then exit;
  emp_num_s:=ListEditor1.Strings.Count;
  emp_num_e:=0;
  tmpstr:='确认将当前所选择的: ['+inttostr(ListEditor1.Strings.count)+'] 位员工';
  tmpstr:=tmpstr+'全部离职吗?'+#13+#13+'(注意:人员离职后,将无法还原人员信息!)';
  if msgqst(handle,tmpstr)=idno then exit;
  application.ProcessMessages;
  //得到当前操作员的ID号
  if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
  begin
    MsgErr(handle,'人员离职失败,请重试--ALL!');
    exit;
  end;

///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
  //初始化进程条
  ProgressBar1.Max:=ListEditor1.Strings.Count;
  ProgressBar1.Position:=0;
  Label_Display.Visible:=true;
  application.ProcessMessages;
  //利用循环人员离职
  for i:=1 to ListEditor1.Strings.Count do
  begin
  //1.找到离职人员的最大编码
  GetMaxID(datamod.ADOCon,'employee','empid',maxid);
  if maxid<500000 then maxid:=500000;
  ProgressBar1.Position:=ProgressBar1.Position+1;
  application.ProcessMessages;
  
  //1.1得到待离职人员的信息
  with ADOQ_search do
  begin
    emp_BLflag:=false;
    close; sql.Clear;
    sql.Add('select a.*,b.depname,c.dutyname from employee a,department b, duty c');
    sql.Add('where a.depid=b.depid and a.dutyid=c.dutyid and a.empid=:V_empid');
    parameters.ParamValues['V_empid']:=strtoint(ListEditor1.Cells[0,i]);
    try
      execsql; open;
    except
      if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败1.1!'
      else tmpstr:='员工离职失败,请重试--1.1!';
      inc(emp_num_e);
      msgerr(handle,tmpstr);
      if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
      break; exit;
    end;
    if recordcount=0 then
    begin
//      Msgerr(handle,'没找到编号为:['+ListEditor1.Cells[0,i])+'] 的人员信息!');
      if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败1.1!'
      else tmpstr:='员工离职失败,请重试--1.1!';
      msgerr(handle,tmpstr);
      inc(emp_num_e);
      if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
      break; exit;
    end;
    empid_int:=ADOQ_search.FieldValues['empid'];
    tmp_empid:=adoq_search.FieldValues['id'];
  end;

  //数据提交开始
  emp_BLflag:=true;
  datamod.ADOCon.BeginTrans;


  //2.更改人员编码
  with ADOQtmp do
  begin
      close;sql.clear;
      sql.add('insert into employee(empid,empname,sex,depid,dutyid,grade,telephone,mobile,worktime,email,idcard,born,province,area,address,photo,state)');  //
      sql.add('values(:empid,:empname,:sex,:depid,:dutyid,:grade,:telephone,:mobile,:worktime,:email,:idcard,:born,:province,:area,:address,:photo,0)'); //
      parameters.ParamValues['empid']:=maxid;
      parameters.ParamValues['empname']:=ADOQ_search.FieldValues['empname'];
      parameters.ParamValues['sex']:=ADOQ_search.FieldValues['sex'];
      parameters.ParamValues['depid']:=ADOQ_search.FieldValues['depid'];
      parameters.ParamValues['dutyid']:=ADOQ_search.FieldValues['dutyid'];
      parameters.ParamValues['grade']:=ADOQ_search.FieldValues['grade'];
      parameters.ParamValues['telephone']:=ADOQ_search.FieldValues['telephone'];
      parameters.ParamValues['mobile']:=ADOQ_search.FieldValues['mobile'];
      parameters.ParamValues['worktime']:=ADOQ_search.FieldValues['worktime'];
      parameters.ParamValues['email']:=ADOQ_search.FieldValues['email'];
      parameters.ParamValues['idcard']:=ADOQ_search.FieldValues['idcard'];
      parameters.ParamValues['born']:=ADOQ_search.FieldValues['born'];
      parameters.ParamValues['province']:=ADOQ_search.FieldValues['province'];
      parameters.ParamValues['area']:=ADOQ_search.FieldValues['area'];
      parameters.ParamValues['address']:=ADOQ_search.FieldValues['address'];
//      parameters.ParamValues['photo']:=ADOQ_search.FieldValues['photo'];
      //传送人员相片
      if not ADOQ_search.FieldByName('photo').IsNull then
      Parameters.ParamByName('photo').LoadFromStream(CreateBlobStream(ADOQ_search.FieldByName('photo'),bmRead),ftGraphic);
      try
        execsql;
      except
        if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败2.1!'
        else tmpstr:='员工离职失败,请重试--2.1!';
        MsgErr(handle,tmpstr);
        inc(emp_num_e);
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        emp_BLflag:=false; break; exit;
      end;
  end;  //2.更改人员编码

  //3.更改与当前人员相关的数据
  //3.1处理表outbom_log
  with ADOQtmp do
  begin
      close;sql.clear;
      sql.Add('update outbom_log set empid=:v_empid where empid=:v_oldempid');
      parameters.ParamValues['v_empid']:=maxid;
      parameters.ParamValues['v_oldempid']:=ADOQ_search.FieldValues['empid'];
      try
        execsql;
      except
        if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败3.1!'
        else tmpstr:='员工离职失败,请重试--3.1!';
        MsgErr(handle,tmpstr);
        inc(emp_num_e);
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        emp_BLflag:=false; break; exit;
      end;
  end;

  //3.3处理表brrow
  with ADOQtmp do
  begin
      close;sql.clear;
      sql.Add('update brrow set empid=:v_empid where empid=:v_oldempid');
      parameters.ParamValues['v_empid']:=maxid;
      parameters.ParamValues['v_oldempid']:=ADOQ_search.FieldValues['empid'];
      try
        execsql;
      except
        if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败3.3!'
        else tmpstr:='员工离职失败,请重试--3.3!';
        MsgErr(handle,tmpstr);
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        inc(emp_num_e);
        MsgErr(handle,tmpstr);
        emp_BLflag:=false; break; exit
      end;
  end;

  //3.4处理表ck_material
  with ADOQtmp do
  begin
      close;sql.clear;
      sql.Add('update ck_material set empid=:v_empid where empid=:v_oldempid');
      parameters.ParamValues['v_empid']:=maxid;
      parameters.ParamValues['v_oldempid']:=ADOQ_search.FieldValues['empid'];
      try
        execsql;
      except
        if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败3.4!'
        else tmpstr:='员工离职失败,请重试--3.4!';
        MsgErr(handle,tmpstr);
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        inc(emp_num_e);
        MsgErr(handle,'人员离职处理失败3.4!');
        emp_BLflag:=false; break; exit;
      end;
  end;

  //3.5处理表earn_abs
  with ADOQtmp do
  begin
      close;sql.clear;
      sql.Add('update earn_abs set empid=:v_empid where empid=:v_oldempid');
      parameters.ParamValues['v_empid']:=maxid;
      parameters.ParamValues['v_oldempid']:=ADOQ_search.FieldValues['empid'];
      try
        execsql;
      except
        if i>1 then tmpstr:=tmpstr+#13+#13+'     截止到编号为:['+ListEditor1.Cells[0,i-1]+'] 人员离职成功,剩下其它失败3.5!'
        else tmpstr:='员工离职失败,请重试--3.5!';
        MsgErr(handle,tmpstr);
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        inc(emp_num_e);
        MsgErr(handle,tmpstr);
        emp_BLflag:=false; break; exit;
      end;
  end;

⌨️ 快捷键说明

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