Этот диалог в Access выглядит так:
Итак, нам нужно в ресурсы добавить диалоговую панель. Естественно связать с классом CDialogAuthor.
Наш диалог будет работать с DAO поэтому надо подключить заголовки.
// DialogAuthor.h : header file // #include "afxdao.h" ///////////////////////// // CDialogAuthor dialog ......
А описание самого диалога должно быть доступно для функций главного диалога программы.
//////////////////////////// // CBiblioDlg dialog #include "DialogAuthor.h" ......
Организуем запуск окна:
void CBiblioDlg::OnButtonContens() { CDialogAuthor cd; cd.DoModal(); }
Все окно готово к эксплутации. Прежде чем двинуться дальше нам нужно создать базу данных. Это можно сделать двумя способами. Используя Access и программным путем. Будет делать программным путем. Мы должны при запуске программы проверить есть ли файл базы данных, а если нет, то создать его и не пугать пользователя. Вот так и поступим. Для начала запустим DAO.
//////////////////////////////// // CBiblioDlg message handlers BOOL CBiblioDlg::OnInitDialog() { ...... // TODO: Add extra initialization here try { // при ошибке исключение AfxDaoInit( ); } catch(...) { AfxMessageBox("Error Dao Init"); return FALSE; // не удалось создать диалог } return TRUE; // return TRUE unless you set the focus to a control }
Так же при запуске окна мы должны проверить существования файла базы данных, если нет его - создать. Сначала определение имени. В stdafx.h.
#endif // _AFX_NO_AFXCMN_SUPPORT #define DATABASENAME "biblio" //{{AFX_INSERT_LOCATION}}
При инициализации проверим и если вдруг нету ее базы данных создать.
BOOL CBiblioDlg::OnInitDialog() { ...... // TODO: Add extra initialization here try { // при ошибке исключение AfxDaoInit( ); } catch(...) { AfxMessageBox("Error Dao Init"); return FALSE; // не удалось создать диалог } CDaoDatabase db; try { db.Open(DATABSENAME); // попытка открытия } catch(...) { try { db.Create(DATABASENAME); // может вернуть исключение } catch(...) { AfxMessageBox("Error Create Database"); return FALSE; // не удалось создать диалог } } if (!db.IsOpen()) return FALSE; db.Close(); return TRUE; // return TRUE unless you set the focus to a control }