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

📄 employee.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, StdCtrls, Mask, ExtCtrls, Grids, DBGrids, ComCtrls,
  Buttons, DB, ADODB, ExtDlgs, jpeg;

type
  TForm_employee = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGrid1: TDBGrid;
    TabSheet2: TTabSheet;
    palClient: TPanel;
    Label10: TLabel;
    Label2: TLabel;
    Label1: TLabel;
    Label4: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label11: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label17: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBE_Name: TDBEdit;
    DBE_ID: TDBEdit;
    DBE_Sex: TDBComboBox;
    DBE_IDCard: TDBEdit;
    DBEdit_Emil: TDBEdit;
    DBEdit_Pho: TDBEdit;
    DBEdit_Mob: TDBEdit;
    DBEdit_Adr: TDBEdit;
    DBEdit_Pro: TDBEdit;
    DBEdit_Area: TDBEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    Panel3: TPanel;
    AddBtn: TBitBtn;
    EdtBtn: TBitBtn;
    DelBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    Label3: TLabel;
    ADOQ_employee: TADOQuery;
    TabSheet3: TTabSheet;
    GroupBox1: TGroupBox;
    Label7: TLabel;
    Edit1: TEdit;
    GroupBox3: TGroupBox;
    Label14: TLabel;
    DBLookupComboBox3: TDBLookupComboBox;
    RadioGroup1: TRadioGroup;
    GroupBox2: TGroupBox;
    WktStart: TDateTimePicker;
    WktEnd: TDateTimePicker;
    DS_employee_Q: TDataSource;
    ADOQ_employeeempname: TStringField;
    ADOQ_employeesex: TStringField;
    ADOQ_employeedepid: TIntegerField;
    ADOQ_employeedutyid: TIntegerField;
    ADOQ_employeegrade: TStringField;
    ADOQ_employeetelephone: TStringField;
    ADOQ_employeemobile: TStringField;
    ADOQ_employeeworktime: TDateTimeField;
    ADOQ_employeeemail: TStringField;
    ADOQ_employeeidcard: TStringField;
    ADOQ_employeeborn: TDateTimeField;
    ADOQ_employeeprovince: TStringField;
    ADOQ_employeearea: TStringField;
    ADOQ_employeeaddress: TStringField;
    BitBtn_id: TSpeedButton;
    DBComboBox_grade: TDBComboBox;
    ADOT_dep: TADOTable;
    ADOT_depdepid: TAutoIncField;
    ADOT_depdepname: TStringField;
    ADOT_duty: TADOTable;
    ADOT_dutydutyid: TAutoIncField;
    ADOT_dutydutyname: TStringField;
    DBE_born: TDBEdit;
    DBE_WKtime: TDBEdit;
    ADOQ_employeedepname: TStringField;
    ADOQ_employeedutyname: TStringField;
    BitBtn2: TBitBtn;
    DS_dep_T: TDataSource;
    DS_duty_T: TDataSource;
    LocateBtn: TBitBtn;
    ADOQ_employeeid: TAutoIncField;
    ADOQtmp_emp: TADOQuery;
    ADOQ_employeeempid: TIntegerField;
    ADOQ_employeestate: TBooleanField;
    Label18: TLabel;
    Label19: TLabel;
    BitBtn1: TBitBtn;
    RadioGroup2: TRadioGroup;
    Bevel4: TBevel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    BitBtn_Excel: TBitBtn;
    ADOQ_employeephoto: TBlobField;
    DBNavigator1: TDBNavigator;
    OpenPictureDialog1: TOpenPictureDialog;
    Panel2: TPanel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    DBImage1: TDBImage;
    procedure AddBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SaveBtnClick(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure DBE_IDCardKeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit_PhoKeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure LocateBtnClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBE_SexKeyPress(Sender: TObject; var Key: Char);
    procedure DBE_SexDblClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure ADOQ_employeeAfterInsert(DataSet: TDataSet);
    procedure ADOQ_employeeBeforePost(DataSet: TDataSet);
    procedure DS_employee_QDataChange(Sender: TObject; Field: TField);
    procedure BitBtn_idClick(Sender: TObject);
    procedure EdtBtnClick(Sender: TObject);
    procedure BitBtn_ExcelClick(Sender: TObject);
    procedure ADOQ_employeeAfterScroll(DataSet: TDataSet);
    procedure DBImage1DblClick(Sender: TObject);
    procedure DS_employee_QStateChange(Sender: TObject);
  private
    { Private declarations }
    procedure refreshdb;
    function Get_empid(fieldname, tablename:string): integer;
  public
    { Public declarations }
  end;

var
  Form_employee: TForm_employee;

implementation
uses sharevar, sharefun, data, Main;
{$R *.dfm}

//自动生成Adotable表的ID编号 (且保证表的ID数据不会零散)

function TForm_employee.Get_empid(fieldname, tablename:string): integer;
var
tmpID, RecCou ,i :integer;
begin
  result:=0;
  with ADOQtmp_emp do
  begin
    Close; SQL.Clear;
    SQL.Add('select '+fieldname+' from '+tablename+' order by '+fieldname);
    try
      Open; RecCou:=recordcount;
      if RecCou<1 then
      begin
          result:=1;
          Close; exit;
      end;
      tmpID:=1; first;
      for i:=0 to RecCou-1 do
      begin
        if not locate(fieldname,tmpID,[loCaseInsensitive]) then
        begin
          result:=tmpID;
          Close; exit;
        end;
        tmpID:=succ(tmpID);
      end;
    except
      MsgErr(handle, '提示:   自动生成员工编号失败!');
      exit;
    end;
  end;
  result:=tmpID;
end;

procedure TForm_employee.refreshdb;
begin
  if not ADOT_dep.Active then ADOT_dep.Open;
  if not ADOT_duty.Active then ADOT_duty.Open;
  with ADOQ_employee do
  begin
      try
         close;
         sql.Strings[1]:='where state=1';
         sql.Strings[2]:='ORDER BY empid';
         execsql;
         open;
      except
         MsgErr(handle,'刷新数据库失败(Employee_Q)!');
      end;
  end;
end;

procedure TForm_employee.FormCreate(Sender: TObject);
begin
  //显示窗体布局
  if curAdmin.team_power[0][7]='0' then
  begin
      BitBtn1.Visible :=false;
      BitBtn1.Enabled:=false;
      BitBtn_Excel.Left:=532;
      Bevel4.Width:=305;
      Bevel1.Width:=208;
      Bevel2.Width:=144;
      addbtn.Left:=16;
      edtbtn.Left:=110;
      delbtn.Left:=206;
      savebtn.Left:=322;
      cancelbtn.Left:=421;
      BitBtn_Excel.Left:=532;
  end
  else
  begin
      BitBtn1.Visible :=true;
      BitBtn1.Enabled:=true;
  end;
  try
    if not ADOT_dep.Active then ADOT_dep.Open;
    if not ADOT_duty.Active then ADOT_duty.Open;
    if not ADOQ_employee.Active then ADOQ_employee.Open;
  except
    MsgErr(handle,'打开人员信息数据库失败!');
  end;
  DBGrid1.DataSource:=DS_employee_Q;
  refreshdb;
end;

procedure TForm_employee.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  try
    if ADOT_dep.Active then ADOT_dep.Close;
    if ADOT_duty.Active then ADOT_duty.Close;
    if ADOQ_employee.Active then ADOQ_employee.close;
  except
      MsgErr(handle,'关闭人员信息数据库失败!');
  end;
  action:=cafree;
end;

procedure TForm_employee.AddBtnClick(Sender: TObject);
begin
  PageControl1.ActivePageIndex:=1;
  if ADOQ_employee.State in [dsinsert,dsedit] then exit;
  ADOQ_employee.Append;
  ADOQ_employee.FieldValues['empid']:=Get_empid('empid','employee');
  DBE_Name.SetFocus;
end;

procedure TForm_employee.EdtBtnClick(Sender: TObject);
begin
  if ADOQ_employee.State in [dsinsert,dsedit] then exit;
  if ADOQ_employee.RecordCount<1 then exit;
  if not ADOQ_employee.FieldValues['state'] then
  begin
    MsgErr(handle,'该员工已离职致员工信息不能更改!');
    exit;
  end;
  PageControl1.ActivePageIndex:=1;
  ADOQ_employee.edit;
  DBE_Name.SetFocus;
end;

procedure TForm_employee.DelBtnClick(Sender: TObject);
var
temp_id, temp_name: string;
begin
  with ADOQ_employee do
  begin
    if RecordCount<1 then exit;
    if State in [dsinsert,dsedit] then exit;
    temp_id:=fieldvalues['empid'];
    temp_name:=fieldvalues['empname'];
    if MsgQst(handle,'确定删除编号为  ['+temp_id+']  的人员 ['+temp_name+'] 的信息吗?') =IDNO then  exit;
    try
      delete;
    except
      MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
      exit;
    end;
  end;
end;

procedure TForm_employee.CancelBtnClick(Sender: TObject);
begin
  if not (ADOQ_employee.State in [dsedit,dsinsert]) then exit;
  ADOQ_employee.Cancel;
end;

procedure TForm_employee.SaveBtnClick(Sender: TObject);
var
temp_id, temp_name, info : string;
begin
  with ADOQ_employee do
  begin
    if not (State in [dsinsert,dsedit]) then exit;
    temp_id:=trim(DBE_ID.Text);
    temp_name:=trim(dbe_name.Text);
    if (State in [dsinsert]) and (temp_id='') then
    begin
      showmessage('人员编号不能为空!!!');
      DBE_ID.SetFocus;
      exit;
    end;
    if temp_name='' then
    begin
      showmessage('人员姓名不能为空!!!');
      dbe_name.SetFocus;
      exit;
    end;
    if trim(DBComboBox_grade.Text)='' then
    begin
      Msgok(handle,'请选择人员工资计算方式!');
      DBComboBox_grade.SetFocus;
      exit;
    end;
    if trim(DBLookupComboBox1.Text)='' then
    begin
      Msgok(handle,'请指定当前员工所属的部门!');
      DBLookupComboBox1.SetFocus;
      exit;
    end;
    if trim(DBLookupComboBox2.Text)='' then
    begin
      Msgok(handle,'请指定当前员工的职务!');
      DBLookupComboBox2.SetFocus;
      exit;
    end;

    if trim(DBE_Sex.Text)='' then
    begin

⌨️ 快捷键说明

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