Давно не пополнялся этот раздел. Теперь мы пойдем другим путем. Начнем все создавать. И с графическим интерфейсом.
Задача наша такая. Нам надо создать файл базы данных MDB. Для начала сгененируйте приложение с использованием AppWizard на основе диалогового окна. Поместите в окно поле редактирования и кнопку Create Base. Кнопку OK удалите просто :-)
Теперь нам надо создать переменную соответствующую полю редактирования и событие реакции на нажатие кнопки.
class CCteateMDBDlg : public CDialog { ...... // Dialog Data //{{AFX_DATA(CCteateMDBDlg) enum { IDD = IDD_CTEATEMDB_DIALOG }; CString m_MDB_Name; ...... void CCteateMDBDlg::OnButton1() { }
Для работы с функциями DAO нам надо подключить заголовочный файл. Вот так:
// CteateMDBDlg.cpp : implementation file // #include "stdafx.h" #include "CteateMDB.h" #include "CteateMDBDlg.h" #include "afxdao.h" ......
Вот можно писать код. Смотрите:
void CCteateMDBDlg::OnButton1() { CDaoWorkspace* cw=NULL; CDaoDatabase* cd=NULL; UpdateData(); try { cw=new CDaoWorkspace(); cd = new CDaoDatabase(cw); cd->Create(m_MDB_Name); cd->Close(); cw->Close(); delete cd; delete cw; } catch(CDaoException* cDaoError) { if (cd!=NULL) { cd->Close(); delete cd; } if (cw!=NULL) { cw->Close(); delete cw; } AfxMessageBox(cDaoError->m_pErrorInfo->m_strDescription); } }
Я создаю рабочую область и на основе ее базу данных. В классе базы данных есть функция Create, которая уммет создавать файл базы данных.
virtual void Create( LPCTSTR lpszName, LPCTSTR lpszLocale = dbLangGeneral, int dwOptions = 0 ); throw( CDaoException, CMemoryException );
Ну и все :-) Да, я использовал try для защиты от ошибок создания базы данных. И класс, который возвращается в результате исключения для того, чтобы вывести сообщение об ошибке. Это сообщение есть краткое описание ошибки.