📄 ser400_01.pas.svn-base
字号:
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 + -