Функция OnDataDeletecurrent()
Функция Delete()
Последнее что надо реализовать в нашем приложении -удаление текущей записи из набора.Функции реализующие эту возможность подобны функциям, реализующим перемещение по набору и добавление новой записи -выбор пункта меню приводит к вызову функции-обработчика события, которая является членом класса представления.И поскольку эта функция совершает те же действия, что и описанные выше функции -обновление значений переменных в классе хранения данных, вызов функции класса документа, обновляющего текущую запись в базе данных, и обновление формы - то и код данной функции будет похож на код ранее реализованных функций.
Вверх
Листинг 13.8 Функция OnDataDeleterecord()()
Вверх
Листинг12.13 Функция Delete()
Скомпилировав и запустив, вы получите возможность удалить любую
запись из набора.Но если удалить все записи из набора, произойдет
ошибка при попытке перехода на предыдущую запись.Поэтому перед
вызовом метода, осуществляющего переход на предыдущую запись, следует
вставить проверку, не пуст ли набор записей(то есть не была ли запись
единственной в наборе).
Назад |
Начало урока |
Вверх |
Вперед
void CAdoDatabaseView::OnDataDeleterecord()()()
{
UpdateBoundData();
// удалить текущую запись
GetDocument()->Delete()();
// Обновить экран данными из записи
RefreshBoundData();
Функция Delete()
В функции класса документа удаление записи производится почти так же,
как и добавление новой записи.Сначала в базе данных обновляется
текущая запись, затем выполняется проверка, можно ли удалить текщую запись,
после чего от пользователя требуется подтверждение намерения ее удалить,
и наконец вызывается функция Delete и совершается переход на другую
запись небора.
Чтобы добавить данную возможность сделайте следующее:
void CAdoDatabaseDoc::Delete(void)
{
{
m_piAdoRecordBinding->Update(&m_rsRecSet);
// Can we delete a record?
if (m_ptrRs->Supports(adDelete))
{
if (AfxMessageBox(
MB_YESNO | MB_ICONQUESTION) == IDYES)
m_ptrRs->Delete(adAffectCurrent);
// Move to the previous record
m_ptrRs->MovePrevious();
// Any errors?
catch (_com_error &e)
{
GenerateError(e.Error(), e.Description());
Содержание