📄 monstaticspage.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 + -