Назад | Начало урока | Вперед
Содержание

Вверх

Добавление новой записи

Функция OnDataNew()
Функция AddNew()

Функция CreateBlankRecord()

Теперь приложение позволяет получать данные и перемещеться по набору записей.Но хотелось бы иметь возможность добавления в набор новой записи.

Добавление записи реализуется подобно перемещению по набору записей:

- добавляется пункт меню запускающий функцию OnDataNewrecord() обработки события (нажатие пункта меню "New Record") в классе представления,
- затем в этой функции обновляются значения переменных в классе хранения данных (Функция UpdateBoundData),
- вызывается функция класса AddNew() документа,
- и обновляется текущая запись из набора данных (Функция RefreshBoundData).

Функция OnDataNewrecord
Отредактируйте функцию OnDataNewrecord обработки события(нажатие пункта меню "New Record"), включив в нее вызов метода AddNew() класса документа.Для этого добавьте код как в 13.8

Вверх

Листинг 13.8 Функция OnDataNewrecord()


void CAdoDatabaseView::OnDataNew()
{
// Обновить текущую запись (данными с экрана)
UpdateBoundData();
// Создать новую запись
GetDocument()->AddNew();
// Обновить экран данными из записи
RefreshBoundData();
}

Что касается меню и класса представления, единственная разница между реализацией этой функциональной возможности добавления в набор новой записи и функцией перемещения по набору записей и соответствующим меню состоит в том, что отличаются идентификаторы пунктов меню и имена вызываемых функций.(Собственно именно в этом и состоит отличие друг от друга всех функций перемещения по набору записей).

Функция AddNew()
В функции класса документа отличий несколько больше.

Итак в функции класса документа, вызываемой для создания новой записи, после обновления текущей записи необходимо проверить, возможно ли добавление новой записи.Если это так, то можно создать пустую запись и добавить ее в набор записей.После этого следует перейти к последней записи, так как ею является только что добавленная запись.Далее можно завершить функцию и позволить представлению вывести на экран значения полей новой, пустой записи. Чтобы добавить эту функцию в приложение выполните следующее:

  1. Добавьте в меню новый пункт Add
  2. Добавьте в класс представления функцию- обработчик события для этого пункта меню.Добавьте в обработчик такой же код, как и в функции, осуществляющие перемещение по набору записей, однако в классе документа должна вызываться функция AddNew
  3. Теперь в класс документа добавьте функцию AddNew.Для этого добавьте в класс документа новый метод тип -- void. AddNew -имя, public - Доступ
  4. Отредактируйте функцию как в 13.10

Вверх

Листинг 13.10 Функция AddNew()


void CAdoDatabaseDoc::AddNew(void)
{
try
{
// Update the current record
m_piAdoRecordBinding->Update(&m_rsRecSet);
// Can we add a new record?
if (m_ptrRs->Supports(adAddNew))
{
// Create a blank record
CreateBlankRecord();
// Add the blank record
m_piAdoRecordBinding->AddNew(&m_rsRecSet);
// Move to the last record
m_ptrRs->MoveLast();
}
}
// Any errors?
catch (_com_error &e)
{
// Generate an error message
GenerateError(e.Error(), e.Description());
}
}

Функция CreateBlankRecord()

Теперь реализуем функцию, создающую пустую запись.Эта функция в каждую переменную класса хранения данных копирует почти пустую строку. Чтобы добавить указанную функцию в создаваемое приложение, выполните следующее:

  1. Добавьте в класс документа новый метод, тип -- void. CreateBlankRecord -имя, private - Доступ
  2. Отредактируйте функцию как в 13.11

Вверх

Листинг 13.11 Функция CreateBlankRecord()


void CAdoDatabaseDoc::CreateBlankRecord(void) {
// Set each of the values in the record object
strcpy(m_rsRecSet.m_szFirstName, " ");
strcpy(m_rsRecSet.m_szLastName, " ");
strcpy(m_rsRecSet.m_szAddress, " ");
}

Если теперь скомпилировать и запустить, то пользователь сможет добавлять новые записи в БД и редактировать их.


Откомпилировал, но все равно пишет что-то вроде - пустая БД.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz