📄 tas450_01.pas.svn-base
字号:
unit Tas450_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_12, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBTL, ExtCtrls, ComCtrls, ToolWin, TeeProcs, TeEngine, Chart,
DbChart, Buttons, StdCtrls, Series, fr_Class, TeeFunci;
type
TTas450_01Form = class(TBas200_12Form)
Splitter1: TSplitter;
DBChart1: TDBChart;
ADOQuery1: TADOQuery;
lblYear: TLabel;
cbYear: TComboBox;
sbSearch: TSpeedButton;
ADODataSet1FName: TStringField;
ADODataSet1FTotal1: TIntegerField;
ADODataSet1FTotal2: TIntegerField;
ADODataSet1FTotal3: TIntegerField;
ADODataSet1FTotal4: TIntegerField;
ADODataSet1FTotal5: TIntegerField;
ADODataSet1FTotal6: TIntegerField;
ADODataSet1FTotal7: TIntegerField;
ADODataSet1FTotal8: TIntegerField;
ADODataSet1FTotal9: TIntegerField;
ADODataSet1FTotal10: TIntegerField;
ADODataSet1FTotal11: TIntegerField;
ADODataSet1FTotal12: TIntegerField;
ADODataSet1FTotal: TIntegerField;
ADODataSet1FNo: TIntegerField;
ADODataSet1FParent: TIntegerField;
dxDBTreeList1FName: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal1: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal2: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal3: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal4: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal5: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal6: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal7: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal8: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal9: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal10: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal11: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal12: TdxDBTreeListMaskColumn;
dxDBTreeList1FTotal: TdxDBTreeListMaskColumn;
ActOpen: TAction;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Series1: TLineSeries;
Series2: TLineSeries;
TeeFunction1: TAverageTeeFunction;
ADODataSet2: TADODataSet;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
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 dxDBTreeList1FTotal7DrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure dxDBTreeList1FTotal8DrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure dxDBTreeList1FTotal9DrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure dxDBTreeList1FTotal10DrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure dxDBTreeList1FTotal11DrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure dxDBTreeList1FTotal12DrawSummaryFooter(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..13] of double;
procedure GetData(AYear:string);
procedure SetFieldValue(AMonth,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
Tas450_01Form: TTas450_01Form;
implementation
uses SYSDATA, CommFun, Tas510_01;
{$R *.dfm}
procedure TTas450_01Form.SetInterface;
var
AYear:string;
begin
inherited;
Caption:=GetDBString('TAS45001001'); //服务客户数量
lblYear.Caption:=GetDBString('TAS45001002'); //年度
sbSearch.Caption:=GetDBString('TAS45001004'); //查询
ADODataSet1FName.DisplayLabel:=GetDBString('TAS45001006'); //名称
ADODataSet1FTotal1.DisplayLabel:=GetDBString('TAS45001007'); //一月
ADODataSet1FTotal2.DisplayLabel:=GetDBString('TAS45001008'); //二月
ADODataSet1FTotal3.DisplayLabel:=GetDBString('TAS45001009'); //三月
ADODataSet1FTotal4.DisplayLabel:=GetDBString('TAS45001010'); //四月
ADODataSet1FTotal5.DisplayLabel:=GetDBString('TAS45001011'); //五月
ADODataSet1FTotal6.DisplayLabel:=GetDBString('TAS45001012'); //六月
ADODataSet1FTotal7.DisplayLabel:=GetDBString('TAS45001013'); //七月
ADODataSet1FTotal8.DisplayLabel:=GetDBString('TAS45001014'); //八月
ADODataSet1FTotal9.DisplayLabel:=GetDBString('TAS45001015'); //九月
ADODataSet1FTotal10.DisplayLabel:=GetDBString('TAS45001016'); //十月
ADODataSet1FTotal11.DisplayLabel:=GetDBString('TAS45001017'); //十一月
ADODataSet1FTotal12.DisplayLabel:=GetDBString('TAS45001018'); //十二月
ADODataSet1FTotal.DisplayLabel:=GetDBString('TAS45001019'); //小计
cbYear.Clear;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select distinct year('+AByTotal+') from TAS510');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
if SYSDM.qryQuery.Fields[0].AsString<>'' then
cbYear.Items.Add(SYSDM.qryQuery.Fields[0].AsString);
SYSDM.qryQuery.Next;
end;
AYear:=FormatDateTime('yyyy',GetServerDate);
if cbYear.Items.IndexOf(AYear)=-1 then cbYear.Items.Add(AYear);
cbYear.ItemIndex:=cbYear.Items.IndexOf(AYear); //设置今年的年份
end;
procedure TTas450_01Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
sbSearch.Click;
end;
procedure TTas450_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
ADOQuery1.Close;
end;
procedure TTas450_01Form.sbSearchClick(Sender: TObject);
var
AMonth: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;
Screen.Cursor:=crHourGlass;
if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
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('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('FTotal7',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal8',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal9',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal10',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal11',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal12',ftInteger,0);
ADODataSet1.FieldDefs.Add('FTotal',ftInteger,0);
ADODataSet1.CreateDataSet;
GetData(cbYear.Text);
ADODataSet1.EnableControls;
ADODataSet2.Close;
ADODataSet2.FieldDefs.Clear;
ADODataSet2.FieldDefs.Add('FMonth',ftInteger,0);
ADODataSet2.FieldDefs.Add('FTotal',ftInteger,0);
ADODataSet2.CreateDataSet;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 1 as FTotal,T510_016,T100_001,month('+AByTotal+') as FMonth');
ADOQuery1.SQL.Add('from TAS510,TAS100');
ADOQuery1.SQL.Add('where T510_004=T100_001 and year('+AByTotal+')='+cbYear.Text);
ADOQuery1.SQL.Add('group by T100_001,T510_016,month('+AByTotal+')');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
AMonth:=ADOQuery1.FieldByName('FMonth').Value;
if ADODataSet2.Locate('FMonth',AMonth,[]) then
begin
ADODataSet2.Edit;
ADODataSet2.FieldByName('FTotal').Value:=ADODataSet2.FieldByName('FTotal').Value+ADOQuery1.FieldByName('FTotal').Value;
ADODataSet2.Post;
end else
begin
ADODataSet2.Append;
ADODataSet2.FieldByName('FMonth').Value:=AMonth;
ADODataSet2.FieldByName('FTotal').Value:=ADOQuery1.FieldByName('FTotal').Value;
ADODataSet2.Post;
end;
ADOQuery1.Next;
end;
DBChart1.RefreshData;
Screen.Cursor:=crDefault;
end;
procedure TTas450_01Form.SetFieldValue(AMonth,AValue:Integer);
begin
if not (ADODataSet1.State in [dsInsert,dsEdit]) then Exit;
case AMonth of
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;
6: ADODataSet1.FieldByName('FTotal6').Value:=ADODataSet1.FieldByName('FTotal6').AsInteger+AValue;
7: ADODataSet1.FieldByName('FTotal7').Value:=ADODataSet1.FieldByName('FTotal7').AsInteger+AValue;
8: ADODataSet1.FieldByName('FTotal8').Value:=ADODataSet1.FieldByName('FTotal8').AsInteger+AValue;
9: ADODataSet1.FieldByName('FTotal9').Value:=ADODataSet1.FieldByName('FTotal9').AsInteger+AValue;
10: ADODataSet1.FieldByName('FTotal10').Value:=ADODataSet1.FieldByName('FTotal10').AsInteger+AValue;
11: ADODataSet1.FieldByName('FTotal11').Value:=ADODataSet1.FieldByName('FTotal11').AsInteger+AValue;
12: ADODataSet1.FieldByName('FTotal12').Value:=ADODataSet1.FieldByName('FTotal12').AsInteger+AValue;
end;
ADODataSet1.FieldByName('FTotal').Value:=ADODataSet1.FieldByName('FTotal').AsInteger+AValue;
ATotal[13]:=ATotal[13]+AValue;
end;
//将下级任务类别数量累加到上级任务类别
procedure TTas450_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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -