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