📄 cwa500_02.pas.svn-base
字号:
ATime:=StrToInt(Cwa500_02Form.edtValue.Text);
Result:=Result+ATime;
//插入考勤事务表(CWA500)
if (ATime<>0) and (AFlag) then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into CWA500(C500_001,C500_002,C500_003,C500_004,C500_005,C500_006,C500_007,C500_008,C500_009,C500_010)');
SYSDM.qryQuery.SQL.Add('select '+IntToStr(ATypeNo)+',null,'+''''+Cwa500_02Form.cbType.Text+''''+','+IntToStr(AEmpNo)+','+GetDateString(ADate)+','+''''+AFromTime+''''+','+''''+AToTime+''''+','+FloatToStr(ATime)+','+IntToStr(AUnitNo)+',0');
SYSDM.qryQuery.ExecSQL;
end;
ADate:=ADate+1;
end;
end;
procedure TCwa500_02Form.bbtnOkClick(Sender: TObject);
var
AFromEmpID,AToEmpID:string;
ADeptNo,AEmpNo,ATypeNo:Integer;
AFromTime,AToTime:string;
AUnitNo:Integer; //项目的计量单位
AHours:Integer;
AFromDate,AToDate:TDateTime;
begin
inherited;
//确定
if trim(cbType.Text)='' then
begin
ShowMsg('UMS10000073'); //事务类型不能为空
cbType.SetFocus;
Abort;
end;
ATypeNo:=GetValue('select C150_001 from CWA150 where C150_003='+''''+cbType.Text+'''');
ADeptNo:=cbDepart.ItemIndex;
if ADeptNo<>0 then ADeptNo:=GetValue('select H100_001 from HRM100 where H100_002='+''''+cbDepart.Text+'''');
AFromEmpID:=trim(edtFromEmpID.Text);
AToEmpID:=trim(edtToEmpID.Text);
if AFromEmpID='' then AFromEmpID:=GetValue('select min(H150_002) from HRM150');
if AToEmpID='' then AToEmpID:=GetValue('select max(H150_002) from HRM150');
AFromDate:=dtFromDate.Date;
AToDate:=dtToDate.Date;
//每日开工时数
AHours:=StrToInt(trim(GetSysParams('CWA0006')));
if AFromEmpID>AToEmpID then
begin
ShowMsg('UMS10000076'); //起始员工编号不能大于结束编号
edtFromEmpID.SetFocus;
Abort;
end;
if AFromDate>AToDate then
begin
ShowMsg('UMS10000044'); //起始日期不能大于结束日期
dtFromDate.SetFocus;
Abort;
end;
if (edtFromTime.Time=0) and (edtToTime.Time=0) then
begin
ShowMsg('UMS10000075'); //起始时间或结束时间不能为空
edtFromTime.SetFocus;
Abort;
end;
if edtFromTime.Time>edtToTime.Time then
begin
ShowMsg('UMS10000070'); //起始时间不能大于结束时间
edtFromTime.SetFocus;
Abort;
end;
if (trim(edtValue.Text)='') or (trim(edtValue.Text)='0') then
begin
ShowMsg('UMS10000252'); //事务数值不能为空或零
edtValue.SetFocus;
Abort;
end;
try
StrToInt(edtValue.Text)
except
ShowMsg('UMS10000251'); //事务数值必须输入数值
edtValue.SetFocus;
Abort;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from CWA120 where C120_004>='+GetDateString(dtFromDate.Date)+' and C120_004<='+GetDateString(dtToDate.Date));
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000069'); //输入的起止日期内没有员工班别资料
dtFromDate.SetFocus;
Abort;
end;
//取得项目的计量单位
AUnitNo:=GetValue('select C150_008 from CWA150 where C150_001='+IntToStr(ATypeNo));
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select H150_001, H150_003 from HRM150');
SYSDM.qryQuery.SQL.Add('where H150_002>='+''''+AFromEmpID+''''+' and H150_002<='+''''+AToEmpID+'''');
if cbDepart.ItemIndex<>0 then SYSDM.qryQuery.SQL.Add(' and H150_005='+IntToStr(ADeptNo));
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AEmpNo:=SYSDM.qryQuery.FieldByName('H150_001').Value;
GetDateTime(ATypeNo,AUnitNo,AEmpNo,AHours,AFromDate,AToDate,AFromTime,AToTime,True);
SYSDM.qryQuery.Next;
end;
ShowMsg('UMS10000077'); //成批录入成功
Close;
end;
procedure TCwa500_02Form.bbtnExitClick(Sender: TObject);
begin
inherited;
//退出
Close;
end;
procedure TCwa500_02Form.cbTypeChange(Sender: TObject);
begin
inherited;
if cbType.Text='' then Exit;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C150_001,C150_005 from CWA150 where C150_003='+''''+cbType.Text+'''');
SYSDM.qryQuery.Open;
//事务类型=请假时,事务数值自动计算,并不可修改
edtValue.Enabled:=SYSDM.qryQuery.Fields[0].Value<>4;
if edtValue.Enabled then edtValue.Color:=AEnableColor else edtValue.Color:=ADisableColor;
//计量单位
case SYSDM.qryQuery.Fields[1].AsInteger of
1:lblUnit.Caption:=GetDBString('COM00004009'); //1=分钟
2:lblUnit.Caption:=GetDBString('COM00004010'); //2=小时
3:lblUnit.Caption:=GetDBString('COM00004011'); //3=天
4:lblUnit.Caption:=GetDBString('COM00004012'); //4=次
end;
end;
procedure TCwa500_02Form.SpeedButton1Click(Sender: TObject);
begin
inherited;
//员工编号查询1
if not edtFromEmpID.Focused then edtFromEmpID.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryHrm150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtFromEmpID.Text:=qryHrm150.FieldByName('H150_002').AsString;
end;
end;
procedure TCwa500_02Form.SpeedButton2Click(Sender: TObject);
begin
inherited;
//员工编号查询2
if not edtToEmpID.Focused then edtToEmpID.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryHrm150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtToEmpID.Text:=qryHrm150.FieldByName('H150_002').AsString;
end;
end;
procedure TCwa500_02Form.edtFromEmpIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key=vk_F4 then SpeedButton1.Click;
end;
procedure TCwa500_02Form.edtToEmpIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key=vk_F4 then SpeedButton2.Click;
end;
procedure TCwa500_02Form.edtToTimeExit(Sender: TObject);
var
ATypeNo,AEmpNo,AUnitNo,ADeptNo,AHours:Integer;
ATime:Double;
AFromDate,AToDate:TDateTime;
AFromTime,AToTime:string;
AFromEmpID,AToEmpID:string;
begin
inherited;
if trim(cbType.Text)='' then
begin
ShowMsg('UMS10000073'); //事务类型不能为空
cbType.SetFocus;
Abort;
end;
ATypeNo:=GetValue('select C150_001 from CWA150 where C150_003='+''''+cbType.Text+'''');
ADeptNo:=cbDepart.ItemIndex;
if ADeptNo<>0 then ADeptNo:=GetValue('select H100_001 from HRM100 where H100_002='+''''+cbDepart.Text+'''');
AFromEmpID:=trim(edtFromEmpID.Text);
AToEmpID:=trim(edtToEmpID.Text);
if AFromEmpID='' then AFromEmpID:=GetValue('select min(H150_002) from HRM150');
if AToEmpID='' then AToEmpID:=GetValue('select max(H150_002) from HRM150');
AFromDate:=dtFromDate.Date;
AToDate:=dtToDate.Date;
//每日开工时数
AHours:=StrToInt(trim(GetSysParams('CWA0006')));
if AFromEmpID>AToEmpID then
begin
ShowMsg('UMS10000076'); //起始员工编号不能大于结束编号
edtFromEmpID.SetFocus;
Abort;
end;
if AFromDate>AToDate then
begin
ShowMsg('UMS10000044'); //起始日期不能大于结束日期
dtFromDate.SetFocus;
Abort;
end;
if (edtFromTime.Time=0) and (edtToTime.Time=0) then
begin
ShowMsg('UMS10000075'); //起始时间或结束时间不能为空
edtFromTime.SetFocus;
Abort;
end;
if edtFromTime.Time>edtToTime.Time then
begin
ShowMsg('UMS10000070'); //起始时间不能大于结束时间
edtFromTime.SetFocus;
Abort;
end;
if (trim(edtValue.Text)='') or (trim(edtValue.Text)='0') then
begin
ShowMsg('UMS10000252'); //事务数值不能为空或零
edtValue.SetFocus;
Abort;
end;
try
StrToInt(edtValue.Text)
except
ShowMsg('UMS10000251'); //事务数值必须输入数值
edtValue.SetFocus;
Abort;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from CWA120 where C120_004>='+GetDateString(dtFromDate.Date)+' and C120_004<='+GetDateString(dtToDate.Date));
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000069'); //输入的起止日期内没有员工班别资料
dtFromDate.SetFocus;
Abort;
end;
//取得项目的计量单位
AUnitNo:=GetValue('select C150_008 from CWA150 where C150_001='+IntToStr(ATypeNo));
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 H150_001, H150_003 from HRM150');
SYSDM.qryQuery.SQL.Add('where H150_002>='+''''+AFromEmpID+''''+' and H150_002<='+''''+AToEmpID+'''');
if cbDepart.ItemIndex<>0 then SYSDM.qryQuery.SQL.Add(' and H150_005='+IntToStr(ADeptNo));
SYSDM.qryQuery.Open;
AEmpNo:=SYSDM.qryQuery.FieldByName('H150_001').Value;
ATime:=GetDateTime(ATypeNo,AUnitNo,AEmpNo,AHours,AFromDate,AToDate,AFromTime,AToTime,False);
edtFromTime.Time:=StrToTime(AFromTime);
edtToTime.Time:=StrToTime(AToTime);
edtValue.Text:=FloatToStr(ATime);
end;
procedure TCwa500_02Form.edtValueKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
ValidFloat(Sender,Key);
end;
initialization
RegisterClass(TCwa500_02Form);
finalization
UnRegisterClass(TCwa500_02Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -