📄 employee.pas
字号:
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 + -