📄 salecutpage.cpp
字号:
// SaleCutPage.cpp : implementation file
//
#include "stdafx.h"
#include "IPCount.h"
#include "SaleCutPage.h"
#include "FeeRateSheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PERSON_INFO 30
/////////////////////////////////////////////////////////////////////////////
// CSaleCutPage property page
IMPLEMENT_DYNCREATE(CSaleCutPage, CPropertyPage)
CSaleCutPage::CSaleCutPage() : CPropertyPage(CSaleCutPage::IDD)
{
//{{AFX_DATA_INIT(CSaleCutPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
nGridCount=0;
nGridCol=0;
nGridRow=0;
strGridKey="";
}
CSaleCutPage::~CSaleCutPage()
{
}
void CSaleCutPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSaleCutPage)
DDX_Control(pDX, IDC_MSFLEXGRID_SALECUT, m_SaleCutGrid);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSaleCutPage, CPropertyPage)
//{{AFX_MSG_MAP(CSaleCutPage)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnSave)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSaleCutPage message handlers
BOOL CSaleCutPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_SaleCutGrid.SetTextArray(0,"区号类型");
m_SaleCutGrid.SetTextArray(1,"折扣级别");
m_SaleCutGrid.SetTextArray(2,"折扣率");
m_SaleCutGrid.SetColWidth(2,800);
m_SaleCutGrid.SetTextArray(3,"起始年");
m_SaleCutGrid.SetColWidth(3,800);
m_SaleCutGrid.SetTextArray(4,"终止年");
m_SaleCutGrid.SetColWidth(4,800);
m_SaleCutGrid.SetTextArray(5,"起始月");
m_SaleCutGrid.SetColWidth(5,800);
m_SaleCutGrid.SetTextArray(6,"终止月");
m_SaleCutGrid.SetColWidth(6,800);
m_SaleCutGrid.SetTextArray(7,"起始日");
m_SaleCutGrid.SetColWidth(7,800);
m_SaleCutGrid.SetTextArray(8,"终止日");
m_SaleCutGrid.SetColWidth(8,800);
m_SaleCutGrid.SetTextArray(9,"起始时");
m_SaleCutGrid.SetColWidth(9,800);
m_SaleCutGrid.SetTextArray(10,"终止时");
m_SaleCutGrid.SetColWidth(10,800);
m_SaleCutGrid.SetTextArray(11,"起始星期");
m_SaleCutGrid.SetTextArray(12,"终止星期");
GetFromCutTb();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSaleCutPage::OnSave()
{
// TODO: Add your control notification handler code here
CSaleCutRecordSet m_cSet(&m_database);
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPCount.mdb");
CString strChar="";
try
{
CString sDSN="ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ="+strChar+pFileName+strChar;
if(!m_database.IsOpen())
{
if(!m_database.Open(NULL,FALSE,FALSE,sDSN,FALSE))//打开数据库是否成功
{
CDialog::EndDialog(0);
GetParent()->PostMessage(WM_CLOSE);
}
}
CString strSQL="select * from CutTb";
m_cSet.Open(CSaleCutRecordSet::dynaset,strSQL);//打开数据表是否成功
}
catch(CDBException* pEx)//丢出异常处理
{
pEx->ReportError();
m_cSet.Close();
m_database.Close();
pEx->Delete();
}
if(!m_cSet.IsEOF())
m_cSet.MoveLast();
while( ! m_cSet.IsBOF())
{
m_cSet.Delete();
m_cSet.MovePrev();
}
if(m_cSet.CanAppend())//是否能够添加或修改
{
for(int nAddItem=1;nAddItem<nGridCount+1;nAddItem++)
{
m_cSet.AddNew();
m_cSet.m_column1=m_SaleCutGrid.GetTextMatrix(nAddItem,0);
m_cSet.m_column2=m_SaleCutGrid.GetTextMatrix(nAddItem,1);
m_cSet.m_column3=m_SaleCutGrid.GetTextMatrix(nAddItem,2);
m_cSet.m_column4=m_SaleCutGrid.GetTextMatrix(nAddItem,3);
m_cSet.m_column5=m_SaleCutGrid.GetTextMatrix(nAddItem,4);
m_cSet.m_column6=m_SaleCutGrid.GetTextMatrix(nAddItem,5);
m_cSet.m_column7=m_SaleCutGrid.GetTextMatrix(nAddItem,6);
m_cSet.m_column8=m_SaleCutGrid.GetTextMatrix(nAddItem,7);
m_cSet.m_column9=m_SaleCutGrid.GetTextMatrix(nAddItem,8);
m_cSet.m_column10=m_SaleCutGrid.GetTextMatrix(nAddItem,9);
m_cSet.m_column11=m_SaleCutGrid.GetTextMatrix(nAddItem,10);
m_cSet.m_column12=m_SaleCutGrid.GetTextMatrix(nAddItem,11);
m_cSet.m_column13=m_SaleCutGrid.GetTextMatrix(nAddItem,12);
m_cSet.Update();
}
}
m_cSet.Close();
CFeeRateSheet *frdlg;
frdlg=(CFeeRateSheet *)GetParent();
frdlg->DestroyWindow();
}
void CSaleCutPage::GetFromCutTb()
{
SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
BOOL bIsConnected=FALSE;
SQLHSTMT hstmt = NULL;
SQLRETURN rc;
SWORD sMsgNum = 0;
SDWORD pfNative=0;
nGridCount=0;
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="";
strSQL="SELECT * FROM CutTb";
LPCSTR szSQL =strSQL;
if (SQL_SUCCESS == (rc = ::SQLPrepare(hstmt,(unsigned char*)szSQL, SQL_NTS)))
{
if (SQL_SUCCESS == (rc = ::SQLExecute(hstmt)))
{
SDWORD cb;
char szAreaType[PERSON_INFO]="";//线号
char szCutLevel[PERSON_INFO]="";//流水号
char szCutRate[PERSON_INFO]="";//被叫
char szStartYear[PERSON_INFO]="";//日期
char szEndYear[PERSON_INFO]="";//时长
char szStartMon[PERSON_INFO]="";//费率
char szEndMon[PERSON_INFO]="";//话费
char szStartDay[PERSON_INFO]="";
char szEndDay[PERSON_INFO]="";
char szStartHour[PERSON_INFO]="";
char szEndHour[PERSON_INFO]="";
char szStartWeek[PERSON_INFO]="";
char szEndWeek[PERSON_INFO]="";
SQLBindCol(hstmt,1,SQL_C_CHAR,szAreaType,PERSON_INFO,&cb);
SQLBindCol(hstmt,2,SQL_C_CHAR,szCutLevel,PERSON_INFO,&cb);
SQLBindCol(hstmt,3,SQL_C_CHAR,szCutRate,PERSON_INFO,&cb);
SQLBindCol(hstmt,4,SQL_C_CHAR,szStartYear,PERSON_INFO,&cb);
SQLBindCol(hstmt,5,SQL_C_CHAR,szEndYear,PERSON_INFO,&cb);
SQLBindCol(hstmt,6,SQL_C_CHAR,szStartMon,PERSON_INFO,&cb);
SQLBindCol(hstmt,7,SQL_C_CHAR,szEndMon,PERSON_INFO,&cb);
SQLBindCol(hstmt,8,SQL_C_CHAR,szStartDay,PERSON_INFO,&cb);
SQLBindCol(hstmt,9,SQL_C_CHAR,szEndDay,PERSON_INFO,&cb);
SQLBindCol(hstmt,10,SQL_C_CHAR,szStartHour,PERSON_INFO,&cb);
SQLBindCol(hstmt,11,SQL_C_CHAR,szEndHour,PERSON_INFO,&cb);
SQLBindCol(hstmt,12,SQL_C_CHAR,szStartWeek,PERSON_INFO,&cb);
SQLBindCol(hstmt,13,SQL_C_CHAR,szEndWeek,PERSON_INFO,&cb);
rc = SQLFetch(hstmt);
while (SQL_SUCCESS == rc)
{
nGridCount++;
strGridCount.Format("%d",nGridCount);
m_SaleCutGrid.SetTextMatrix(nGridCount,0,szAreaType);
m_SaleCutGrid.SetTextMatrix(nGridCount,1,szCutLevel);
m_SaleCutGrid.SetTextMatrix(nGridCount,2,szCutRate);
m_SaleCutGrid.SetTextMatrix(nGridCount,3,szStartYear);
m_SaleCutGrid.SetTextMatrix(nGridCount,4,szEndYear);
m_SaleCutGrid.SetTextMatrix(nGridCount,5,szStartMon);
m_SaleCutGrid.SetTextMatrix(nGridCount,6,szEndMon);
m_SaleCutGrid.SetTextMatrix(nGridCount,7,szStartDay);
m_SaleCutGrid.SetTextMatrix(nGridCount,8,szEndDay);
m_SaleCutGrid.SetTextMatrix(nGridCount,9,szStartHour);
m_SaleCutGrid.SetTextMatrix(nGridCount,10,szEndHour);
m_SaleCutGrid.SetTextMatrix(nGridCount,11,szStartWeek);
m_SaleCutGrid.SetTextMatrix(nGridCount,12,szEndWeek);
//重新初始化每一个变量
strcpy((char *)szCutLevel,LPCTSTR(""));
strcpy((char *)szAreaType,LPCTSTR(""));
strcpy((char *)szCutRate,LPCTSTR(""));
strcpy((char *)szStartYear,LPCTSTR(""));
strcpy((char *)szEndYear,LPCTSTR(""));
strcpy((char *)szStartMon,LPCTSTR(""));
strcpy((char *)szEndMon,LPCTSTR(""));
strcpy((char *)szStartDay,LPCTSTR(""));
strcpy((char *)szEndDay,LPCTSTR(""));
strcpy((char *)szStartHour,LPCTSTR(""));
strcpy((char *)szEndHour,LPCTSTR(""));
strcpy((char *)szStartWeek,LPCTSTR(""));
strcpy((char *)szEndWeek,LPCTSTR(""));
rc = SQLFetch(hstmt);
}
}
}
}
}
}
}
}
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;
}
}
BEGIN_EVENTSINK_MAP(CSaleCutPage, CPropertyPage)
//{{AFX_EVENTSINK_MAP(CSaleCutPage)
ON_EVENT(CSaleCutPage, IDC_MSFLEXGRID_SALECUT, -601 /* DblClick */, OnDblClickMsflexgridSalecut, VTS_NONE)
ON_EVENT(CSaleCutPage, IDC_MSFLEXGRID_SALECUT, -603 /* KeyPress */, OnKeyPressMsflexgridSalecut, VTS_PI2)
ON_EVENT(CSaleCutPage, IDC_MSFLEXGRID_SALECUT, -600 /* Click */, OnClickMsflexgridSalecut, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CSaleCutPage::OnDblClickMsflexgridSalecut()
{
// TODO: Add your control notification handler code here
strGridKey="";
nGridCol=m_SaleCutGrid.GetCol();
nGridRow=m_SaleCutGrid.GetRow();
m_SaleCutGrid.SetCellBackColor(RGB(0,128,128));
}
void CSaleCutPage::OnKeyPressMsflexgridSalecut(short FAR* KeyAscii)
{
// TODO: Add your control notification handler code here
CString strTempKey=(TCHAR *) KeyAscii;
if((strTempKey>='0')&&(strTempKey<='9'))
{
strGridKey=strGridKey+strTempKey;
if((nGridRow>nGridCount)&&(!strGridKey.IsEmpty()))
nGridCount=nGridRow;
m_SaleCutGrid.SetTextMatrix(nGridRow,nGridCol,strGridKey);
}
else
AfxMessageBox("请输入数字!");
}
void CSaleCutPage::OnClickMsflexgridSalecut()
{
// TODO: Add your control notification handler code here
strGridKey="";
nGridCol=m_SaleCutGrid.GetCol();
nGridRow=m_SaleCutGrid.GetRow();
m_SaleCutGrid.SetCellBackColor(RGB(0,128,128));
}
void CSaleCutPage::OnCancel()
{
// TODO: Add extra cleanup here
CFeeRateSheet *frdlg;
frdlg=(CFeeRateSheet *)GetParent();
CPropertyPage::OnCancel();
frdlg->DestroyWindow();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -