⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monstaticspage.cpp

📁 IP电话计费管理系统本地版
💻 CPP
字号:
// MonStaticsPage.cpp : implementation file
//

#include "stdafx.h"
#include "IPCount.h"
#include "MonStaticsPage.h"
#include "StaticsSheet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PERSON_INFO 100
/////////////////////////////////////////////////////////////////////////////
// CMonStaticsPage property page

IMPLEMENT_DYNCREATE(CMonStaticsPage, CPropertyPage)

CMonStaticsPage::CMonStaticsPage() : CPropertyPage(CMonStaticsPage::IDD)
{
	//{{AFX_DATA_INIT(CMonStaticsPage)
	m_strOperCode = _T("");
	m_strLineNum = _T("");
	m_bCheckDate = FALSE;
	m_eStartTime = _T("");
	m_eEndTime = _T("");
	m_strEndTime = COleDateTime::GetCurrentTime();
	m_strStartTime = COleDateTime::GetCurrentTime();
	m_strStaticsMoney = _T("");
	m_strStaticsNum = _T("");
	m_SAreaName = _T("");
	m_strExtraTotal = _T("");
	//}}AFX_DATA_INIT
    nGridLine=0;
}

CMonStaticsPage::~CMonStaticsPage()
{
}

void CMonStaticsPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMonStaticsPage)
	DDX_Control(pDX, IDC_DATETIME_START, m_CtrlStartTime);
	DDX_Control(pDX, IDC_DATETIME_END, m_CtrlEndTime);
	DDX_Text(pDX, IDC_EDIT_OPER_CODE, m_strOperCode);
	DDX_Control(pDX, IDC_MSFLEXGRID_MON_STATICS, m_OperGrid);
	DDX_Text(pDX, IDC_EDIT4, m_strLineNum);
	DDX_Check(pDX, IDC_CHECK_DATE, m_bCheckDate);
	DDX_DateTimeCtrl(pDX, IDC_DATETIME_END, m_strEndTime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIME_START, m_strStartTime);
	DDX_Text(pDX, IDC_EDIT_TOTAL, m_strStaticsMoney);
	DDX_Text(pDX, IDC_EDIT_TOTAL_NUM, m_strStaticsNum);
	DDX_Text(pDX, IDC_EDIT_AREANAME, m_SAreaName);
	DDX_Text(pDX, IDC_EDIT_TOTAL_EXTRA, m_strExtraTotal);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMonStaticsPage, CPropertyPage)
	//{{AFX_MSG_MAP(CMonStaticsPage)
	ON_BN_CLICKED(IDC_BUTTON_OPER_COUNT, OnOperCount)
	ON_BN_CLICKED(IDC_CHECK_DATE, OnCheckDate)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMonStaticsPage message handlers

void CMonStaticsPage::OnOperCount() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int nLineCount=1;nLineCount<nGridLine+1;nLineCount++)
	{
		for(int nColCount=0;nColCount<m_OperGrid.GetCols();nColCount++)
		{
			m_OperGrid.SetTextMatrix(nLineCount,nColCount,"");
			
		}
	}
	nGridLine=0;
	if(!m_strOperCode.IsEmpty())
    {
		if(!m_strLineNum.IsEmpty())
		{
			if(m_bCheckDate)
			{
				if(m_SAreaName.IsEmpty())//按线号、操作员和时间
				    ReadFromDb(5);
				else
					ReadFromDb(9);//按线号、操作员、区名和时间
			}
			else
			{
				if(m_SAreaName.IsEmpty())
				    ReadFromDb(1);//按操作员和线号
				else
					ReadFromDb(10);//按操作员、区名和线号
			}
		}
		else
		{
			if(m_bCheckDate)
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(6);//按操作员和时间
				else
					ReadFromDb(11);//按操作员、区名和时间
			}
			else
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(2);//按操作员
				else
					ReadFromDb(12);//按操作员和区名
			}
		}
    }
	else
	{
		if(!m_strLineNum.IsEmpty())
		{
			if(m_bCheckDate)
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(7);//按线号和时间
				else
					ReadFromDb(13);//按线号、区名和时间
			}
		    else
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(3);//按线号
				else
					ReadFromDb(14);//按线号和区名
			}
		}
		else
		{
			if(m_bCheckDate)
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(8);//按时间
				else
					ReadFromDb(15);//按时间和区名
			}
			else
			{
				if(m_SAreaName.IsEmpty())
					ReadFromDb(4);//选择全部,无条件
				else
					ReadFromDb(16);//按区名
			}
		}
	}

	UpdateData(FALSE);
}

void CMonStaticsPage::ReadFromDb(int nSearchFlag)
{
	 UpdateData(TRUE);
     SQLHENV henv = NULL;
     SQLHDBC hdbc = NULL;
     BOOL bIsConnected = FALSE;
     SQLHSTMT hstmt = NULL;
     SQLRETURN rc;
     SWORD    sMsgNum = 0;
     SDWORD   pfNative=0;

	 if(m_bCheckDate)
	 {
	     strStartTime = m_strStartTime.Format(_T("%Y-%m-%d") );
	     strEndTime = m_strEndTime.Format(_T("%Y-%m-%d") );
	 }

if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv)))
{
  if (SQL_SUCCESS == (rc = ::SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3,SQL_IS_INTEGER)))
  {
	  if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)))
	  {
		   rc = ::SQLConnect(hdbc,(SQLCHAR*)"IPCount",SQL_NTS,(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS);
	       if ((SQL_SUCCESS == rc)|| (SQL_SUCCESS_WITH_INFO == rc))
		   {
               bIsConnected = TRUE;
               if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)))
			   {
				    CString strChar='\'';
					CString strSQL="";
					CString strChar2="#";
					switch(nSearchFlag)
					{
					case 1:
						strSQL="SELECT * FROM huafei where [当前操作员]="+strChar+m_strOperCode+strChar+"and [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 2:
						strSQL="SELECT * FROM huafei where [当前操作员]="+strChar+m_strOperCode+strChar;
						break;
					case 3:
						strSQL="SELECT * FROM huafei where [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 4:
                        strSQL="SELECT * FROM huafei";
						break;
					case 5:
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [亭号]="+strChar+m_strLineNum+strChar+"and [当前操作员]="+strChar+m_strOperCode+strChar;
						break;
					case 6:
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [当前操作员]="+strChar+m_strOperCode+strChar;
						break;
					case 7:
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [亭号]="+strChar+m_strLineNum+strChar ;
						break;
					case 8:
						//strSQL="SELECT * FROM huafei where [日期] between #2002-10-01# and #2002-10-19# ";
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2;
						break;
					case 9://按线号、操作员、区名和时间
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [区名] =" +strChar+m_SAreaName+strChar+"and [当前操作员]="+strChar+m_strOperCode+strChar+"and [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 10://按操作员、区名和线号
						strSQL="SELECT * FROM huafei where [区名] =" +strChar+m_SAreaName+strChar+"and [当前操作员]="+strChar+m_strOperCode+strChar+"and [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 11://按操作员、区名和时间
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [区名] =" +strChar+m_SAreaName+strChar+"and [当前操作员]="+strChar+m_strOperCode+strChar;
						break;
					case 12://按操作员和区名
						strSQL="SELECT * FROM huafei where [区名] =" +strChar+m_SAreaName+strChar+"and [当前操作员]="+strChar+m_strOperCode+strChar;
						break;
					case 13://按线号、区名和时间
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [区名] =" +strChar+m_SAreaName+strChar+"and [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 14://按线号和区名
						strSQL="SELECT * FROM huafei where [区名] =" +strChar+m_SAreaName+strChar+"and [亭号]="+strChar+m_strLineNum+strChar;
						break;
					case 15://按时间和区名
						strSQL="SELECT * FROM huafei where [日期] between #"+strStartTime+"# and #"+strEndTime+strChar2+"and [区名] =" +strChar+m_SAreaName+strChar;
						break;
					case 16://按区名
						strSQL="SELECT * FROM huafei where [区名] =" +strChar+m_SAreaName+strChar;
						break;
					default:
						break;
					}
                    LPCSTR szSQL = strSQL;
                    if (SQL_SUCCESS == (rc = ::SQLPrepare(hstmt,(unsigned char*)szSQL, SQL_NTS)))
					{
                        if (SQL_SUCCESS == (rc = ::SQLExecute(hstmt)))
						{
		                    SDWORD cb;
							char szStreameNum[PERSON_INFO]="";
							char szOper[PERSON_INFO]="";
							char szTelIndex[PERSON_INFO]="";//线号
	                        char szCalledNum[PERSON_INFO]="";//被叫
	                        char szDay[PERSON_INFO]="";//日期
	                        char szTLen[PERSON_INFO]="";//时长
                            char szFeeRate[PERSON_INFO]="";//费率
							char szCount[PERSON_INFO]="";//话费 
							char szAreaName[PERSON_INFO]="";
							char szExtraTotal[PERSON_INFO]="";//总附加费
							SQLBindCol(hstmt,1,SQL_C_CHAR,szStreameNum,PERSON_INFO,&cb);
							SQLBindCol(hstmt,2,SQL_C_CHAR,szOper,PERSON_INFO,&cb);
							SQLBindCol(hstmt,3,SQL_C_CHAR,szTelIndex,PERSON_INFO,&cb);
                            SQLBindCol(hstmt,4,SQL_C_CHAR,szCalledNum,PERSON_INFO,&cb);
		                    SQLBindCol(hstmt,5,SQL_C_CHAR,szDay,PERSON_INFO,&cb);
		                    SQLBindCol(hstmt,6,SQL_C_CHAR,szTLen,PERSON_INFO,&cb);
		                    SQLBindCol(hstmt,7,SQL_C_CHAR,szFeeRate,PERSON_INFO,&cb);
		                    SQLBindCol(hstmt,8,SQL_C_CHAR,szCount,PERSON_INFO,&cb);
		                    SQLBindCol(hstmt,9,SQL_C_CHAR,szAreaName,PERSON_INFO,&cb);
							SQLBindCol(hstmt,10,SQL_C_CHAR,szExtraTotal,PERSON_INFO,&cb);
                            rc = SQLFetch(hstmt);
							double fCallCount=0;
							double fExtraTotal=0;
							float fCallTime=0;					
                            while (SQL_SUCCESS == rc)
							{
								 nGridLine++;
                                 //重新初始化每一个变量
								 m_OperGrid.SetTextMatrix(nGridLine,0,szStreameNum);
								 m_OperGrid.SetTextMatrix(nGridLine,1,szOper);
								 m_OperGrid.SetTextMatrix(nGridLine,2,szTelIndex);
								 m_OperGrid.SetTextMatrix(nGridLine,3,szCalledNum);
								 m_OperGrid.SetTextMatrix(nGridLine,4,szDay);
								 m_OperGrid.SetTextMatrix(nGridLine,5,szTLen);
								 m_OperGrid.SetTextMatrix(nGridLine,6,szFeeRate);
								 m_OperGrid.SetTextMatrix(nGridLine,7,szCount);
								 m_OperGrid.SetTextMatrix(nGridLine,8,szAreaName);
	                             m_OperGrid.SetTextMatrix(nGridLine,9,szExtraTotal);

								 fCallCount+=atof(szCount);
	                             fExtraTotal+=atof(szExtraTotal);

								 strcpy((char *)szStreameNum,LPCTSTR(""));
 								 strcpy((char *)szOper,LPCTSTR(""));
								 strcpy((char *)szTelIndex,LPCTSTR(""));
                                 strcpy((char *)szCalledNum,LPCTSTR(""));
								 strcpy((char *)szDay,LPCTSTR(""));
								 strcpy((char *)szTLen,LPCTSTR(""));
                                 strcpy((char *)szFeeRate,LPCTSTR(""));
								 strcpy((char *)szCount,LPCTSTR(""));
								 strcpy((char *)szAreaName,LPCTSTR(""));
								 strcpy((char *)szExtraTotal,LPCTSTR(""));
			                     rc = SQLFetch(hstmt);
							}
                            m_strExtraTotal.Format("%.2f",fExtraTotal);
                            m_strStaticsNum.Format("%.2f",fCallCount-fExtraTotal);//改为总基本话费
							m_strStaticsMoney.Format("%.2f",fCallCount);

							
						}

					}	
			   }
     }
    }
   }
  }

 if (henv)
 {
  if (hdbc)
  {
   if (bIsConnected)
   {
    if (hstmt)
	{
     ::SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
	}
     ::SQLDisconnect(hdbc);
     bIsConnected = FALSE;
   }
   ::SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
   hdbc = NULL;
  }
  ::SQLFreeHandle(SQL_HANDLE_ENV, henv);
  henv = NULL;
 }
}

BOOL CMonStaticsPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_OperGrid.SetTextArray(0,"流水号");
	m_OperGrid.SetTextArray(1,"操作员");
	m_OperGrid.SetTextArray(2,"线号");
	m_OperGrid.SetTextArray(3,"被叫号码");
	m_OperGrid.SetTextArray(4,"日期");
	m_OperGrid.SetTextArray(5,"时长");
	m_OperGrid.SetTextArray(6,"费率");
	m_OperGrid.SetTextArray(7,"话费");
	m_OperGrid.SetTextArray(8,"区名");
	m_OperGrid.SetTextArray(9,"附加费");
	m_OperGrid.SetColWidth(0,1400);
	m_OperGrid.SetColWidth(1,900);
	m_OperGrid.SetColWidth(2,700);
	m_OperGrid.SetColWidth(3,1520);
	m_OperGrid.SetColWidth(4,2380);
	m_OperGrid.SetColWidth(7,960);
	m_OperGrid.SetColWidth(8,830);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMonStaticsPage::OnCheckDate() 
{
	// TODO: Add your control notification handler code here
	m_bCheckDate=!m_bCheckDate;

	if(m_bCheckDate)
	{
		m_CtrlEndTime.EnableWindow(TRUE);
		m_CtrlStartTime.EnableWindow(TRUE);

	}
	else
	{
		m_CtrlEndTime.EnableWindow(FALSE);
		m_CtrlStartTime.EnableWindow(FALSE);
	}
}

HBRUSH CMonStaticsPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
    if(pWnd->m_hWnd==GetDlgItem(IDC_EDIT_TOTAL)->m_hWnd)
	{
		pDC->SetTextColor(RGB(0,0,255));
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -