//*************************************************************************** BOOL CBCGPDAOGridCtrl::GetFieldList (LPCTSTR lpszTable, CStringList& lstField) { ASSERT (lpszTable != NULL); lstField.RemoveAll (); try { if (m_pDataBase == NULL) { ASSERT (FALSE); return FALSE; } ASSERT_VALID (m_pDataBase); if (!m_pDataBase->IsOpen ()) { ASSERT (FALSE); return FALSE; } CDaoRecordset* pRecordSet = new CDaoRecordset (m_pDataBase); CString strSQL = _T("SELECT * FROM "); strSQL += lpszTable; pRecordSet->Open (AFX_DAO_USE_DEFAULT_TYPE, strSQL); if (!pRecordSet->IsOpen ()) { delete pRecordSet; return FALSE; } const short nColumns = pRecordSet->GetFieldCount (); for (short nColumn = 0; nColumn < nColumns; nColumn++) { CDaoFieldInfo info; pRecordSet->GetFieldInfo (nColumn, info); lstField.AddTail (info.m_strName); } pRecordSet->Close (); delete pRecordSet; } catch (CDaoException* pEx) { OnDaoException (pEx); pEx->Delete (); return FALSE; } return TRUE; }
void CDaoRecordView::OnInitialUpdate() { ASSERT_VALID(this); CDaoRecordset* pRecordset = OnGetRecordset(); // recordset must be allocated already ASSERT(pRecordset != NULL); if (!pRecordset->IsOpen()) { CWaitCursor wait; pRecordset->Open(); } if (!pRecordset->IsEOF()) { // Determine recordset properties for move button enabling if (pRecordset->CanBookmark()) { // Get the bookmark of the first record m_varBookmarkCurrent = pRecordset->GetBookmark(); m_varBookmarkFirst = m_varBookmarkCurrent; } // Enable forward scrolling buttons m_nStatus |= AFX_DAOVIEW_SCROLL_NEXT; // Enable backward scrolling buttons if possible if (pRecordset->CanScroll()) { m_nStatus |= AFX_DAOVIEW_SCROLL_LAST; m_nStatus |= AFX_DAOVIEW_SCROLL_BACKWARD; } else { m_nStatus &= ~AFX_DAOVIEW_SCROLL_LAST; m_nStatus &= ~AFX_DAOVIEW_SCROLL_BACKWARD; } } else { // Disable scrolling m_nStatus &= ~AFX_DAOVIEW_SCROLL_NEXT; m_nStatus &= ~AFX_DAOVIEW_SCROLL_LAST; m_nStatus &= ~AFX_DAOVIEW_SCROLL_BACKWARD; } CFormView::OnInitialUpdate(); }
CDaoRecordset* CMyDaoDatabaseDoc::GetRecordset() { CDaoRecordset* pSet = new CCustSet(&m_db); try { pSet->Open(); } catch(CDaoException* pe) { AfxMessageBox(pe->m_pErrorInfo->m_strDescription, MB_ICONEXCLAMATION); // Delete the incomplete recordset object delete pSet; pSet = NULL; pe->Delete(); } return pSet; }