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

📄 tas460_01.pas.svn-base

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

  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('FPercent').Value:=(ADODataSet1.FieldByName('FTotal').Value/ASum)*100;
    ADODataSet1.FieldByName('FAvg').Value:=ADODataSet1.FieldByName('FTotal').Value/ADODataSet1.FieldByName('FQty').Value;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  if ASum=0 then ATotal[3]:=0 else ATotal[3]:=100;
end;

procedure TTas460_01Form.ByCustomer(AFromDate, AToDate: TDateTime);  //按客户
var
  AValue,ASum:Double;
begin
  ASum:=0;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select sum(T520_017*T520_008) as FTotal,O150_001,O150_002,O150_003');
  ADOQuery1.SQL.Add('from TAS510,ORD150,TAS520');
  ADOQuery1.SQL.Add('where T510_003 in ('+AStatusNo+') and T510_016=O150_001 and T510_001=T520_002 and '+AByFinish+'>='+GetDateString(AFromDate)+' and '+AByFinish+'<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by O150_001,O150_002,O150_003');
  ADOQuery1.SQL.Add('order by O150_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('O150_001').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('O150_003').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('O150_001').Value;
    AValue:=ADOQuery1.FieldByName('FTotal').AsFloat;
    ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsFloat+AValue;
    ADODataSet1.FieldByName('FQty').Value:=GetTaskQty(ADOQuery1.FieldByName('O150_001').AsString,AFromDate,AToDate,'C');
    ADODataSet1.Post;
    ASum:=ASum+AValue;
    ATotal[1]:=ATotal[1]+AValue;
    ATotal[2]:=ATotal[2]+ADODataSet1.FieldByName('FQty').AsFloat;
    ADOQuery1.Next;
  end;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('FPercent').Value:=(ADODataSet1.FieldByName('FTotal').Value/ASum)*100;
    ADODataSet1.FieldByName('FAvg').Value:=ADODataSet1.FieldByName('FTotal').Value/ADODataSet1.FieldByName('FQty').Value;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  if ASum=0 then ATotal[3]:=0 else ATotal[3]:=100;
end;

procedure TTas460_01Form.ByItemClass(AFromDate, AToDate: TDateTime);  //按产品类别
var
  AValue,ASum:Double;
begin
  ASum:=0;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select sum(T520_017*T520_008) as FTotal,I120_001,I120_002,I120_003');
  ADOQuery1.SQL.Add('from TAS510,INV150,INV120,TAS520');
  ADOQuery1.SQL.Add('where T510_003 in ('+AStatusNo+') and T510_017=I150_001 and I150_005=I120_001 and T510_001=T520_002 and '+AByFinish+'>='+GetDateString(AFromDate)+' and '+AByFinish+'<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by I120_001,I120_002,I120_003');
  ADOQuery1.SQL.Add('order by I120_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('I120_001').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('I120_003').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('I120_001').Value;
    AValue:=ADOQuery1.FieldByName('FTotal').AsFloat;
    ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsFloat+AValue;
    ADODataSet1.FieldByName('FQty').Value:=GetTaskQty(ADOQuery1.FieldByName('I120_001').AsString,AFromDate,AToDate,'A');
    ADODataSet1.Post;
    ASum:=ASum+AValue;
    ATotal[1]:=ATotal[1]+AValue;
    ATotal[2]:=ATotal[2]+ADODataSet1.FieldByName('FQty').AsFloat;
    ADOQuery1.Next;
  end;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('FPercent').Value:=(ADODataSet1.FieldByName('FTotal').Value/ASum)*100;
    ADODataSet1.FieldByName('FAvg').Value:=ADODataSet1.FieldByName('FTotal').Value/ADODataSet1.FieldByName('FQty').Value;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  if ASum=0 then ATotal[3]:=0 else ATotal[3]:=100;
end;

procedure TTas460_01Form.ByItem(AFromDate, AToDate: TDateTime);  //按产品
var
  AValue,ASum:Double;
begin
  ASum:=0;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select sum(T520_017*T520_008) as FTotal,I150_001,I150_002,I150_003');
  ADOQuery1.SQL.Add('from TAS510,INV150,TAS520');
  ADOQuery1.SQL.Add('where T510_003 in ('+AStatusNo+') and T510_017=I150_001 and T510_001=T520_002 and '+AByFinish+'>='+GetDateString(AFromDate)+' and '+AByFinish+'<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by I150_001,I150_002,I150_003');
  ADOQuery1.SQL.Add('order by I150_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('I150_001').Value;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('I150_003').Value;
    ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('I150_001').Value;
    AValue:=ADOQuery1.FieldByName('FTotal').AsFloat;
    ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsFloat+AValue;
    ADODataSet1.FieldByName('FQty').Value:=GetTaskQty(ADOQuery1.FieldByName('I150_001').AsString,AFromDate,AToDate,'I');
    ADODataSet1.Post;
    ASum:=ASum+AValue;
    ATotal[1]:=ATotal[1]+AValue;
    ATotal[2]:=ATotal[2]+ADODataSet1.FieldByName('FQty').AsFloat;
    ADOQuery1.Next;
  end;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('FPercent').Value:=(ADODataSet1.FieldByName('FTotal').Value/ASum)*100;
    ADODataSet1.FieldByName('FAvg').Value:=ADODataSet1.FieldByName('FTotal').Value/ADODataSet1.FieldByName('FQty').Value;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  if ASum=0 then ATotal[3]:=0 else ATotal[3]:=100;
end;

procedure TTas460_01Form.ByProject(AFromDate, AToDate: TDateTime); //按项目
var
  AValue,ASum:Double;
  I:Integer;
begin
  ASum:=0;
  I:=0;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select sum(T520_017*T520_008) as FTotal,T500_001,T500_002');
  ADOQuery1.SQL.Add('from TAS510,TAS500,TAS520');
  ADOQuery1.SQL.Add('where T510_003 in ('+AStatusNo+') and T510_008=2 and T510_009=T500_001 and T510_001=T520_002 and '+AByFinish+'>='+GetDateString(AFromDate)+' and '+AByFinish+'<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('group by T500_001,T500_002');
  ADOQuery1.SQL.Add('order by T500_001');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    I:=I+1;
    ADODataSet1.Append;
    ADODataSet1.FieldByName('FNo').Value:=I;
    ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('T500_002').Value;
    ADODataSet1.FieldByName('FParent').Value:=I;
    AValue:=ADOQuery1.FieldByName('FTotal').AsFloat;
    ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsInteger+AValue;
    ADODataSet1.FieldByName('FQty').Value:=GetTaskQty(ADOQuery1.FieldByName('T500_001').AsString,AFromDate,AToDate,'P');
    ADODataSet1.Post;
    ASum:=ASum+AValue;
    ATotal[1]:=ATotal[1]+AValue;
    ATotal[2]:=ATotal[2]+ADODataSet1.FieldByName('FQty').AsFloat;
    ADOQuery1.Next;
  end;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ADODataSet1.Edit;
    ADODataSet1.FieldByName('FPercent').Value:=(ADODataSet1.FieldByName('FTotal').Value/ASum)*100;
    ADODataSet1.FieldByName('FAvg').Value:=ADODataSet1.FieldByName('FTotal').Value/ADODataSet1.FieldByName('FQty').Value;
    ADODataSet1.Post;
    ADODataSet1.Next;
  end;
  if ASum=0 then ATotal[3]:=0 else ATotal[3]:=100;
end;

procedure TTas460_01Form.dxDBTreeList1FTotalDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  AText:=FormatFloat(',0.00',ATotal[1]);
end;

procedure TTas460_01Form.dxDBTreeList1FPercentDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  AText:=FormatFloat(',0.00%',ATotal[3]);
end;

procedure TTas460_01Form.ActOpenExecute(Sender: TObject);
var
  AFieldInfo:TwwFieldInfo;
  ACode:string;
begin
  inherited;
//查看
  if ADODataSet1.IsEmpty then Exit;
  Screen.Cursor:=crHourGlass;
  Tas510_01Form:=TTas510_01Form.Create(Application);
  Tas510_01Form.edtFromDate.Date:=edtFromDate.Date;
  Tas510_01Form.edtToDate.Date:=edtToDate.Date;
  Tas510_01Form.AField:=AByFinish;  //按实际完成日期
  Tas510_01Form.sbSearch.Click;
  AFieldInfo:=TwwFieldInfo.create;
  //按任务类别
  if cbType.ItemIndex=0 then
  begin
    Tas510_01Form.cbClass.ItemIndex:=Tas510_01Form.cbClass.Items.IndexOf(ADODataSet1FName.Value);
    Tas510_01Form.sbSearch.Click;
  end else
  //按项目
  if cbType.ItemIndex=1 then
  begin
    FilterDialog(Tas510_01Form.DataSource1,False);
    AFieldInfo.FieldName:='T510_009';
    AFieldInfo.DisplayLabel:=Tas510_01Form.ADOQuery1T510_009.DisplayLabel;
    AFieldInfo.MatchType:=fdMatchStart;
    AFieldInfo.CaseSensitive:=False;
    AFieldInfo.NonMatching:=False;
    ACode:=GetValue('select T500_001 from TAS500 where T500_002='+''''+ADODataSet1FName.Value+'''');
    AFieldInfo.FilterValue:=ACode;
    SYSDM.wwFilterDialog1.FieldInfo.Add(AFieldInfo);
    SYSDM.wwFilterDialog1.ApplyFilter;
  end else
  //按客戶
  if cbType.ItemIndex=2 then
  begin
    FilterDialog(Tas510_01Form.DataSource1,False);
    AFieldInfo.FieldName:='O150_003';
    AFieldInfo.DisplayLabel:=Tas510_01Form.ADOQuery1O150_003.DisplayLabel;
    AFieldInfo.MatchType:=fdMatchStart;
    AFieldInfo.CaseSensitive:=False;
    AFieldInfo.NonMatching:=False;
    AFieldInfo.FilterValue:=ADODataSet1FName.Value;;
    SYSDM.wwFilterDialog1.FieldInfo.Add(AFieldInfo);
    SYSDM.wwFilterDialog1.ApplyFilter;
  end;
  Tas510_01Form.ARecordCount:=GetDataSetCount(Tas510_01Form.ADOQuery1);
  Screen.Cursor:=crDefault;
  Tas510_01Form.ShowModal;
//  if Assigned(AFieldInfo) then AFieldInfo.Free;
end;

procedure TTas460_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='AType' then ParValue:=lblType.Caption  //类型
  else if ParName='ATypeValue' then ParValue:=cbType.Text  //
  else if ParName='FName' then ParValue:=ADODataSet1FName.DisplayLabel  //名称
  else if ParName='FTotal' then ParValue:=ADODataSet1FTotal.DisplayLabel  //总人工天
  else if ParName='FQty' then ParValue:=ADODataSet1FQty.DisplayLabel  //任务数量
  else if ParName='FAvg' then ParValue:=ADODataSet1FAvg.DisplayLabel  //平均人工天
  else if ParName='FPercent' then ParValue:=ADODataSet1FPercent.DisplayLabel  //所占比重
  else if ParName='FSum' then ParValue:=GetDBString('TAS46001012')  //合计
  else if ParName='FSum1' then ParValue:=FormatFloat(',0.00',ATotal[1])
  else if ParName='FSum2' then ParValue:=FormatFloat(',0.00',ATotal[2])
  else if ParName='FSum3' then ParValue:=FormatFloat(',0.00',ATotal[3])
end;

procedure TTas460_01Form.ActPrintExecute(Sender: TObject);
var
  AfrReport:TfrReport;
begin
  //inherited;
  with TBitmap.Create do
  try
    DBChart1.bevelOuter:=bvNone;
    Width:=DBChart1.Width;
    Height:=DBChart1.Height;
    DBChart1.BufferedDisplay:=False;
    DBChart1.Draw(Canvas,Rect(0,0,Width,Height));
    DBChart1.BufferedDisplay:=True;
    SaveToFile(ASystemPath+'Report\TAS460A.bmp');
    DBChart1.bevelOuter:=bvLowered;
    DBChart2.bevelOuter:=bvNone;
    Width:=DBChart2.Width;
    Height:=DBChart2.Height;
    DBChart2.BufferedDisplay:=False;
    DBChart2.Draw(Canvas,Rect(0,0,Width,Height));
    DBChart2.BufferedDisplay:=True;
    SaveToFile(ASystemPath+'Report\TAS460B.bmp');
    DBChart2.bevelOuter:=bvLowered;
  finally
    Free;
  end;

  AfrReport:=TfrReport.Create(nil);
  try
    PreparedReport(ADODataSet1,AReportName,AfrReport);
    SYSDM.frDBDataSet1.DataSet:=ADODataSet1;
    ADODataSet1.DisableControls;
    SYSDM.frReport2.OnGetValue:=ReportGetValue;
    TfrPictureView(SYSDM.frReport2.FindObject('Picture2')).Picture.LoadFromFile(ASystemPath+'Report\TAS460A.bmp');
    TfrPictureView(SYSDM.frReport2.FindObject('Picture3')).Picture.LoadFromFile(ASystemPath+'Report\TAS460B.bmp');
    SYSDM.frReport2.ShowPreparedReport;
    SYSDM.frReport2.ShowReport;
    ADODataSet1.EnableControls;
  finally
    ADODataSet1.EnableControls;
    SYSDM.frReport2.Clear;
//    AfrReport.Free;
    if FileExists(ASystemPath+'Report\TAS460A.bmp') then DeleteFile(ASystemPath+'Report\TAS460A.bmp');
    if FileExists(ASystemPath+'Report\TAS460B.bmp') then DeleteFile(ASystemPath+'Report\TAS460B.bmp');
  end;
end;

procedure TTas460_01Form.dxDBTreeList1FQtyDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  AText:=FormatFloat(',0.00',ATotal[2]);
end;

procedure TTas460_01Form.dxDBTreeList1FAvgDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  if ATotal[2]=0 then ATotal[2]:=1;
  AText:=FormatFloat(',0.00',ATotal[1]/ATotal[2]);
end;

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

initialization
  RegisterClass(TTas460_01Form);

finalization
  UnRegisterClass(TTas460_01Form);

end.

⌨️ 快捷键说明

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