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

📄 tas470_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Tas470_01;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas200_11, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, TeeProcs, TeEngine, fr_Class,
  Chart, DbChart, Buttons, StdCtrls, wwdbdatetimepicker, Series, TeeFunci, wwfltdlg;

type
  TTas470_01Form = class(TBas200_11Form)
    lblDate: TLabel;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    sbSearch: TSpeedButton;
    ADOQuery1: TADOQuery;
    ADODataSet1FEmpID: TStringField;
    ADODataSet1FEmpName: TStringField;
    ADODataSet1FEngName: TStringField;
    ADODataSet1FDept: TStringField;
    ADODataSet1FPost: TStringField;
    ADODataSet1FTotal: TIntegerField;
    ADODataSet1FFinish: TIntegerField;
    ADODataSet1FReturn: TIntegerField;
    ADODataSet1FPercent: TFloatField;
    dxDBGrid1FEmpID: TdxDBGridMaskColumn;
    dxDBGrid1FEmpName: TdxDBGridMaskColumn;
    dxDBGrid1FEngName: TdxDBGridMaskColumn;
    dxDBGrid1FDept: TdxDBGridMaskColumn;
    dxDBGrid1FPost: TdxDBGridMaskColumn;
    dxDBGrid1FTotal: TdxDBGridMaskColumn;
    dxDBGrid1FFinish: TdxDBGridMaskColumn;
    dxDBGrid1FReturn: TdxDBGridMaskColumn;
    dxDBGrid1FPercent: TdxDBGridMaskColumn;
    ADODataSet1FNo: TIntegerField;
    ActOpen: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure ActOpenExecute(Sender: TObject);
    procedure dxDBGrid1DblClick(Sender: TObject);
    procedure ActPrintExecute(Sender: TObject);
  private
    procedure GetData(AFromDate, AToDate: TDateTime);
    procedure SetFieldValue(AValue:Integer;APerson,AFieldName:string);
    { Private declarations }
  public
    procedure SetInterface; override;
    procedure RefreshEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Tas470_01Form: TTas470_01Form;

implementation

uses SYSDATA, CommFun, Tas520_01;

{$R *.dfm}

procedure TTas470_01Form.SetInterface;
var
  ADate:TDateTime;
begin
  inherited;
  Caption:=GetDBString('TAS47001001');  //员工绩效分析
  lblDate.Caption:=GetDBString('TAS47001002');  //起止日期
  sbSearch.Caption:=GetDBString('TAS47001004');  //查询
  ADODataSet1FEmpID.DisplayLabel:=GetDBString('TAS47001006');  //员工编号
  ADODataSet1FEmpName.DisplayLabel:=GetDBString('TAS47001007');  //员工姓名
  ADODataSet1FEngName.DisplayLabel:=GetDBString('TAS47001008');  //英文姓名
  ADODataSet1FDept.DisplayLabel:=GetDBString('TAS47001009');  //部门名称
  ADODataSet1FPost.DisplayLabel:=GetDBString('TAS47001010');  //职务名称
  ADODataSet1FTotal.DisplayLabel:=GetDBString('TAS47001011');  //任务总数
  ADODataSet1FFinish.DisplayLabel:=GetDBString('TAS47001012');  //已完成数
  ADODataSet1FReturn.DisplayLabel:=GetDBString('TAS47001013');  //返工数量
  ADODataSet1FPercent.DisplayLabel:=GetDBString('TAS47001014');  //绩效比率

  ADate:=GetServerDate;
  edtFromDate.Date:=GetMonthFirstDate(ADate);
  edtToDate.Date:=GetMonthEndDate(ADate);
end;

procedure TTas470_01Form.FormCreate(Sender: TObject);
begin
  inherited;
  SetInterface;
  sbSearch.Click;
end;

procedure TTas470_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  ADOQuery1.Close;
end;

procedure TTas470_01Form.sbSearchClick(Sender: TObject);
begin
  inherited;
//查询
  if (edtFromDate.Text='') or (edtToDate.Text='') then
  begin
    ShowMsg('UMS10000319');  //起止日期不可为空
    if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
    Abort;
  end;
  if edtFromDate.Date>edtToDate.Date then
  begin
    ShowMsg('UMS10000320');  //结束日期不能小于起始日期
    edtToDate.SetFocus;
    Abort;
  end;
  try
    Screen.Cursor:=crHourGlass;
    if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
    ADODataSet1.DisableControls;
    ADODataSet1.Close;
    ADODataSet1.FieldDefs.Clear;
    ADODataSet1.FieldDefs.Add('FNo',ftInteger,0);
    ADODataSet1.FieldDefs.Add('FEmpID',ftString,20);
    ADODataSet1.FieldDefs.Add('FEmpName',ftString,20);
    ADODataSet1.FieldDefs.Add('FEngName',ftString,20);
    ADODataSet1.FieldDefs.Add('FDept',ftString,50);
    ADODataSet1.FieldDefs.Add('FPost',ftString,30);
    ADODataSet1.FieldDefs.Add('FTotal',ftInteger,0);
    ADODataSet1.FieldDefs.Add('FFinish',ftInteger,0);
    ADODataSet1.FieldDefs.Add('FReturn',ftInteger,0);
    ADODataSet1.FieldDefs.Add('FPercent',ftFloat,0);
    ADODataSet1.CreateDataSet;
    GetData(edtFromDate.Date,edtToDate.Date);
  finally
    ADODataSet1.EnableControls;
//    DBChart1.RefreshData;
    Screen.Cursor:=crDefault;
  end;
end;

procedure TTas470_01Form.SetFieldValue(AValue:Integer;APerson,AFieldName:string);
var
  I:Integer;
  S:String;
  ANoStrList:TStringList;
begin
  ANoStrList:=TStringList.Create;
  for I:=1 to Length(APerson) do
  begin
    if Copy(APerson,I,1)='[' then
      S:=''
    else if Copy(APerson,I,1)=']' then
    begin
      ANoStrList.Add(trim(S));
      S:='';
    end else
      S:=S+Copy(APerson,I,1);
  end;

  for I:=0 to ANoStrList.Count-1 do
  begin
    if ADODataSet1.Locate('FNo',ANoStrList[I],[]) then
    begin
      ADODataSet1.Edit;
      ADODataSet1.FieldByName(AFieldName).Value:=ADODataSet1.FieldByName(AFieldName).AsInteger+AValue;
      ADODataSet1.Post;
    end;
  end;
  ANoStrList.Free;
end;

procedure TTas470_01Form.GetData(AFromDate, AToDate: TDateTime);
var
  AValue:Integer;
  APerson:string;
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select H150_001,H150_002,H150_003,H150_004,H100_002,H120_003');
  ADOQuery1.SQL.Add('from HRM150,HRM100,HRM120');
  ADOQuery1.SQL.Add('where H150_005=H100_001 and H150_008=H120_001 order by H150_002');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('H150_001').Value;
    ADODataSet1.FieldByName('FEmpID').Value:=ADOQuery1.FieldByName('H150_002').Value;
    ADODataSet1.FieldByName('FEmpName').Value:=ADOQuery1.FieldByName('H150_003').Value;
    ADODataSet1.FieldByName('FEngName').Value:=ADOQuery1.FieldByName('H150_004').Value;
    ADODataSet1.FieldByName('FDept').Value:=ADOQuery1.FieldByName('H100_002').Value;
    ADODataSet1.FieldByName('FPost').Value:=ADOQuery1.FieldByName('H120_003').Value;
    ADODataSet1.Post;
    ADOQuery1.Next;
  end;

  //任务总数
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select count(T510_001) as FTotal,T520_003');
  ADOQuery1.SQL.Add('from TAS510,TAS520');
  ADOQuery1.SQL.Add('where T510_001=T520_002 and T520_006>='+GetDateString(AFromDate)+' and T520_006<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by T520_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    AValue:=ADOQuery1.FieldByName('FTotal').AsInteger;
    APerson:=ADOQuery1.FieldByName('T520_003').Value;
    SetFieldValue(AValue,APerson,'FTotal');
    ADOQuery1.Next;
  end;

  //已完成数
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select count(T510_001) as FFinish,T520_003');
  ADOQuery1.SQL.Add('from TAS510,TAS520');
  ADOQuery1.SQL.Add('where T510_001=T520_002 and T510_003=3 and T520_006>='+GetDateString(AFromDate)+' and T520_006<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by T520_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    AValue:=ADOQuery1.FieldByName('FFinish').AsInteger;
    APerson:=ADOQuery1.FieldByName('T520_003').Value;
    SetFieldValue(AValue,APerson,'FFinish');
    ADOQuery1.Next;
  end;

  //返工数量
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select count(T510_001) as FReturn,T520_003');
  ADOQuery1.SQL.Add('from TAS510,TAS520');
  ADOQuery1.SQL.Add('where T510_001=T520_002 and T510_003=4 and T520_006>='+GetDateString(AFromDate)+' and T520_006<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by T520_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    AValue:=ADOQuery1.FieldByName('FReturn').AsInteger;
    APerson:=ADOQuery1.FieldByName('T520_003').Value;
    SetFieldValue(AValue,APerson,'FReturn');
    ADOQuery1.Next;
  end;

  //绩效比率
  //績效比率=(已完成數-返工數量)/ 任务总数 * 100%
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    if ADODataSet1.FieldByName('FTotal').AsInteger=0 then
      ADODataSet1.FieldByName('FPercent').Value:=0
    else
      ADODataSet1.FieldByName('FPercent').Value:=((ADODataSet1.FieldByName('FFinish').AsInteger-ADODataSet1.FieldByName('FReturn').AsInteger)/ADODataSet1.FieldByName('FTotal').AsInteger)*100;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
end;

procedure TTas470_01Form.ActOpenExecute(Sender: TObject);
var
  AFieldInfo:TwwFieldInfo;
begin
  inherited;
//查看
  if ADODataSet1.IsEmpty then Exit;
  Screen.Cursor:=crHourGlass;
  Tas520_01Form:=TTas520_01Form.Create(Application);
  Tas520_01Form.edtFromDate.Date:=edtFromDate.Date;
  Tas520_01Form.edtToDate.Date:=edtToDate.Date;
  Tas520_01Form.sbSearch.Click;
  FilterDialog(Tas520_01Form.DataSource1,False);
  AFieldInfo:=TwwFieldInfo.create;
  AFieldInfo.FieldName:='T520_003';
  AFieldInfo.DisplayLabel:=Tas520_01Form.ADOQuery1T520_019.DisplayLabel;
  AFieldInfo.MatchType:=fdMatchAny;
  AFieldInfo.CaseSensitive:=False;
  AFieldInfo.NonMatching:=False;
  AFieldInfo.FilterValue:=ADODataSet1FEmpName.AsString;
  SYSDM.wwFilterDialog1.FieldInfo.Add(AFieldInfo);
  SYSDM.wwFilterDialog1.ApplyFilter;
  Tas520_01Form.ARecordCount:=GetDataSetCount(Tas520_01Form.ADOQuery1);
  Screen.Cursor:=crDefault;
  Tas520_01Form.ShowModal;
//  if Assigned(AFieldInfo) then AFieldInfo.Free;
end;

procedure TTas470_01Form.dxDBGrid1DblClick(Sender: TObject);
begin
  inherited;
  ActOpen.Execute;
end;

procedure TTas470_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
begin
  inherited;
  if ParName='ADate' then ParValue:=lblDate.Caption  //起止日期
  else if ParName='AFromDate' then ParValue:=edtFromDate.Text  //
  else if ParName='AToDate' then ParValue:=edtToDate.Text  //
  else if ParName='FEmpID' then ParValue:=ADODataSet1FEmpID.DisplayLabel  //员工编号
  else if ParName='FEmpName' then ParValue:=ADODataSet1FEmpName.DisplayLabel  //员工姓名
  else if ParName='FEngName' then ParValue:=ADODataSet1FEngName.DisplayLabel  //英文姓名
  else if ParName='FDept' then ParValue:=ADODataSet1FDept.DisplayLabel  //部门名称
  else if ParName='FPost' then ParValue:=ADODataSet1FPost.DisplayLabel  //职务名称
  else if ParName='FTotal' then ParValue:=ADODataSet1FTotal.DisplayLabel  //任务总数
  else if ParName='FFinish' then ParValue:=ADODataSet1FFinish.DisplayLabel  //已完成数
  else if ParName='FReturn' then ParValue:=ADODataSet1FReturn.DisplayLabel  //返工数量
  else if ParName='FPercent' then ParValue:=ADODataSet1FPercent.DisplayLabel  //绩效比率
end;

procedure TTas470_01Form.ActPrintExecute(Sender: TObject);
begin
  try
    SYSDM.frReport2.OnGetValue:=ReportGetValue;
    inherited;
  finally
    SYSDM.frReport2.OnGetValue:=nil;
  end;
end;

procedure TTas470_01Form.RefreshEvent;
begin
  inherited;
  sbSearch.Click;
end;

initialization
  RegisterClass(TTas470_01Form);

finalization
  UnRegisterClass(TTas470_01Form);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -