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

📄 tas435_01.pas.svn-base

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

interface

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

type
  TTas435_01Form = class(TBas200_12Form)
    lblDate: TLabel;
    lblType: TLabel;
    sbSearch: TSpeedButton;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    cbType: TComboBox;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    ADOQuery1: TADOQuery;
    ADODataSet2: TADODataSet;
    ADODataSet3: TADODataSet;
    Panel2: TPanel;
    Splitter2: TSplitter;
    DBChart1: TDBChart;
    Series1: TBarSeries;
    DBChart2: TDBChart;
    Series2: TBarSeries;
    Splitter1: TSplitter;
    ADODataSet1FNo: TIntegerField;
    ADODataSet1FName: TStringField;
    ADODataSet1FParent: TIntegerField;
    ADODataSet1FTotal1: TIntegerField;
    ADODataSet1FTotal2: TIntegerField;
    ADODataSet1FTotal3: TIntegerField;
    ADODataSet1FTotal4: TIntegerField;
    ADODataSet1FTotal5: TIntegerField;
    ADODataSet1FTotal6: TIntegerField;
    ADODataSet1FTotal: TIntegerField;
    dxDBTreeList1FName: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal1: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal2: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal3: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal4: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal5: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal6: TdxDBTreeListMaskColumn;
    dxDBTreeList1FTotal: TdxDBTreeListMaskColumn;
    ActOpen: TAction;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure ADODataSet1AfterScroll(DataSet: TDataSet);
    procedure dxDBTreeList1FTotal1DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotal2DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotal3DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotal4DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotal5DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotal6DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBTreeList1FTotalDrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure ActOpenExecute(Sender: TObject);
    procedure ActPrintExecute(Sender: TObject);
  private
    ATotal:array[1..7] of double;
    procedure GetData(AFromDate,AToDate:TDateTime);  //按产品
    procedure SetFieldValue(ADays,AValue:Integer);
    procedure UpdateParent(AParentNo:Integer;AValue:Double;ADataSet:TDataSet;AFieldName:string);
    { Private declarations }
  public
    procedure SetInterface; override;
    procedure RefreshEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Tas435_01Form: TTas435_01Form;

implementation

uses SYSDATA, CommFun, Tas520_01;

{$R *.dfm}

procedure TTas435_01Form.SetInterface;
var
  ADate:TDateTime;
begin
  inherited;
  Caption:=GetDBString('TAS43501001');  //工单完成分析
  lblDate.Caption:=GetDBString('TAS43001002');  //起止日期
  lblType.Caption:=GetDBString('TAS43001003');  //类型
  sbSearch.Caption:=GetDBString('TAS43001004');  //查询
  ADODataSet1FName.DisplayLabel:=GetDBString('TAS43001006');  //任务类别
  ADODataSet1FTotal.DisplayLabel:=GetDBString('TAS43001013');  //小计
  cbType.Clear;
  cbType.Items.Add(GetDBString('TAS43001014'));  //按日
  cbType.Items.Add(GetDBString('TAS43001015'));  //按周
  cbType.Items.Add(GetDBString('TAS43001016'));  //按月
  cbType.ItemIndex:=0;

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

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

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

procedure TTas435_01Form.sbSearchClick(Sender: TObject);
var
  AUnit:string;
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;
  ATotal[1]:=0;
  ATotal[2]:=0;
  ATotal[3]:=0;
  ATotal[4]:=0;
  ATotal[5]:=0;
  ATotal[6]:=0;
  ATotal[7]:=0;  
  Screen.Cursor:=crHourGlass;
  if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
  ADOQuery1.Close;
  ADODataSet1.DisableControls;

  case cbType.ItemIndex of
    0:AUnit:=GetDBString('TAS43001017');  //天
    1:AUnit:=GetDBString('TAS43001018');  //周
    2:AUnit:=GetDBString('TAS43001019');  //月
  end;
  ADODataSet1FTotal1.DisplayLabel:=GetDBString('TAS43001007')+AUnit;  //一
  ADODataSet1FTotal2.DisplayLabel:=GetDBString('TAS43001008')+AUnit;  //二
  ADODataSet1FTotal3.DisplayLabel:=GetDBString('TAS43001009')+AUnit;  //三
  ADODataSet1FTotal4.DisplayLabel:=GetDBString('TAS43001010')+AUnit;  //四
  ADODataSet1FTotal5.DisplayLabel:=GetDBString('TAS43001011')+AUnit;  //五
  ADODataSet1FTotal6.DisplayLabel:=GetDBString('TAS43001012')+AUnit;  //超过五
  dxDBTreeList1.Refresh;

  ADODataSet1.Close;
  ADODataSet1.FieldDefs.Clear;
  ADODataSet1.FieldDefs.Add('FNo',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FName',ftString,50);
  ADODataSet1.FieldDefs.Add('FParent',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal1',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal2',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal3',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal4',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal5',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal6',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FTotal',ftInteger,0);
  ADODataSet1.CreateDataSet;
  GetData(edtFromDate.Date,edtToDate.Date);
  ADODataSet1.EnableControls;

  ADODataSet2.Close;
  ADODataSet2.FieldDefs.Clear;
  ADODataSet2.FieldDefs.Add('FDays',ftString,20);
  ADODataSet2.FieldDefs.Add('FTotal',ftInteger,0);
  ADODataSet2.CreateDataSet;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal1').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[1];
  ADODataSet2.Post;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal2').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[2];
  ADODataSet2.Post;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal3').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[3];
  ADODataSet2.Post;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal4').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[4];
  ADODataSet2.Post;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal5').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[5];
  ADODataSet2.Post;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FDays').Value:=ADODataSet1.FieldByName('FTotal6').DisplayLabel;
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[6];
  ADODataSet2.Post;

  DBChart1.RefreshData;
  Screen.Cursor:=crDefault;
end;

procedure TTas435_01Form.SetFieldValue(ADays,AValue:Integer);
begin
  if not (ADODataSet1.State in [dsInsert,dsEdit]) then Exit;
  case ADays of
    0,1: ADODataSet1.FieldByName('FTotal1').Value:=ADODataSet1.FieldByName('FTotal1').AsInteger+AValue;
    2: ADODataSet1.FieldByName('FTotal2').Value:=ADODataSet1.FieldByName('FTotal2').AsInteger+AValue;
    3: ADODataSet1.FieldByName('FTotal3').Value:=ADODataSet1.FieldByName('FTotal3').AsInteger+AValue;
    4: ADODataSet1.FieldByName('FTotal4').Value:=ADODataSet1.FieldByName('FTotal4').AsInteger+AValue;
    5: ADODataSet1.FieldByName('FTotal5').Value:=ADODataSet1.FieldByName('FTotal5').AsInteger+AValue;
  else
    ADODataSet1.FieldByName('FTotal6').Value:=ADODataSet1.FieldByName('FTotal6').AsInteger+AValue;
  end;
  ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsInteger+AValue;
  if ADays=0 then ADays:=1;
  if ADays>=6 then ADays:=6;
  ATotal[ADays]:=ATotal[ADays]+AValue;
  ATotal[7]:=ATotal[7]+AValue;
end;

//将下级任务类别数量累加到上级任务类别
procedure TTas435_01Form.UpdateParent(AParentNo:Integer;AValue:Double;ADataSet:TDataSet;AFieldName:string);
var
  AParent:Integer;
  AClassName:String;
begin
  //查找任务类别表中该记录是否有上级分类
  AParent:=GetValue('select T100_003 from TAS100 where T100_001='+IntToStr(AParentNo));
  if ADataSet.Locate('FNo',AParentNo,[]) then
  begin
    ADataSet.Edit;
    ADataSet.FieldByName(AFieldName).Value:=ADataSet.FieldByName(AFieldName).AsFloat+AValue;
    ADataSet.Post;
  end else
  begin
    AClassName:=GetValue('select T100_002 from TAS100 where T100_001='+IntToStr(AParentNo));
    ADataSet.Append;
    ADataSet.FieldByName('FNo').Value:=AParentNo;
    ADataSet.FieldByName('FName').Value:=AClassName;
    ADataSet.FieldByName('FParent').Value:=AParent;
    ADataSet.FieldByName(AFieldName).Value:=AValue;
    ADataSet.Post;
  end;
  //查找任务类别表中该记录是否有上级类别
//  if AParent<>0 then UpdateParent(AParent,AValue,ADataSet,AFieldName);
end;

procedure TTas435_01Form.GetData(AFromDate, AToDate: TDateTime);
var
  AValue,ADays,AParentNo:Integer;
  ABookmark:TBookmark;
begin
  //完工数据  按实际完成日期统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select count(T520_001) as FTotal,T100_001,T100_002,T100_003,T520_008 as FDays');
  ADOQuery1.SQL.Add('from TAS520,TAS510,TAS100');
  ADOQuery1.SQL.Add('where T520_002=T510_001 and T510_004=T100_001 and '+AByFinish+'>='+GetDateString(AFromDate)+' and '+AByFinish+'<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('  and T510_003 in ('+AStatusNo+') group by T100_001,T100_002,T100_003,T520_008');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('T100_001').Value,[]) then
    begin
      ADODataSet1.Edit;
      AValue:=ADOQuery1.FieldByName('FTotal').AsInteger;
      ADays:=RoundB(ADOQuery1.FieldByName('FDays').AsFloat);  //按日
      case cbType.ItemIndex of
        0:ADays:=RoundB(ADOQuery1.FieldByName('FDays').AsFloat);  //按日
        1:ADays:=RoundB(ADOQuery1.FieldByName('FDays').AsFloat/5);  //按周
        2:ADays:=RoundB(ADOQuery1.FieldByName('FDays').AsFloat/22);  //按月
      end;
      SetFieldValue(ADays,AValue);
      ADODataSet1.Post;
    end else
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('T100_001').Value;

⌨️ 快捷键说明

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