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 + -
显示快捷键?