Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1103588.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.86 Mб
Скачать

2.6 Модификация набора данных

Модификация набора данных — это редактирование, добавление и удаление его записей. Отметим, что фильтрация не приводит к изменению набора данных, в результате фильтрации только изменяется количество записей, видимых в наборе данных.

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

Управлять изменением набора данных Table можно с помощью свойства ReadOnly типа Boolean, при установке которому значения True изменения записей запрещены. По умолчанию свойство ReadOnly имеет значение False, т. е. набор данных можно модифицировать.

Значение свойства ReadOnly можно изменять только для закрытого набора данных. В отличие от многих управляющих элементов, например, редакторов Edit и Memo, запрет редактирования относится к визуальному (пользователем) и программному изменению записей набора данных.

Возможность модификации набора данных Query определяет свойство RequestLive типа Boolean. По умолчанию это свойство имеет значение False, т. е. набор данных Query доступен только для чтения. Для получения возможности редактирования записей свойству RequestLive нужно установить значение True. Кроме этого свойства, возможность изменения набора данных Query зависит также от содержания SQL-запроса. Например, если в результате запроса отбираются записи из нескольких таблиц, то набор данных нельзя модифицировать, и значение True свойства RequestLive не учитывается.

Для проверки возможности изменения набора данных предназначено свойство CanModify типа Boolean, действующее при выполнении приложения и доступное только для чтения. Если свойство CanModify имеет значениеTrue, то набор данных можно изменять, редактируя, вставляя записи, а также удаляя их. Если свойство CanModify имеет значение False, то набор данных изменять нельзя и попытка сделать это визуально или программно вызывает исключительную ситуацию.

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

-Перевести набор данных в режим редактирования

-Изменить значения полей записи

-Подтвердить сделанные изменения или отказаться от них, в результате чего набор данных снова переходит в режим просмотра

Если набор данных является модифицируемым, и исключительная ситуация не возбуждается.

После перевода набора данных в режим редактирования можно изменять значения полей текущей записи с помощью операторов присваивания. При этом нужно учитывать тип поля, при необходимости выполняя преобразования типов значений.

Для проверки, вносились ли изменения в запись, можно проанализировать свойство Modifid типа Boolean. Если свойство имеет значение True, то было изменено значение, как минимум, одного поля текущей записи.

После ввода информации сделанные изменения должны быть или подтверждены, или отменены.

Метод Post записывает модифицированную запись в таблицу БД, снимает блокировку записи и переводит набор данных в режим просмотра. Если набор данных не находился в режиме редактирования, то вызов метода Post приведет к генерации исключительной ситуации.

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

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

-Перевод набора данных в режим вставки

-Задание значений полей новой записи

-Подтверждение сделанных изменений или отказ от них, в результате на бор данных переходит в режим просмотра

Для добавления записей используются методы Insert, InsertRecord, Append и AppendRecord.

Метод Insert переводит набор данных в режим вставки и добавляет к нему новую пустую запись. Новая запись добавляется в позицию, на которой находится указатель текущей записи. При необходимости перед вызовом метода Insert следует переместить текущий указатель в требуемую позицию набора данных.

Метод InsertRecord выполняет те же действия, что и методы Insert и SetFields. Процедура InsertRecord (const Values: array of const) вставляет в позицию указателя текущей записи новую запись, задавая значения всех или некоторых ее полей.

Методы Append и AppendRecord отличаются от методов Insert и InsertRecord тем, что вставляют запись в конец набора данных, а не в текущую позицию указателя.

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

Обычно метод Delete вызывается для удаления просматриваемой записи, однако он удаляет и редактируемую запись. Таким образом, метод Delete удаляет текущую запись набора данных, который находится в режимах просмотра или редактирования. Если набор данных находится в режиме вставки или поиска, то вызов метода Delete аналогичен вызову метода Cancel, отменяя вставку или поиск записи.

При вызове метода Delete в цикле перебора нескольких последовательно расположенных удаляемых записей не нужно вызывать методы, перемещающие указатель текущей записи. После удаления текущей записи указатель автоматически устанавливается на следующую запись.