⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cwa500_04.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
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 + -