找到原因了,程序调用的是bpl文件,所以对form的修改不起作用。
现在新的问题又来了,直接编译此bpl文件不能通过。在下对bpl以前没用过,
望各位继续帮助。
错误提示如下:
[Error] OverTurnDoWith.pas(360): Statement expected but 'PROCEDURE' found
[Hint] OverTurnDoWith.pas(131): Private symbol 'GetWeekSerial' declared but never used
[Fatal Error] pkgOverTurnDoWith.dpk(48): Could not compile used unit '..\Form\OverTurnDoWith.pas'
代码如下:
procedure TfrmOverTurnDoWith.tblOverTimeBeforePost(DataSet: TDataSet);
var vSeg_Year,vSeg_Month,vSeg_Day : Word;
vSeg_WaitMsg : TfrmWaitMessage;
vSeg_Component : TComponent;
vSeg_WeekSta,vSeg_WeekSun : string;
begin
inherited;
if (tblOverTime.FieldByName('ove_OverTime').AsFloat > 0) and
(tblOverTime.FieldByName('ove_Pay').AsFloat >= 0) then
begin
tblOverTime.FieldByName('ove_TurnIn').AsFloat :=
tblOverTime.FieldByName('ove_OverTime').AsFloat
- tblOverTime.FieldByName('ove_Pay').AsFloat
end;
if tblOverTime.FieldByName('ove_TurnIn').AsFloat > tblOverTime.FieldByName('ove_OverTime').AsFloat then
begin
ShowMessage('倒休时不能大于加班时');
Abort;
end;
if tblOverTime.FieldByName('ove_Pay').AsFloat > tblOverTime.FieldByName('ove_OverTime').AsFloat then
begin
ShowMessage('支付时不能大于加班时');
Abort;
end;
if tblOverTime.FieldByName('ove_Department').AsString <= ' ' then
begin
ShowMessage('请输入部门名称');
dbgOverTimeove_Department.Field.FocusControl;
Abort;
end;
if tblOverTime.FieldByName('ove_WorkNo').AsString <= ' ' then
begin
ShowMessage('请输入员工工号');
dbgOverTimeove_WorkNo.Field.FocusControl;
Abort;
end;
if tblOverTime.FieldByName('ove_Date').AsString <= '0' then
begin
ShowMessage('请输入日期');
dbgOverTimeove_Date.Field.FocusControl;
Abort;
end;
stpCheckRepeatmonth.ParamByName('@pg_mon_WorkNO').AsString :=
tblOverTime.FieldByName('ove_WorkNo').AsString;
stpCheckRepeatmonth.ParamByName('@pg_mon_Year').AsInteger := vSeg_Year;
stpCheckRepeatmonth.ParamByName('@pg_mon_month').AsInteger := vSeg_Month;
stpCheckRepeatmonth.ParamByName('@Ficount').AsInteger := 0;
stpCheckRepeatmonth.Prepare;
stpCheckRepeatmonth.ExecProc;
if (stpCheckRepeatmonth.ParamByName('@Ficount').AsInteger > 0) and (vg_UserName<>'AD1M') then
begin
ShowMessage('月考勤已锁');
vSeg_Component := Application.FindComponent('frmWaitMessage');
if vSeg_Component <> nil then
vSeg_Component.Free;
Abort;
end
else begin
if tblOverTime.FieldByName('ove_OverTimeType').AsString <> 'z' then
begin
{if dbcldep_Department.Text <> '制模部' and dbcldep_Department.Text <> '开发部' and dbcldep_Department.Text <> '市场部' then
begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
if Pos(tblOverTime.FieldByName('workgroup').AsString,'塑一 塑二 塑三') > 0 then
begin
if tblOverTime.FieldByName('workgroup').AsString = '塑一' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 2 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 3 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if tblOverTime.FieldByName('workgroup').AsString = '塑二' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 4 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 5 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if tblOverTime.FieldByName('workgroup').AsString = '塑三' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 6 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 7 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
end
else begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 7 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 1 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if chkSWeek.Checked then
begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
vSeg_WeekSta := cbWeek.Text;
vSeg_WeekSun := cdeWeek.Text;
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = GetWeekSerial(vSeg_WeekSta) then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = GetWeekSerial(vSeg_WeekSun) then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if stpgetHoliday.Active then
stpgetHoliday.Active := False;
stpgetHoliday.ParamByName('@pg_Date').AsDateTime :=
tblOverTime.FieldByName('ove_Date').AsDateTime;
stpgetHoliday.Prepare;
stpgetHoliday.ExecProc;
if not stpgetHoliday.Active then
stpgetHoliday.Active := True;
if stpgetHoliday.RecordCount > 0 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '假日';
end
else} begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
if stpgetHoliday.Active then
stpgetHoliday.Active := False;
stpgetHoliday.ParamByName('@pg_Date').AsDateTime :=
tblOverTime.FieldByName('ove_Date').AsDateTime;
stpgetHoliday.Prepare;
stpgetHoliday.ExecProc;
if not stpgetHoliday.Active then
stpgetHoliday.Active := True;
if stpgetHoliday.RecordCount > 0 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '假日';
end;
end
else begin
if Pos(tblOverTime.FieldByName('ove_OverTimeType').AsString ,'平时,假日,周六,周日') = 0 then
begin
ShowMessage('输入加班类型不下确');
dbgOverTimeove_OverTimeType.Field.FocusControl;
Abort;
end;
end;
end;
end;