📄 cwa500_04.pas.svn-base
字号:
var
ATypeNo,AUnitNo,AEmpNo:Integer;
AFieldName,ATypeName:String;
ADate:TDateTime;
AFromTime,AToTime:String;
ATime:Double;
I:Integer;
begin
ADate:=dtDate.Date;
AFromTime:='00:00';
AToTime:='00:00';
qryCwa500.First;
while not qryCwa500.Eof do
begin
AEmpNo:=GetValue('select H150_001 from HRM150 where H150_002='+''''+qryCwa500.Fields[0].AsString+'''');
for I:=2 to qryCwa500.FieldCount-1 do
begin
if qryCwa500.Fields[I].IsNull then Exit;
ATime:=qryCwa500.Fields[I].Value;
if ATime<>0 then
begin
AFieldName:=qryCwa500.Fields[I].FieldName;
ATypeNo:=GetValue('select C150_001 from CWA150 where C150_002='+''''+AFieldName+'''');
ATypeName:=GetValue('select C150_003 from CWA150 where C150_002='+''''+AFieldName+'''');
AUnitNo:=GetValue('select C150_005 from CWA150 where C150_002='+''''+AFieldName+'''');;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CWA500 where C500_001='+IntToStr(ATypeNo)+' and C500_004='+IntToStr(AEmpNo)+' and C500_005='+GetDateString(ADate)+' and C500_006='+''''+AFromTime+''''+' and C500_007='+''''+AToTime+'''');
SYSDM.qryQuery.ExecSQL;
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,'+''''+ATypeName+''''+','+IntToStr(AEmpNo)+','+GetDateString(ADate)+','+''''+AFromTime+''''+','+''''+AToTime+''''+','+FloatToStr(ATime)+','+IntToStr(AUnitNo)+',0');
SYSDM.qryQuery.ExecSQL;
end;
end;
qryCwa500.Next;
end;
end;
procedure TCwa500_04Form.ActSaveExecute(Sender: TObject);
begin
inherited;
//保存
if qryCwa500.State in [dsEdit] then qryCwa500.Post;
if cbType.ItemIndex=0 then //按日期
begin
SaveByDate;
end else
if cbType.ItemIndex=1 then //按员工
begin
SaveByEmp;
end;
end;
procedure TCwa500_04Form.ActCancelExecute(Sender: TObject);
begin
inherited;
//取消
qryCwa500.CancelBatch;
end;
procedure TCwa500_04Form.ActLocateExecute(Sender: TObject);
begin
inherited;
//查找
if qryCwa500.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
LocateDialog(dsCwa500);
end;
procedure TCwa500_04Form.ActSearchExecute(Sender: TObject);
begin
inherited;
//查询
FilterDialog(dsCwa500);
end;
procedure TCwa500_04Form.ActPrintExecute(Sender: TObject);
begin
inherited;
//打印
if qryCwa500.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
HwPrintForm:=THwPrintForm.Create(Application);
HwPrintForm.edtReportTitle.Text:=Caption;
HwPrintForm.OpenPrint(qryCwa500);
HwPrintForm.ShowModal;
end;
procedure TCwa500_04Form.ActExportExecute(Sender: TObject);
begin
inherited;
//导出到Excel
if qryCwa500.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
SaveToExcel(dxDBGrid1);
end;
procedure TCwa500_04Form.ActExitExecute(Sender: TObject);
begin
inherited;
//退出
Close;
end;
procedure TCwa500_04Form.dsCwa500StateChange(Sender: TObject);
begin
inherited;
if dsCwa500.State in [dsEdit] then
begin
ActSave.Enabled:=True;
ActCancel.Enabled:=True;
end;
end;
procedure TCwa500_04Form.qryCwa500FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
inherited;
if ADeptNo<>0 then
Accept:=qryCwa500.FieldByName('H150_008').Value=ADeptNo;
end;
procedure TCwa500_04Form.cbTypeChange(Sender: TObject);
var
AUnit:array[1..4] of string;
AFieldName:string;
I:Integer;
S:String;
AColumn:TdxDBTreeListColumn;
begin
inherited;
//类型
WaitForm.Show;
WaitForm.Update;
Screen.DisableAlign;
if cbType.ItemIndex=0 then //按日期
begin
lblYear.Visible:=True;
cbYear.Visible:=True;
lblMonth.Visible:=True;
cbMonth.Visible:=True;
lblEmp.Visible:=True;
edtEmp.Visible:=True;
sbEmp.Visible:=True;
lblDate.Visible:=False;
dtDate.Visible:=False;
lblDept.Visible:=False;
cbDepart.Visible:=False;
end else
if cbType.ItemIndex=1 then //按员工
begin
lblYear.Visible:=False;
cbYear.Visible:=False;
lblMonth.Visible:=False;
cbMonth.Visible:=False;
lblEmp.Visible:=False;
edtEmp.Visible:=False;
sbEmp.Visible:=False;
lblDate.Visible:=True;
dtDate.Visible:=True;
lblDept.Visible:=True;
cbDepart.Visible:=True;
end;
lblYear.Top:=13;
cbYear.Top:=8;
lblMonth.Top:=13;
cbMonth.Top:=8;
lblEmp.Top:=13;
edtEmp.Top:=8;
lblDate.Top:=13;
dtDate.Top:=8;
lblDept.Top:=13;
cbDepart.Top:=8;
Update;
AUnit[1]:=GetDBString('COM00004009'); //分钟
AUnit[2]:=GetDBString('COM00004010'); //小时
AUnit[3]:=GetDBString('COM00004011'); //天
AUnit[4]:=GetDBString('COM00004012'); //次
//创建临时表
qryCwa500.Close;
qryCwa500.FieldDefs.Clear;
if cbType.ItemIndex=0 then //按日期
begin
qryCwa500.FieldDefs.Add('DATE1',ftDate,0); //事务日期
end else
if cbType.ItemIndex=1 then //按员工
begin
qryCwa500.FieldDefs.Add('EMPID',ftString,20); //员工编号
qryCwa500.FieldDefs.Add('EMPNM',ftString,20); //员工姓名
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from CWA150 where C150_004=0 and C150_008='+GetBoolean(True)+' order by C150_007');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AFieldName:=SYSDM.qryQuery.FieldByName('C150_002').AsString;
qryCwa500.FieldDefs.Add(AFieldName,ftFloat,0);
SYSDM.qryQuery.Next;
end;
qryCwa500.CreateDataSet;
if cbType.ItemIndex=0 then //按日期
begin
qryCwa500.Fields[0].DisplayLabel:=GetDBString('CWA50004011'); //事务日期
end else
if cbType.ItemIndex=1 then //按员工
begin
qryCwa500.Fields[0].DisplayLabel:=GetDBString('CWA50004012'); //员工编号
qryCwa500.Fields[1].DisplayLabel:=GetDBString('CWA50004013'); //员工姓名
end;
dxDBGrid1.DestroyColumns;
for I:=0 to qryCwa500.FieldCount-1 do
begin
AFieldName:=qryCwa500.Fields[I].FieldName;
if qryCwa150.Locate('C150_002',AFieldName,[loCaseInsensitive]) then
begin
S:=qryCwa150.FieldByName('C150_003').AsString;
//0=分钟,1=小时,2=天,3=次,4=月,5=年
case qryCwa150.FieldByName('C150_005').AsInteger of
0:S:=S+'('+AUnit[1]+')'; //分钟
1:S:=S+'('+AUnit[2]+')'; //小时
2:S:=S+'('+AUnit[3]+')'; //天
3:S:=S+'('+AUnit[4]+')'; //次
end;
qryCwa500.Fields[I].DisplayLabel:=S;
end;
AColumn:=dxDBGrid1.CreateColumn(dxDBGrid1.GetDefaultFieldColumnClass(qryCwa500.Fields[I]));
AColumn.FieldName:=AFieldName;
AColumn.HeaderAlignment:=taCenter;
if ((I>=1) and (cbType.ItemIndex=0)) or ((I>=2) and (cbType.ItemIndex=1)) then
begin
AColumn.DisableEditor:=False;
AColumn.BandIndex:=1;
AColumn.SummaryFooterFormat:=',0.00;-,0.00';
AColumn.SummaryFooterType:=cstSum;
end else
begin
AColumn.DisableEditor:=True;
AColumn.BandIndex:=0;
end;
dxDBGrid1.ApplyBestFit(AColumn);
end;
dxDBGrid1.KeyField:=qryCwa500.Fields[0].FieldName;
GetPeriodDate(cbYear.Text,cbMonth.Text,AStartDate,AEndDate,APeriod);
if not qryCwa500.Active then Exit;
while not qryCwa500.IsEmpty do qryCwa500.Delete;
if cbType.ItemIndex=0 then //按日期
begin
while AStartDate<=AEndDate do
begin
qryCwa500.Append;
qryCwa500.Fields[0].Value:=AStartDate;
qryCwa500.Post;
AStartDate:=AStartDate+1;
end;
qryCwa500.First;
end else
if cbType.ItemIndex=1 then //按员工
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select H150_001,H150_002,H150_003 from HRM150 where H150_012=1 order by H150_002');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
qryCwa500.Append;
qryCwa500.Fields[0].Value:=SYSDM.qryQuery.FieldByName('H150_002').Value;
qryCwa500.Fields[1].Value:=SYSDM.qryQuery.FieldByName('H150_003').Value;
qryCwa500.Post;
SYSDM.qryQuery.Next;
end;
qryCwa500.First;
end;
Screen.EnableAlign;
WaitForm.Close;
end;
procedure TCwa500_04Form.sbEmpClick(Sender: TObject);
begin
inherited;
//员工编号查询
if not edtEmp.Focused then edtEmp.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryHrm150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtEmp.Text:=qryHrm150H150_002.AsString;
end;
end;
procedure TCwa500_04Form.edtEmpExit(Sender: TObject);
begin
inherited;
if qryHrm150.Locate('H150_002',edtEmp.Text,[loCaseInsensitive]) then
begin
edtEmp.Text:=qryHrm150H150_002.AsString;
end else
begin
ShowMsg('UMS10000042'); //无效的员工编号
edtEmp.SetFocus;
Abort;
end;
end;
procedure TCwa500_04Form.edtEmpKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key=vk_F4 then sbEmp.Click;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -