📄 ser410_01.pas.svn-base
字号:
AValue:=ADOQuery1.FieldByName('FTotal').AsInteger;
AMonth:=ADOQuery1.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,1);
ADODataSet1.Post;
ATotal[AMonth]:=ATotal[AMonth]+AValue;
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;
AValue:=ADOQuery1.FieldByName('FTotal').AsInteger;
AMonth:=ADOQuery1.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,1);
ADODataSet1.Post;
ATotal[AMonth]:=ATotal[AMonth]+AValue;
end;
ADOQuery1.Next;
end;
//已完成數量統計 按实际完成日期来统计
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select count(S500_001) as FTotal,I150_005,I120_003,month(S500_026) as FMonth');
ADOQuery2.SQL.Add(' from SER500,INV120,INV150,SER110');
ADOQuery2.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 and year(S500_026)='+AYear);
ADOQuery2.SQL.Add(' GROUP BY I150_005,I120_003,month(S500_026)');
ADOQuery2.Open;
while not ADOQuery2.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery2.FieldByName('I150_005').Value,[]) then
begin
ADODataSet1.Edit;
AValue:=ADOQuery2.FieldByName('FFinish').AsInteger;
AMonth:=ADOQuery2.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,2);
ADODataSet1.Post;
AFinish[AMonth]:=AFinish[AMonth]+AValue;
end;
ADOQuery2.Next;
end;
end;
procedure TSer410_01Form.ByCustomer(AYear:string); //按客户
var
AValue,AMonth:Integer;
begin
//服務總數統計 按申报日期来统计
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select count(S500_001) as FTotal,O150_001,O150_003, month(S500_007) as FMonth');
ADOQuery1.SQL.Add('from ORD150,SER500 ');
ADOQuery1.SQL.Add('where S500_017=O150_001 and year(S500_007)='+AYear);
ADOQuery1.SQL.Add('group by O150_001,O150_003,month(S500_007)');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery1.FieldByName('O150_001').Value,[]) then
begin
ADODataSet1.Edit;
AValue:=ADOQuery1.FieldByName('FTotal').AsInteger;
AMonth:=ADOQuery1.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,1);
ADODataSet1.Post;
ATotal[AMonth]:=ATotal[AMonth]+AValue;
end else
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').AsInteger;
AMonth:=ADOQuery1.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,1);
ADODataSet1.Post;
ATotal[AMonth]:=ATotal[AMonth]+AValue;
end;
ADOQuery1.Next;
end;
//已完成數量統計 按实际完成日期来统计
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select count(S500_001) as FTotal,O150_001,O150_003, month(S500_026) as FMonth');
ADOQuery2.SQL.Add('from ORD150,SER500 ');
ADOQuery2.SQL.Add('where S500_017=O150_001 and year(S500_026)='+AYear);
ADOQuery2.SQL.Add('group by O150_001,O150_003,month(S500_026)');
ADOQuery2.Open;
while not ADOQuery2.Eof do
begin
if ADODataSet1.Locate('FNo',ADOQuery2.FieldByName('O150_001').Value,[]) then
begin
ADODataSet1.Edit;
AValue:=ADOQuery2.FieldByName('FFinish').AsInteger;
AMonth:=ADOQuery2.FieldByName('FMonth').AsInteger;
SetFieldValue(AMonth,AValue,2);
ADODataSet1.Post;
AFinish[AMonth]:=AFinish[AMonth]+AValue;
end;
ADOQuery2.Next;
end;
end;
procedure TSer410_01Form.sbSearchClick(Sender: TObject);
var
I:Integer;
begin
inherited;
//查询
ATotal[1]:=0; ATotal[2]:=0; ATotal[3]:=0; ATotal[4]:=0; ATotal[5]:=0;
ATotal[6]:=0; ATotal[7]:=0; ATotal[8]:=0; ATotal[9]:=0; ATotal[10]:=0;
ATotal[11]:=0; ATotal[12]:=0; ATotal[13]:=0;
AFinish[1]:=0; AFinish[2]:=0; AFinish[3]:=0; AFinish[4]:=0; AFinish[5]:=0;
AFinish[6]:=0; AFinish[7]:=0; AFinish[8]:=0; AFinish[9]:=0; AFinish[10]:=0;
AFinish[11]:=0; AFinish[12]:=0; AFinish[13]:=0;
Screen.Cursor:=crHourGlass;
ADOQuery1.Close;
ADOQuery2.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('FTotal1',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish1',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent1',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal2',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish2',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent2',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal3',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish3',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent3',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal4',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish4',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent4',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal5',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish5',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent5',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal6',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish6',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent6',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal7',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish7',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent7',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal8',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish8',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent8',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal9',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish9',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent9',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal10',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish10',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent10',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal11',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish11',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent11',ftFloat,0);
ADODataSet1.FieldDefs.Add('FTotal12',ftInteger,0);
ADODataSet1.FieldDefs.Add('FFinish12',ftInteger,0);
ADODataSet1.FieldDefs.Add('FPercent12',ftFloat,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(cbYear.Text); //按服务类别
1:ByCallClass(cbYear.Text); //按来电类型
2:ByItemClass(cbYear.Text); //按産品類別
3:ByCustomer(cbYear.Text); //按客户
end;
ADODataSet1.EnableControls;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select count(S500_001) as FTotal,month(S500_007) as FMonth');
ADOQuery1.SQL.Add('from SER500');
ADOQuery1.SQL.Add('where year(S500_007)='+cbYear.Text);
ADOQuery1.SQL.Add('group by month(S500_007)');
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select count(S500_001) as FTotal,month(S500_007) as FMonth');
ADOQuery2.SQL.Add('from SER500');
ADOQuery2.SQL.Add('where S500_003=12 and year(S500_007)='+cbYear.Text);
ADOQuery2.SQL.Add('group by month(S500_007)');
ADOQuery2.Open;
DBChart1.RefreshData;
// DBChart2.RefreshData;
for I:=0 to DBChart1.Series[0].Count-1 do
DBChart1.Series[0].XLabel[I]:=DBChart1.Series[0].XLabel[I]+'月';
// for I:=0 to DBChart2.Series[0].Count-1 do
// DBChart1.Series[0].XLabel[I]:=DBChart2.Series[0].XLabel[I]+'月';
Screen.Cursor:=crDefault;
end;
procedure TSer410_01Form.dxDBTreeList1FTotal1DrawSummaryFooter(
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 TSer410_01Form.dxDBTreeList1FFinish1DrawSummaryFooter(
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',AFinish[1]);
end;
procedure TSer410_01Form.dxDBTreeList1FPercent1DrawSummaryFooter(
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%',(AFinish[1]/ATotal[1])*100);
end;
procedure TSer410_01Form.dxDBTreeList1FTotal2DrawSummaryFooter(
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 TSer410_01Form.dxDBTreeList1FFinish2DrawSummaryFooter(
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',AFinish[2]);
end;
procedure TSer410_01Form.dxDBTreeList1FPercent2DrawSummaryFooter(
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 AText:='0.00%' else AText:=FormatFloat(',0.00%',(AFinish[2]/ATotal[2])*100);
end;
procedure TSer410_01Form.dxDBTreeList1FTotal3DrawSummaryFooter(
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 TSer410_01Form.dxDBTreeList1FFinish3DrawSummaryFooter(
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',AFinish[3]);
end;
procedure TSer410_01Form.dxDBTreeList1FPercent3DrawSummaryFooter(
Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
begin
inherited;
if ATotal[3]=0 then AText:='0.00%' else AText:=FormatFloat(',0.00%',(AFinish[3]/ATotal[3])*100);
end;
procedure TSer410_01Form.dxDBTreeList1FTotal4DrawSummaryFooter(
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[4]);
end;
procedure TSer410_01Form.dxDBTreeList1FFinish4DrawSummaryFooter(
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',AFinish[4]);
end;
procedure TSer410_01Form.dxDBTreeList1FPercent4DrawSummaryFooter(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -