gusucode.com > VC+Access工程信息管理系统 > VC+Access工程信息管理系统/gusucode/IMS/PropPageDelete.cpp
//Download by http://www.NewXing.com // PropPageDelete.cpp : implementation file // #include "stdafx.h" #include "IMS.h" #include "PropPageDelete.h" #include "IMSDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPropPageDelete property page IMPLEMENT_DYNCREATE(CPropPageDelete, CPropertyPage) CPropPageDelete::CPropPageDelete() : CPropertyPage(CPropPageDelete::IDD) { //{{AFX_DATA_INIT(CPropPageDelete) 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; } CPropPageDelete::~CPropPageDelete() { } void CPropPageDelete::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPropPageDelete) 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(CPropPageDelete, CPropertyPage) //{{AFX_MSG_MAP(CPropPageDelete) // NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPropPageDelete message handlers BOOL CPropPageDelete::OnSetActive() { nActivePage = 3; 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("删除记录(&D)"); return CPropertyPage::OnSetActive(); } BOOL CPropPageDelete::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 . Delete (); // delete the record daoRecordset . MoveFirst (); // move back to the first record } 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 ( "J数据库引擎发生错误:\n\n 错误号: " ) + CString ( ltoa ( e -> m_pErrorInfo -> m_lErrorCode, szBuffer, 10 ) ) + CString ( "\n描述: " ) + CString ( e -> m_pErrorInfo -> m_strDescription ); AfxMessageBox ( strExceptDesc, MB_ICONEXCLAMATION ); daoRecordset . Close (); return FALSE; } } else AfxMessageBox ( "请选择一条记录", MB_ICONEXCLAMATION ); return TRUE; }