Итак, нам пора на диалоговое окно помещать элементы управления. Для этого нужно создать набор записей Set и связать его с диалоговым окном, смотрите "Шаг 26 - Диалог, Foreign Class и классы Recordset". Мы же ужа один раз запускали форму авторы, значит таблица авторы создалась. Она известна нам на этапе проектирования значит во всю можно использовать ClassWizard.
Связываем класс с диалоговым окном, настраивает создание объекта. Все это описано ранее. Foreign Variable - m_pAuthor.У Вас должны выбираться переменные базы данных для связи с элементами управления.
Итак, даем название диалоговому окну, расставляем элементы управления для полей.
При старте окна мы должны попасть на первую запись.
BOOL CDialogAuthor::OnInitDialog() { ...... db.Close(); try { m_pAuthor->MoveFirst(); // на первую } catch(...) // а вдруг даже первой нет { m_pAuthor->AddNew(); m_pAuthor->Update(); m_pAuthor->MoveFirst(); // упорно идем на первую UpdateData(FALSE); // показать что там в первой } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
Нам нужна кнопка двигаться вперед. Давайте ее сделаем.
Код будем писать, мол по записям вперед.
void CDialogAuthor::OnButtonNext() { try { m_pAuthor->MoveNext(); // вперед if (m_pAuthor->IsEOF()) throw CString(""); // если это последняя то новая нужна UpdateData(FALSE); // показать что там } catch(...) // если последняя то создать новую { m_pAuthor->AddNew(); m_pAuthor->Update(); m_pAuthor->MoveLast(); // на последнюю UpdateData(FALSE); // показать что там } }
Теперь есть ли записи, нет ли все будет одинаковое. Если записей нет то она будет создана. Если дошли до конца, то она опять будет создана. Только первое поле у нас счетчик. Его Access автоматически назначает. Значит надо его защитить от редактирования.