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

📄 ser400_01.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
    ADODataSet1.FieldByName('FPercent').Value:=0;
    ADODataSet1.Post;  
    ATotal[1]:=ATotal[1]+ADOQuery1.FieldByName('FTotal').Value;
    ADOQuery1.Next;
  end;
  //已完成數量統計     按实际完成日期来统计
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select count(S500_001) as FTotal,I120_003,I150_005');
  ADOQuery1.SQL.Add('  from SER500,INV120,INV150,SER110');
  ADOQuery1.SQL.Add('  where SER500.S500_018=INV150.I150_005 and INV150.I150_005=INV120.I120_001 and SER500.S500_003=SER110.S110_001 and  SER110.S110_002=12');
  ADOQuery1.SQL.Add('and S500_026>='+GetDateString(AFromDate)+' and S500_026<='+GetDateString(AToDate));
  ADOQuery1.SQL.Add('  GROUP BY I150_005,I120_003');
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('I150_005').Value,[]) then
    begin
      ADODataSet1.Edit;
      ADODataSet1.FieldByName('FFinish').Value:=ADOQuery1.FieldByName('FFinish').Value;
      ADODataSet1.FieldByName('FPercent').Value:=(ADOQuery1.FieldByName('FFinish').Value/ADODataSet1.FieldByName('FTotal').Value)*100;
      ADODataSet1.Post;
    end else
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('FNo').Value:=ADOQuery1.FieldByName('I150_005').Value;
      ADODataSet1.FieldByName('FName').Value:=ADOQuery1.FieldByName('I120_003').Value;
      ADODataSet1.FieldByName('FParent').Value:=ADOQuery1.FieldByName('I150_005').Value;
      ADODataSet1.FieldByName('FTotal').Value:=0;
      ADODataSet1.FieldByName('FFinish').Value:=ADOQuery1.FieldByName('FFinish').Value;
      ADODataSet1.FieldByName('FPercent').Value:=100;
      ADODataSet1.Post;
    end;
    ATotal[2]:=ATotal[2]+ADOQuery1.FieldByName('FFinish').Value;
    ADOQuery1.Next;
  end;
end;

procedure TSer400_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;
  Screen.Cursor:=crHourGlass;
  ABusy:=True;
  ATotal[1]:=0;
  ATotal[2]:=0;
  ADOQuery1.Close;
  ADODataSet1.DisableControls;
  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('FTotal',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FFinish',ftInteger,0);
  ADODataSet1.FieldDefs.Add('FPercent',ftFloat,0);
  ADODataSet1.CreateDataSet;

  case cbType.ItemIndex of
    0:ByServerClass(edtFromDate.Date,edtToDate.Date);  //按服务類別
    1:ByCallClass(edtFromDate.Date,edtToDate.Date);  //按来电類別
    2:ByPROClass(edtFromDate.Date,edtToDate.Date);  //按产品类别
  end;
  ADODataSet1.EnableControls;

  ADODataSet2.Close;
  ADODataSet2.FieldDefs.Clear;
  ADODataSet2.FieldDefs.Add('FName',ftString,50);
  ADODataSet2.FieldDefs.Add('FTotal',ftInteger,0);
  ADODataSet2.FieldDefs.Add('FFinish',ftInteger,0);
  ADODataSet2.CreateDataSet;
  ADODataSet2.Append;
  ADODataSet2.FieldByName('FName').Value:=DBChart1.Title.Text.Text;  //總數分析
  ADODataSet2.FieldByName('FTotal').Value:=ATotal[1];
  ADODataSet2.FieldByName('FFinish').Value:=ATotal[2];
  ADODataSet2.Post;
  DBChart1.RefreshData;
  ABusy:=False;
  ADODataSet1AfterScroll(ADODataSet1);
  Screen.Cursor:=crDefault;
end;

procedure TSer400_01Form.dxDBTreeList1DblClick(Sender: TObject);
begin
{  inherited;                                显示明细窗体
  if ADODataSet1.IsEmpty then Exit;
  Tas510_01Form:=TTas510_01Form.Create(Application);
  Tas510_01Form.cbClass.Text:=ADODataSet1.FieldByName('FName').Value;
  Tas510_01Form.edtFromDate.Date:=edtFromDate.Date;
  Tas510_01Form.edtToDate.Date:=edtToDate.Date;
  Tas510_01Form.sbSearch.Click;
  Tas510_01Form.ShowModal;
}end;

procedure TSer400_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 TSer400_01Form.dxDBTreeList1FFinishDrawSummaryFooter(
  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 TSer400_01Form.dxDBTreeList1FPercentDrawSummaryFooter(
  Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  if ATotal[1]=0 then AText:='0.00%' else AText:=FormatFloat(',0.00%',(ATotal[2]/ATotal[1])*100);
end;

procedure TSer400_01Form.ActOpenExecute(Sender: TObject);
//var
//  AFieldInfo:TwwFieldInfo;
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.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:='I120_003';
    AFieldInfo.DisplayLabel:=Tas510_01Form.ADOQuery1I120_003.DisplayLabel;
    AFieldInfo.MatchType:=fdMatchStart;
    AFieldInfo.CaseSensitive:=False;
    AFieldInfo.NonMatching:=False;
    AFieldInfo.FilterValue:=ADODataSet1FName.Value;;
    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;
  Screen.Cursor:=crDefault;
  Tas510_01Form.ShowModal;
//  if Assigned(AFieldInfo) then AFieldInfo.Free;   }
end;

procedure TSer400_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
var
  AValue,AValue1,AValue2:Double;
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='FFinish' then ParValue:=ADODataSet1FFinish.DisplayLabel  //已完成数
  else if ParName='FPercent' then ParValue:=ADODataSet1FPercent.DisplayLabel  //完工比率

  else if ParName='FSum' then ParValue:=GetDBString('TAS40001012')  //合计
  else if ParName='FSum1' then
  begin
    AValue:=dxDBTreeList1.ColumnByFieldName('FTotal').SummaryFooterValue;
    if cbType.ItemIndex=0 then AValue:=AValue/2;
    ParValue:=FormatFloat(',0.00',AValue);
  end
  else if ParName='FSum2' then
  begin
    AValue:=dxDBTreeList1.ColumnByFieldName('FFinish').SummaryFooterValue;
    if cbType.ItemIndex=0 then AValue:=AValue/2;
    ParValue:=FormatFloat(',0.00',AValue);
  end
  else if ParName='FSum3' then
  begin
    AValue1:=dxDBTreeList1.ColumnByFieldName('FTotal').SummaryFooterValue;
    AValue2:=dxDBTreeList1.ColumnByFieldName('FFinish').SummaryFooterValue;
    if cbType.ItemIndex=0 then
    begin
      AValue1:=AValue1/2;
      AValue2:=AValue2/2;
    end;
    if AValue1=0 then AValue:=0 else AValue:=(AValue2/AValue1)*100;
    ParValue:=FormatFloat(',0.00%',AValue);
  end
end;

procedure TSer400_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\SER400A.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\SER400B.bmp');
    DBChart2.bevelOuter:=bvLowered;
  finally
    Free;
  end;

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

procedure TSer400_01Form.ADODataSet1AfterScroll(DataSet: TDataSet);
var
  AParent,ANo:Integer;
begin
  inherited;
  if ABusy then Exit;
  if ADODataSet1.IsEmpty then Exit;
  ADODataSet3.Close;
  ADODataSet3.FieldDefs.Clear;
  ADODataSet3.FieldDefs.Add('FName',ftString,50);
  ADODataSet3.FieldDefs.Add('FTotal',ftInteger,0);
  ADODataSet3.FieldDefs.Add('FFinish',ftInteger,0);
  ADODataSet3.CreateDataSet;
  ANo:=ADODataSet1.FieldByName('FNo').Value;
  AParent:=ADODataSet1.FieldByName('FParent').Value;
  ABusy:=True;
  ADODataSet1.DisableControls;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    if ADODataSet1.FieldByName('FParent').Value=AParent then
    begin
      ADODataSet3.Append;
      ADODataSet3.FieldByName('FName').Value:=ADODataSet1.FieldByName('FName').Value;
      ADODataSet3.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').Value;
      ADODataSet3.FieldByName('FFinish').Value:=ADODataSet1.FieldByName('FFinish').Value;
      ADODataSet3.Post;
    end;
    ADODataSet1.Next;
  end;
  ADODataSet1.Locate('FNo',ANo,[]);
  ADODataSet1.EnableControls;
  DBChart2.RefreshData;
  ABusy:=False;
end;

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

initialization
  RegisterClass(TSer400_01Form);

finalization
  UnRegisterClass(TSer400_01Form);

end.

⌨️ 快捷键说明

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