Вверх
Функция OnDataNew()
Теперь приложение позволяет получать данные и перемещеться по набору
записей.Но хотелось бы иметь возможность добавления в набор новой записи.
Добавление записи реализуется подобно перемещению по набору записей:
- добавляется пункт меню запускающий функцию OnDataNewrecord() обработки события (нажатие пункта меню "New Record") в классе
представления,
Вверх
Листинг 13.8 Функция OnDataNewrecord()
Что касается меню и класса представления, единственная разница между
реализацией этой функциональной возможности добавления в набор
новой записи и функцией перемещения по
набору записей и соответствующим меню состоит в том, что отличаются
идентификаторы пунктов меню и имена вызываемых функций.(Собственно
именно в этом и состоит отличие друг от друга всех функций перемещения
по набору записей).
Итак в функции класса документа, вызываемой для создания новой записи, после
обновления текущей записи необходимо проверить, возможно ли добавление
новой записи.Если это так, то можно создать пустую запись и добавить
ее в набор записей.После этого следует перейти к последней записи,
так как ею является только что добавленная запись.Далее можно завершить
функцию и позволить представлению вывести на экран значения полей новой,
пустой записи.
Чтобы добавить эту функцию в приложение выполните следующее:
Вверх
Листинг 13.10 Функция AddNew()
Теперь реализуем функцию, создающую пустую запись.Эта функция в каждую
переменную класса хранения данных копирует почти пустую строку.
Чтобы добавить указанную функцию в создаваемое приложение, выполните
следующее:
Вверх
Листинг 13.11 Функция CreateBlankRecord()
Если теперь скомпилировать и запустить, то пользователь сможет добавлять
новые записи в БД и редактировать их.
Откомпилировал, но все равно пишет что-то вроде - пустая БД.
Назад |
Начало урока |
Вверх |
Вперед
Добавление новой записи
Функция AddNew()
- затем в этой функции обновляются значения переменных в классе хранения
данных (Функция UpdateBoundData),
- вызывается функция класса AddNew() документа,
- и обновляется текущая запись из набора данных (Функция RefreshBoundData).
Функция OnDataNewrecord
Отредактируйте функцию OnDataNewrecord обработки события(нажатие пункта
меню "New Record"), включив в нее вызов метода
AddNew() класса документа.Для этого добавьте код как в 13.8
void CAdoDatabaseView::OnDataNew()
{
UpdateBoundData();
// Создать новую запись
GetDocument()->AddNew();
// Обновить экран данными из записи
RefreshBoundData();
Функция AddNew()
В функции класса документа отличий несколько больше.
void CAdoDatabaseDoc::AddNew(void)
{
{
m_piAdoRecordBinding->Update(&m_rsRecSet);
// Can we add a new record?
if (m_ptrRs->Supports(adAddNew))
{
CreateBlankRecord();
// Add the blank record
m_piAdoRecordBinding->AddNew(&m_rsRecSet);
// Move to the last record
m_ptrRs->MoveLast();
// Any errors?
catch (_com_error &e)
{
GenerateError(e.Error(), e.Description());
Функция CreateBlankRecord()
void CAdoDatabaseDoc::CreateBlankRecord(void)
{
strcpy(m_rsRecSet.m_szFirstName, " ");
strcpy(m_rsRecSet.m_szLastName, " ");
strcpy(m_rsRecSet.m_szAddress, " ");
Содержание