Итак, мы поступим просто. Если в базе данных нет таблицы тот ее просто и тихо нужно создать нечего не говоря пользователю. А зачем ему знать о наших проблемах? Раз должна быть она значит должна. А в Access она вот какая.
Опять все будет то же самое. Попытка открыть, нет таблицы, создать. Определим имя таблицы.
...... #endif // _AFX_NO_AFXCMN_SUPPORT #define DATABASENAME "biblio" #define TABLE_NAME_AUTHOR "Авторы" //{{AFX_INSERT_LOCATION}} ......
Идем в OnInitDialog класса CDialogAuthor.
BOOL CDialogAuthor::OnInitDialog() { CDialog::OnInitDialog(); CDaoDatabase db; db.Open(DATABASENAME); // Открывает DB CDaoTableDef cTable(&db); try { cTable.Open(TABLE_NAME_AUTHOR); // попытка открытия таблицы } catch(...) { // нет ее try { cTable.Create(TABLE_NAME_AUTHOR); // создать CDaoFieldInfo ci; cTable.CreateField("КодАвтора",dbLong,0,dbAutoIncrField); cTable.CreateField("Имя",dbText,255); cTable.CreateField("Фамилия",dbText,255); cTable.CreateField("Заметки",dbMemo,0); cTable.Append(); } catch(...) { return FALSE; } } cTable.Close(); // все закрыть db.Close(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
Достаточно один раз открыть форму что бы таблица появилась в базе данных. Именно этом мы и сделаем. Запустите и откройте форму Авторы. Как результат в таблице она будет. Это нам пригодится для следующего шага.