При создании приложения AppWizard умеет на основе известной таблицы создавать класс наследник от DaoRecordset. В него он помещает поля из таблицы и настраивает механизм обмена данными DoFieldExchange. Но то же самое мы можем сделать и в любой момент сами. Давайте создадим проект на базе диалогового окна. А теперь попробуем к нему добавить класс как наследник от CDaoRecordset.
После нажатия на ОК начнется стандартная процедура, где Вас спросят какой файл и таблица будет использоваться для создания класса.
После выбора у Вас сформируется класс с уже настроенным полями и механизмом обмена.
class CMySet : public CDaoRecordset { public: CMySet(CDaoDatabase* pDatabase = NULL); DECLARE_DYNAMIC(CMySet) // Field/Param Data //{{AFX_FIELD(CMySet, CDaoRecordset) long m_column1; CString m_column2; CString m_column3; CString m_column4; //}}AFX_FIELD // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMySet) public: virtual CString GetDefaultDBName(); // Default database name virtual CString GetDefaultSQL(); // Default SQL for Recordset virtual void DoFieldExchange(CDaoFieldExchange* pFX); // RFX support //}}AFX_VIRTUAL // Implementation #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif }; void CMySet::DoFieldExchange(CDaoFieldExchange* pFX) { //{{AFX_FIELD_MAP(CMySet) pFX->SetFieldType(CDaoFieldExchange::outputColumn); DFX_Long(pFX, _T("[КодАвтора]"), m_column1); DFX_Text(pFX, _T("[Имя]"), m_column2); DFX_Text(pFX, _T("[Фамилия]"), m_column3); DFX_Text(pFX, _T("[Заметки]"), m_column4); //}}AFX_FIELD_MAP }
Обратите внимание, что там будет и доступ и таблица которая используется.
CString CMySet::GetDefaultDBName() { return _T("D:\\VС\\Biblio\\biblio.mdb"); } CString CMySet::GetDefaultSQL() { return _T("[author]"); }
Не забудьте подключить afxdao.h так как проект на основе диалогового окна не подключает классы баз данных.
// MySet.h : header file // #include "afxdao.h" ////////////////////////// // CMySet DAO recordset