unit U_KHTopList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls, ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient, cxDropDownEdit, MovePanel, Menus, cxCheckBox, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls, cxPC, Series, TeEngine, TeeProcs, Chart, DbChart, cxSplitter; type TfrmKHTopList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBClose: TToolButton; Panel1: TPanel; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; cxGridPopupMenu1: TcxGridPopupMenu; CDS_Main: TClientDataSet; Label1: TLabel; KHName: TEdit; Label2: TLabel; BegDate: TDateTimePicker; cxPageControl1: TcxPageControl; cxTabSheet1: TcxTabSheet; cxTabSheet2: TcxTabSheet; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column1: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v2Column5: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1Column9: TcxGridDBColumn; v1Column10: TcxGridDBColumn; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; v1Column11: TcxGridDBColumn; v2Column2: TcxGridDBColumn; MovePanel2: TMovePanel; cxGridPopupMenu2: TcxGridPopupMenu; Label3: TLabel; RadioGroup1: TRadioGroup; DBChart1: TDBChart; Series1: TBarSeries; Series2: TFastLineSeries; cxSplitter1: TcxSplitter; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBRafreshClick(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure KHNameChange(Sender: TObject); procedure cxPageControl1Change(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure Tv2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); private FLeft,FTop:Integer; procedure InitGrid(); procedure Intsub(); { Private declarations } public { Public declarations } FMainid,FSubId,FConNo,FColor,FCodeName:String; end; var frmKHTopList: TfrmKHTopList; implementation uses U_DataLink,U_Fun; {$R *.dfm} procedure TfrmKHTopList.FormDestroy(Sender: TObject); begin frmKHTopList:=nil; end; procedure TfrmKHTopList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TfrmKHTopList.InitGrid(); begin MovePanel2.Visible:=True; MovePanel2.Refresh; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; sql.Clear; SQL.Add('exec P_View_KHTop :FYear,:CXState'); Parameters.ParamByName('FYear').Value:=Trim(FormatDateTime('yyyy',BegDate.Date)); if cxPageControl1.ActivePageIndex=0 then begin Parameters.ParamByName('CXState').Value:='月'; end else begin Parameters.ParamByName('CXState').Value:='季度'; end; Open; end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally ADOQueryMain.EnableControls; end; MovePanel2.Visible:=False; end; procedure TfrmKHTopList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmKHTopList.TBCloseClick(Sender: TObject); begin WriteCxGrid('Tv1',Tv1,'客户排行'); WriteCxGrid('Tv2',Tv2,'客户排行'); Close; end; procedure TfrmKHTopList.FormShow(Sender: TObject); begin BegDate.Date:=SGetServerDate(ADOQueryTemp); ReadCxGrid('Tv1',Tv1,'客户排行'); ReadCxGrid('Tv2',Tv2,'客户排行'); end; procedure TfrmKHTopList.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); end; end; procedure TfrmKHTopList.KHNameChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmKHTopList.cxPageControl1Change(Sender: TObject); begin InitGrid(); Intsub(); end; procedure TfrmKHTopList.Intsub(); var i:integer; begin if cxPageControl1.ActivePageIndex=0 then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select Convert(varchar(7),CRTime,120) YF,SUM(Money) SumMoney '); sql.Add(' from YF_Money_CR A'); sql.Add(' where ISNULL(CRType,'''')=''应收款登记'' and isnull(A.YFType,'''')=''自动生成'''); sql.Add(' and A.FactoryName='''+trim(CDS_Main.fieldbyname('KHName').AsString)+''' '); sql.Add(' and Convert(varchar(4),CRTime,120)='''+Trim(FormatDateTime('yyyy',BegDate.Date))+''''); SQL.Add(' group by Convert(varchar(7),CRTime,120)'); Open; end; end else begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select Sum(Money) SumMoney,YF '); sql.Add(' from (select YF=(case when Month(CRTime)>=1 and Month(CRTime)<4 then ''第一季度'''); sql.Add(' when Month(CRTime)>=4 and Month(CRTime)<7 then ''第二季度'''); sql.Add(' when Month(CRTime)>=7 and Month(CRTime)<10 then ''第三季度'''); sql.Add(' when Month(CRTime)>=10 and Month(CRTime)<=12 then ''第四季度'' end)'); sql.Add(',Money'); sql.Add(' from YF_Money_CR A'); sql.Add(' where ISNULL(CRType,'''')=''应收款登记'' and isnull(A.YFType,'''')=''自动生成'''); sql.Add(' and A.FactoryName='''+trim(CDS_Main.fieldbyname('KHName').AsString)+''' '); sql.Add(' and Convert(varchar(4),CRTime,120)='''+Trim(FormatDateTime('yyyy',BegDate.Date))+''') AA'); sql.Add(' group by YF'); Open; end; end; for i:=0 to DBChart1.SeriesCount-1 do begin DBChart1.Series[i].Active:=False; end; DBChart1.Series[RadioGroup1.ItemIndex].Active:=True; DBChart1.Series[RadioGroup1.ItemIndex].DataSource:=nil; DBChart1.Series[RadioGroup1.ItemIndex].DataSource:=ADOQueryCmd; DBChart1.Series[RadioGroup1.ItemIndex].XLabelsSource:='YF'; DBChart1.Series[RadioGroup1.ItemIndex].YValues.ValueSource:='SumMoney'; end; procedure TfrmKHTopList.RadioGroup1Click(Sender: TObject); begin Intsub(); end; procedure TfrmKHTopList.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin Intsub(); end; procedure TfrmKHTopList.Tv2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin Intsub(); end; end.