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

📄 salecutpage.cpp

📁 IP电话计费管理系统本地版
💻 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 + -