📄 hrm510_01.pas.svn-base
字号:
unit Hrm510_01;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db,
Menus, Grids, ComCtrls, ExtCtrls, ToolWin,
wwdbdatetimepicker, StdCtrls, Mask, DBCtrls, Buttons,
Bas200_01, ADODB,
dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, dxDBTLCl,
dxGrClms, ActnList, wwfltdlg, wwDialog, Wwlocate, Wwintl;
type
THrm510_01Form = class(TBas200_01Form)
Label1: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
Label6: TLabel;
DBEdit6: TDBEdit;
wwDBDateTimePicker1: TwwDBDateTimePicker;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
Edit2: TEdit;
SpeedButton1: TSpeedButton;
Edit1: TEdit;
SpeedButton2: TSpeedButton;
qryHrm130: TADOQuery;
qryHrm130H130_001: TAutoIncField;
qryHrm130H130_002: TStringField;
qryHrm130H130_003: TStringField;
qryHrm150: TADOQuery;
qryHrm150H150_001: TAutoIncField;
qryHrm150H150_002: TStringField;
qryHrm150H150_003: TStringField;
qryHrm150H130_003: TStringField;
qryHrm150H150_012: TIntegerField;
ADOQuery1H510_001: TIntegerField;
ADOQuery1H510_002: TDateTimeField;
ADOQuery1H510_003: TIntegerField;
ADOQuery1H510_004: TIntegerField;
ADOQuery1H510_005: TStringField;
ADOQuery1H130_002: TStringField;
ADOQuery1H130_003: TStringField;
ADOQuery1H130_002A: TStringField;
ADOQuery1H130_003A: TStringField;
ADOQuery1H150_002: TStringField;
ADOQuery1H150_003: TStringField;
dxDBGrid1H150_002: TdxDBGridLookupColumn;
dxDBGrid1H150_003: TdxDBGridLookupColumn;
dxDBGrid1H510_002: TdxDBGridDateColumn;
dxDBGrid1H130_002: TdxDBGridLookupColumn;
dxDBGrid1H130_003: TdxDBGridLookupColumn;
dxDBGrid1H130_002A: TdxDBGridLookupColumn;
dxDBGrid1H130_003A: TdxDBGridLookupColumn;
dxDBGrid1H510_005: TdxDBGridMaskColumn;
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure qryHrm150H150_012GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure ActInsertExecute(Sender: TObject);
procedure ActSaveExecute(Sender: TObject);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
private
AStatus:array[1..2] of string;
{ Private declarations }
public
procedure SetInterface; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Hrm510_01Form: THrm510_01Form;
implementation
uses SYSDATA, CommFun, HwSelData;
{$R *.DFM}
procedure THrm510_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('HRM51001001'); //员工状态调整
Label1.Caption:=GetDBString('HRM51001002'); //员工编号
Label4.Caption:=GetDBString('HRM51001010'); //原先状态
Label3.Caption:=GetDBString('HRM51001004'); //调整日期
Label5.Caption:=GetDBString('HRM51001007'); //现在状态
Label6.Caption:=GetDBString('HRM51001009'); //备注
ADOQuery1H150_002.DisplayLabel:=GetDBString('HRM51001002'); //员工编号
ADOQuery1H150_003.DisplayLabel:=GetDBString('HRM51001003'); //员工姓名
ADOQuery1H510_002.DisplayLabel:=GetDBString('HRM51001004'); //调整日期
ADOQuery1H130_002.DisplayLabel:=GetDBString('HRM51001010'); //原先状态
ADOQuery1H130_003.DisplayLabel:=GetDBString('HRM51001011'); //原状态名称
ADOQuery1H130_002A.DisplayLabel:=GetDBString('HRM51001007'); //现在状态
ADOQuery1H130_003A.DisplayLabel:=GetDBString('HRM51001008'); //现状态名称
ADOQuery1H510_005.DisplayLabel:=GetDBString('HRM51001009'); //备注
qryHrm150H150_002.DisplayLabel:=GetDBString('HRM51001002'); //员工编号
qryHrm150H150_003.DisplayLabel:=GetDBString('HRM51001003'); //员工姓名
qryHrm150H150_012.DisplayLabel:=GetDBString('HRM51001005'); //员工状态
qryHrm130H130_002.DisplayLabel:=GetDBString('HRM51001012'); //状态编号
qryHrm130H130_003.DisplayLabel:=GetDBString('HRM51001006'); //状态名称
AStatus[1]:=GetDBString('HRM51001016'); //在职
AStatus[2]:=GetDBString('HRM51001017'); //离职
end;
procedure THrm510_01Form.FormCreate(Sender: TObject);
begin
inherited;
//设置界面信息
SetInterface;
end;
procedure THrm510_01Form.SpeedButton1Click(Sender: TObject);
begin
inherited;
//员工编号查询
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryHrm150,nil);
if HwSelDataForm.ShowModal=1 then
begin
ADOQuery1.Edit;
ADOQuery1H510_001.AsString:=qryHrm150H150_001.AsString;
ADOQuery1H510_003.AsString:=qryHrm150H150_012.AsString;
Edit2.Text:=qryHrm150H150_002.AsString;
end;
end;
procedure THrm510_01Form.Edit2Exit(Sender: TObject);
begin
inherited;
if qryHrm150.Locate('H150_002',Edit2.Text,[loCaseInsensitive]) then
begin
ADOQuery1.Edit;
ADOQuery1H510_001.AsString:=qryHrm150H150_001.AsString;
ADOQuery1H510_003.AsString:=qryHrm150H150_012.AsString;
end else
begin
ShowMsg('UMS10000042'); //无效的员工编号
Abort;
end;
end;
procedure THrm510_01Form.SpeedButton2Click(Sender: TObject);
begin
inherited;
//员工状态查询
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryHrm130,nil);
if HwSelDataForm.ShowModal=1 then
begin
ADOQuery1.Edit;
ADOQuery1H510_004.AsString:=qryHrm130H130_001.AsString;
Edit1.Text:=qryHrm130H130_002.AsString;
end;
end;
procedure THrm510_01Form.Edit1Exit(Sender: TObject);
begin
inherited;
if qryHrm130.Locate('H130_002',Edit1.Text,[loCaseInsensitive]) then
begin
ADOQuery1.Edit;
ADOQuery1H510_004.AsString:=qryHrm130H130_001.AsString;
end else
begin
ShowMsg('UMS10000043'); //无效的员工状态
Abort;
end;
end;
procedure THrm510_01Form.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key=vk_F4 then SpeedButton1.Click;
end;
procedure THrm510_01Form.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key=vk_F4 then SpeedButton2.Click;
end;
procedure THrm510_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
if ParName='H150_002' then ParValue:=GetDBString('HRM51001002') //员工编号
else if ParName='H150_003' then ParValue:=GetDBString('HRM51001003') //员工姓名
else if ParName='H510_002' then ParValue:=GetDBString('HRM51001004') //调整日期
else if ParName='H130_002' then ParValue:=GetDBString('HRM51001012') //状态编号
else if ParName='H130_003' then ParValue:=GetDBString('HRM51001004') //调整日期
else if ParName='H130_002A' then ParValue:=GetDBString('HRM51001012') //状态编号
else if ParName='H130_003A' then ParValue:=GetDBString('HRM51001006') //状态名称
else if ParName='H510_005' then ParValue:=GetDBString('HRM51001009') //备注
else if ParName='GROP_001' then ParValue:=GetDBString('HRM51001013') //调动前
else if ParName='GROP_002' then ParValue:=GetDBString('HRM51001014') //调动后
end;
procedure THrm510_01Form.qryHrm150H150_012GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
case Sender.Value of
1:Text:=AStatus[1]; //在职
2:Text:=AStatus[2]; //离职
end;
end;
procedure THrm510_01Form.ActInsertExecute(Sender: TObject);
begin
inherited;
//新增
ADOQuery1H510_002.Value:=Date;
end;
procedure THrm510_01Form.ActSaveExecute(Sender: TObject);
var
ID:integer;
begin
//保存
if trim(Edit2.Text)='' then
begin
ShowMsg('UMS10000071'); //员工编号不能为空
Abort;
end;
if trim(Edit1.Text)='' then
begin
ShowMsg('UMS10000098'); //员工状态不能为空
Abort;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from HRM150 where H150_002='+''''+trim(Edit2.Text)+'''');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000042'); //无效的员工编号
Abort;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select H130_001 from HRM130 where H130_002='+''''+ADOQuery1H130_002A.AsString+'''');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000043'); //无效的员工状态
Abort;
end;
ID:=SYSDM.qryQuery.Fields[0].Value;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from HRM150 where H150_001='+ADOQuery1H510_001.AsString+' and H150_012='+IntToStr(ID));
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000099'); //调整后的员工状态与调整前的员工状态相同
Abort;
end;
try
SYSDM.ADOC.BeginTrans;
inherited;
//更新员工资料中的员工状态
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('update HRM150 set H150_012='+IntToStr(ID)+' where H150_002='+''''+ADOQuery1H150_002.Value+'''');
SYSDM.qryQuery.ExecSQL;
//调整后的员工状态=离职时,将该员工的工作日历删除
if ID=2 then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CWA120 where C120_001='+ADOQuery1H510_001.AsString+' and C120_003>='+GetDateString(ADOQuery1H510_002.Value));
SYSDM.qryQuery.ExecSQL;
end;
SYSDM.ADOC.CommitTrans;
except
SYSDM.ADOC.RollbackTrans;
ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
Abort;
end;
end;
procedure THrm510_01Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
inherited;
if ADOQuery1.IsEmpty then
begin
Edit2.Text:='';
Edit1.Text:='';
Exit;
end;
if ADOQuery1.State in [dsEdit,dsInsert] then
begin
Edit2.Text:='';
Edit1.Text:='';
Exit;
end
else
begin
Edit2.Text:=ADOQuery1H150_002.Value;
Edit1.Text:=ADOQuery1H130_002A.Value;
end;
end;
initialization
RegisterClass(THrm510_01Form);
finalization
UnRegisterClass(THrm510_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -