vw_aro_analysis.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 463 行
CPP
463 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "VW_Aro_Analysis.h"
#include "VW_Aro_sub.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"
TfrmVW_Aro_Analysis *frmVW_Aro_Analysis;
//---------------------------------------------------------------------------
__fastcall TfrmVW_Aro_Analysis::TfrmVW_Aro_Analysis(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TQueryBaseForm(Owner,chWnd,MidCode,WhereStr)
{
TComResultSet *RsQuery;
AnsiString stmp,sSql,sMaxAge;
int i;
//初始化
FilterStr="";
sSQL="";
LateBillCode="";
PageControl1->ActivePage=TabSheet1;
sgAro_Analysis->RowCount=1;
QueryGrid=sgAro_Analysis;
//获取查询语句
sSql=" select AroAgeNo,AroAgeDays from sdAroAge order by AroAgeDays ";
RsQuery=new TComResultSet(Handle,g_ClientHandle);
RsQuery->Open(sSql,"");
sgAro_Analysis->ColCount=2+RsQuery->RecordCount;
sgAro_Analysis->Cells[0][0]="客户";
RsQuery->MoveFirst();
i=1;
sMaxAge="";
while( RsQuery->Eof == 0)
{
sMaxAge=RsQuery->FieldByName("AroAgeDays");
stmp="过期"+RsQuery->FieldByName("AroAgeDays")+"天";
sgAro_Analysis->Cells[i][0]=stmp;
RsQuery->MoveNext();
i++;
}
RsQuery->Close();
if(sMaxAge != "")
sgAro_Analysis->Cells[sgAro_Analysis->ColCount-1][0]=sMaxAge+"天以上";
else
sgAro_Analysis->Cells[sgAro_Analysis->ColCount-1][0]="已过期";
delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::tbQueryClick(TObject *Sender)
{
// if(!ShowQueryWindow())
// return;
try{
StartWaitForm("正在查询,请稍候...");
FillGridWithData();
}
__finally
{
EndWaitForm();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::ClearControl(bool BringToNext)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::GetDataFromComObject()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::WaitUserInput()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::RefreshGridData(int mAction)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::DisplayBill()
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::GetBill(AnsiString BillID)
{
return;
}
//---------------------------------------------------------------------------
//获取查询语句
AnsiString __fastcall TfrmVW_Aro_Analysis::GetQueryStr()
{
AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
Selectstr="select "
+AnsiString("Client, ")
+AnsiString("AgeDays, ")
+AnsiString("Amt "); //本年累计
Fromstr=" from SDVW_Aro_Analysis_U ";
if(FilterStr=="")
Wherestr="";
else
Wherestr=" where "+FilterStr;
Orderstr=" order by Client,AgeDays ";
sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
return(sSQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::FillGridWithData()
{
TComResultSet *RsQuery;
AnsiString ItemStr,sSql,sClient;
//获取查询语句
sSql=GetQueryStr();
if(sSql=="")
return;
sgAro_Analysis->RowCount=1;
LateBillCode="";
RsQuery=new TComResultSet(Handle,g_ClientHandle);
RsQuery->Open(sSql,"");
RsQuery->MoveFirst();
sClient="";
ItemStr="";
while( RsQuery->Eof == 0)
{
if(sClient != RsQuery->FieldByName("Client")) //不同客户
{
if(ItemStr != "")
sgAro_Analysis->AddItem(ItemStr);
sClient=RsQuery->FieldByName("Client");
ItemStr=sClient+
"\t"+RsQuery->FieldByName("Amt");
}
else //相同客户
{
ItemStr=ItemStr+
"\t"+RsQuery->FieldByName("Amt");
}
RsQuery->MoveNext();
}
if(ItemStr != "")
sgAro_Analysis->AddItem(ItemStr);
RsQuery->Close();
Draw("col"); //图表分析
delete RsQuery;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmVW_Aro_Analysis::DataConvert(AnsiString sFieldName,AnsiString sFieldValue)
{
sFieldName=UpperCase(sFieldName);
return("");
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmVW_Aro_Analysis::GetDetailQueryStr()
{
AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
if(sgAro_Analysis->RowCount < 2 || sgAro_Analysis->Row == 0 ) //当前行无效
return("");
Selectstr="select "
+AnsiString("DocClient, ")
+AnsiString("DocType, ")
+AnsiString("DocCode, ")
+AnsiString("DocLine, ")
+AnsiString("DocRDate, ")
+AnsiString("OverDays=DateDiff(day,convert(datetime,DocRDate),GetDate()), ")
+AnsiString("DocCurrency, ")
+AnsiString("DocEnrate, ")
+AnsiString("DocAmt, ")
+AnsiString("NAmt=DocAmt*DocEnrate ") ;
Fromstr=" from SDVW_AR_Doc ";
Wherestr =" where DocClient='"+sgAro_Analysis->Cells[0][sgAro_Analysis->Row]+"'";
Wherestr+=" and DocAmt>0 ";
Wherestr+=" and DateDiff(day,convert(datetime,DocRDate),GetDate())>=0 ";
Orderstr=" order by DocRDate DESC,DocType,DocCode,DocLine ";
return(Selectstr+Fromstr+Wherestr+Orderstr);
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::FillGridWithDetail()
{
TComResultSet *RsQuery;
AnsiString ItemStr,sSql;
TfrmVW_Aro_sub *p;
//获取查询语句
sSql=GetDetailQueryStr();
if(sSql=="")
return;
try
{
p=new TfrmVW_Aro_sub(this);
p->sgAro_sub->RowCount=1;
RsQuery=new TComResultSet(Handle,g_ClientHandle);
RsQuery->Open(sSql,"");
RsQuery->MoveFirst();
while( RsQuery->Eof == 0)
{
ItemStr= RsQuery->FieldByName("DocClient")+
"\t"+RsQuery->FieldByName("DocType")+
"\t"+RsQuery->FieldByName("DocCode")+
"\t"+RsQuery->FieldByName("DocLine")+
"\t"+RsQuery->FieldByName("DocRDate")+
"\t"+RsQuery->FieldByName("OverDays")+
"\t"+RsQuery->FieldByName("DocCurrency")+
"\t"+RsQuery->FieldByName("DocEnrate")+
"\t"+RsQuery->FieldByName("DocAmt")+
"\t"+RsQuery->FieldByName("NAmt");
p->sgAro_sub->AddItem(ItemStr);
RsQuery->MoveNext();
}
RsQuery->Close();
if(p->sgAro_sub->RowCount > 1)
p->ShowModal();
}
__finally
{
delete RsQuery;
delete p;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::muFirstClick(TObject *Sender)
{
if(sgAro_Analysis->RowCount > 1)
{
sgAro_Analysis->Row=1;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::tbPreviousClick(TObject *Sender)
{
if(sgAro_Analysis->RowCount > 1 && sgAro_Analysis->Row > 1)
{
sgAro_Analysis->Row=sgAro_Analysis->Row-1;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::muNextClick(TObject *Sender)
{
if(sgAro_Analysis->RowCount > 1 && sgAro_Analysis->Row < sgAro_Analysis->RowCount-1)
{
sgAro_Analysis->Row=sgAro_Analysis->Row+1;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::muLastClick(TObject *Sender)
{
if(sgAro_Analysis->RowCount > 1)
{
sgAro_Analysis->Row=sgAro_Analysis->RowCount-1;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::tbRefreshClick(TObject *Sender)
{
if(sSQL=="")
return;
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::sgAro_AnalysisDblClick(TObject *Sender)
{
int ARow=sgAro_Analysis->Row;
if(ARow>0)
{
FillGridWithDetail();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::Draw(AnsiString type)
{
AnsiString m_Num;
double m_Num1=0;
if(sChart->SeriesCount()>0)
sChart->FreeAllSeries();
sChart->BackColor=clBtnFace;
sChart->View3D=true;
sChart->View3DOptions->Orthogonal=true;
sb3d->Position= sChart->Chart3DPercent;
if(type=="col")
{
Bar = new TBarSeries(this);
Bar->Marks->Style=smsValue;
Bar->ColorEachPoint=true;
Bar->BarStyle=bsRectGradient;
sChart->LeftAxis->Grid->Visible=chGr->Checked;
sChart->BottomAxis->Grid->Visible=chGr->Checked;
sChart->AddSeries(Bar);
for(int i=1;i<sgAro_Analysis->ColCount;i++)
{
for(int j=1;j<sgAro_Analysis->RowCount;j++)
{
m_Num=sgAro_Analysis->TextMatrix[j][i];
m_Num1=m_Num1+m_Num.ToDouble();
}
if(m_Num1!=0)
Bar->AddBar(m_Num1,sgAro_Analysis->Cells[i][0],clTeeColor);
m_Num1=0;
}
}
if(type=="Cir")
{
Pie = new TPieSeries(this);
sChart->AddSeries(Pie);
for(int i=1;i<sgAro_Analysis->ColCount;i++)
{
for(int j=1;j<sgAro_Analysis->RowCount;j++)
{
m_Num=sgAro_Analysis->TextMatrix[j][i];
m_Num1=m_Num1+m_Num.ToDouble();
}
if(m_Num1!=0)
Pie->AddPie(m_Num1,sgAro_Analysis->Cells[i][0],clTeeColor);
m_Num1=0;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spColClick(TObject *Sender)
{
Draw("col");
chGr->Enabled=true;
spOut->Enabled=true;
spIn->Enabled=true;
spLe->Enabled=true;
spRi->Enabled=true;
spUp->Enabled=true;
spDo->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spPieClick(TObject *Sender)
{
Draw("Cir");
chGr->Enabled=false;
spOut->Enabled=false;
spIn->Enabled=false;
spLe->Enabled=false;
spRi->Enabled=false;
spUp->Enabled=false;
spDo->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spOutClick(TObject *Sender)
{
Zoom(sChart,5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spInClick(TObject *Sender)
{
Zoom(sChart,-5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spLeClick(TObject *Sender)
{
XYScroll(sChart,"x",-5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spRiClick(TObject *Sender)
{
XYScroll(sChart,"x",5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spUpClick(TObject *Sender)
{
XYScroll(sChart,"y",-5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spDoClick(TObject *Sender)
{
XYScroll(sChart,"y",5);
spUd->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::spUdClick(TObject *Sender)
{
sChart->UndoZoom();
spUd->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::chGrMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(chGr->Checked)
{
sChart->LeftAxis->Grid->Visible=true;
sChart->BottomAxis->Grid->Visible=true;
}
else
{
sChart->LeftAxis->Grid->Visible=false;
sChart->BottomAxis->Grid->Visible=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::ch3DMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(ch3D->Checked)
sChart->View3D=true;
else
sChart->View3D=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::sb3dChange(TObject *Sender)
{
if(sb3d->Position==0)
return ;
sChart->Chart3DPercent=sb3d->Position;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::Zoom(TChart *ch ,double percent)
{
TRect r=ch->ChartRect;
r.Left=r.Left+percent;
r.Right=r.Right-percent;
r.Top=r.Top+percent;
ch->ZoomRect(r);
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Aro_Analysis::XYScroll(TChart *Ch ,AnsiString xy,const double Percent)
{
TRect r=Ch->ChartRect;
if(xy=="x")
{
r.Left=r.Left-Percent;
r.Right=r.Right-Percent;
}
if(xy=="y")
{
r.Top=r.Top-Percent;
r.Bottom=r.Bottom-Percent;
}
Ch->ZoomRect(r);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?