Учись программированию на C++ Builder бесплатно!

Удаление текущей записи выполняет метод Delete, который работает только с модифицируемым набором данных. В случае успешного удаления записи текущей становится следующая запись, если же удалялась последняя запись, то курсор перемещается на предыдущую запись, которая после удаления становится последней. В отличие от некоторых СУБД, в С++ Builder удаляемая запись действительно удаляется из набора данных. Обычно метод Delete вызывается для удаления просматриваемой записи, однако с его помощью можно удалить и редактируемую запись. Если набор данных находится в режиме вставки или поиска, то вызов метода Delete аналогичен вызову метода Cancel, отменяя соответственно вставку или поиск записи.

При удалении записи генерируются события BeforeDelete и AfterDelete типа TDataSetNotifyEvent. Используя обработчик события BeforeDelete, можно отменить операцию удаления, если не соблюдаются определенные условия. Если выполнение метода Delete приводит к ошибке, то возбуждается исключение, и генерируется событие OnDeleteError, в обработчике которого можно выполнить собственный анализ ошибки. Удаление нескольких последовательно расположенных записей имеет особенность, связанную с тем, что при вызове метода Delete после удаления текущей записи указатель автоматически перемещается на следующую запись.

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

void __fastcall TForm1::Button1Click(TObjееt *Sender)
{
int n;
Table1->RecNo;
while (n >= 1)
{
  Table1->Delete();
  Table1->RecNo = Table1->RecNo - 1;
  n--;
}
}

В примере перебор записей выполняется с текущей записи набора данных. После удаления текущей записи указатель снова оказывается на записи с номером на единицу меньше вплоть до первой записи набора данных.

Для набора данных Table удалить все записи можно также с помощью метода EmptyTable, который вызывается в режиме исключительного доступа к таблице БД. Перед удалением записи часто предварительно выполняется поиск записи (записей), удовлетворяющей заданным условиям. Для отбора группы удаляемых записей используется фильтрация. Метод Delete позволяет удалить записи, видимые в наборе данных. Поэтому с помощью фильтрации можно временно оставить в наборе данных записи, которые подлежат удалению, а после удаления фильтрацию отключить.


Поиск по сайту