gusucode.com > VC+Access工程信息管理系统 > VC+Access工程信息管理系统/gusucode/IMS/PropPageEdit.cpp
//Download by http://www.NewXing.com // PropPageEdit.cpp : implementation file // #include "stdafx.h" #include "IMS.h" #include "PropPageEdit.h" #include "IMSDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPropPageEdit property page IMPLEMENT_DYNCREATE(CPropPageEdit, CPropertyPage) CPropPageEdit::CPropPageEdit() : CPropertyPage(CPropPageEdit::IDD) { //{{AFX_DATA_INIT(CPropPageEdit) m_strDataPosition = _T(""); m_olecExpense = COleCurrency(0, 0); m_strLinkMan = _T(""); m_strRemark = _T(""); m_strTelNumber = _T(""); m_strWorkAmount = _T(""); m_strWorkContent = _T(""); m_strWorkGroup = _T(""); m_strWorkPosition = _T(""); m_oletDataTime = COleDateTime::GetCurrentTime(); m_oletWorkDate = COleDateTime::GetCurrentTime(); m_strWorkUnit = _T(""); //}}AFX_DATA_INIT nItemIndex = -1; } CPropPageEdit::~CPropPageEdit() { } void CPropPageEdit::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPropPageEdit) DDX_Text(pDX, IDC_DATAPOSITION, m_strDataPosition); DDX_Text(pDX, IDC_EXPENSES, m_olecExpense); DDX_Text(pDX, IDC_LINKMAN, m_strLinkMan); DDX_Text(pDX, IDC_REMARK, m_strRemark); DDX_Text(pDX, IDC_TELNUMBER, m_strTelNumber); DDX_Text(pDX, IDC_WORKAMOUNT, m_strWorkAmount); DDX_CBString(pDX, IDC_WORKCONTENT, m_strWorkContent); DDX_CBString(pDX, IDC_WORKGROUP, m_strWorkGroup); DDX_Text(pDX, IDC_WORKPOSITION, m_strWorkPosition); DDX_DateTimeCtrl(pDX, IDC_DATATIME, m_oletDataTime); DDX_DateTimeCtrl(pDX, IDC_WORKDATE, m_oletWorkDate); DDX_Text(pDX, IDC_WORKUNIT, m_strWorkUnit); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPropPageEdit, CPropertyPage) //{{AFX_MSG_MAP(CPropPageEdit) // NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPropPageEdit message handlers BOOL CPropPageEdit::OnSetActive() { nActivePage = 2; CIMSDlg *pCIMDlg = (CIMSDlg *)(AfxGetApp( )->m_pMainWnd); CListBoxCtrl *pRecordset = &(pCIMDlg->m_lcRecordset); CString strRecordIdQuery; // if there's an element selected in the listbox if ( ( pRecordset -> GetNextItem ( -1, LVNI_SELECTED ) ) != -1 ) { nItemIndex = -1; try { // open the database if ( ! daoRecordset . IsOpen () ) daoRecordset . Open (); nItemIndex = pRecordset -> GetNextItem ( nItemIndex, LVNI_SELECTED ); strRecordIdQuery = CString ( "[ID] = " ) + CString ( pRecordset -> GetItemText ( nItemIndex, 0 ) ); // put the ID into the query string if ( daoRecordset . FindFirst ( strRecordIdQuery ) ) { m_strDataPosition = daoRecordset . m_strDataPosition; m_olecExpense = daoRecordset . m_olecExpense; m_strLinkMan = daoRecordset . m_strLinkMan; m_strRemark = daoRecordset . m_strRemark; m_strTelNumber = daoRecordset . m_strTelNumber; m_strWorkAmount = daoRecordset . m_strWorkAmount; m_strWorkContent = daoRecordset . m_strWorkContent; m_strWorkGroup = daoRecordset . m_strWorkGroup; m_strWorkPosition = daoRecordset . m_strWorkPosition; m_oletDataTime = daoRecordset . m_oletDataTime; m_oletWorkDate = daoRecordset . m_oletWorkDate; m_strWorkUnit = daoRecordset . m_strWorkUnit; } else { AfxMessageBox ( "Internal failure\n\nCannot find selected repeater in database\nor database is corrupted", MB_ICONSTOP ); } daoRecordset . Close (); // close the database } catch ( CDaoException* e ) { // yeah, yeah, same comments as all the other "catch" blocks. char szBuffer [ 256 ]; CString strExceptDesc = CString ( "JET Database Engine Error:\n\n Error Code: " ) + CString ( ltoa ( e -> m_pErrorInfo -> m_lErrorCode, szBuffer, 10 ) ) + CString ( "\nDescription: " ) + CString ( e -> m_pErrorInfo -> m_strDescription ); AfxMessageBox ( strExceptDesc, MB_ICONEXCLAMATION ); daoRecordset . Close (); return FALSE; } } else { nItemIndex = -1; m_strDataPosition = _T(""); m_olecExpense = COleCurrency(0, 0); m_strLinkMan = _T(""); m_strRemark = _T(""); m_strTelNumber = _T(""); m_strWorkAmount = _T(""); m_strWorkContent = _T(""); m_strWorkGroup = _T(""); m_strWorkPosition = _T(""); m_oletDataTime = COleDateTime::GetCurrentTime(); m_oletWorkDate = COleDateTime::GetCurrentTime(); m_strWorkUnit = _T(""); } UpdateData(FALSE); CWnd *pWnd = pCIMDlg->GetDlgItem(IDC_EXECUTE); pWnd->SetWindowText("修改记录(&E)"); return CPropertyPage::OnSetActive(); } BOOL CPropPageEdit::Execute() { CIMSDlg *pCIMDlg = (CIMSDlg *)(AfxGetApp( )->m_pMainWnd); CListBoxCtrl *pRecordset = &(pCIMDlg->m_lcRecordset); CString strRecordIdQuery; if( nItemIndex != -1 ) { try { // open the database if ( ! daoRecordset . IsOpen () ) daoRecordset . Open (); strRecordIdQuery = CString ( "[ID] = " ) + CString ( pRecordset -> GetItemText ( nItemIndex, 0 ) ); // put the ID into the query string if ( daoRecordset . FindFirst ( strRecordIdQuery ) ) { // looking for this ID in the database, ID is a unique 'autonumber' daoRecordset . Edit (); // begin the record edit UpdateData(TRUE); daoRecordset . m_strDataPosition = m_strDataPosition; daoRecordset . m_olecExpense = m_olecExpense; daoRecordset . m_strLinkMan = m_strLinkMan; daoRecordset . m_strRemark = m_strRemark; daoRecordset . m_strTelNumber = m_strTelNumber; daoRecordset . m_strWorkAmount = m_strWorkAmount; daoRecordset . m_strWorkContent = m_strWorkContent; daoRecordset . m_strWorkGroup = m_strWorkGroup; daoRecordset . m_strWorkPosition = m_strWorkPosition; daoRecordset . m_oletDataTime = m_oletDataTime; daoRecordset . m_oletWorkDate = m_oletWorkDate; daoRecordset . m_strWorkUnit = m_strWorkUnit; daoRecordset . Update (); // complete the edit by doing an update } else { AfxMessageBox ( "Internal failure\n\nCannot find selected repeater in database\nor database is corrupted", MB_ICONSTOP ); } daoRecordset . Close (); // close the database } catch ( CDaoException* e ) { // yeah, yeah, same comments as all the other "catch" blocks. char szBuffer [ 256 ]; CString strExceptDesc = CString ( "JET Database Engine Error:\n\n Error Code: " ) + CString ( ltoa ( e -> m_pErrorInfo -> m_lErrorCode, szBuffer, 10 ) ) + CString ( "\nDescription: " ) + CString ( e -> m_pErrorInfo -> m_strDescription ); AfxMessageBox ( strExceptDesc, MB_ICONEXCLAMATION ); daoRecordset . Close (); return FALSE; } } else AfxMessageBox ( "请选择一条记录", MB_ICONEXCLAMATION ); return TRUE; }