Книга: Обработка баз данных на Visual Basic®.NET
Состояние и версия записи
Разделы на этой странице:
Состояние и версия записи
Каждый объект DataRow имеет свойство RowState, которое обозначает текущее состояние или статус записи. Кроме того, каждая запись хранит информацию о четырех разных версиях своего значения. По мере редактирования записи изменяется ее состояние и версия значения. В табл. 5.1 приведено краткое описание свойства RowState, а в табл. 5.2 – краткое описание свойства DataRowVersion.
Таблица 5 1. Свойство RowState
Член перечисления | Описание |
---|---|
Unchanged | Никаких изменений не внесено с момента последнего вызова метода AcceptChanges или после загрузки данных с помощью объекта DataAdapter |
Added | Запись вставлена в коллекцию DataRowCollection (т.е. в свойство Rows объекта DataTable), но метод AcceptChanges еще не вызывался |
Deleted | Метод Delete вызван для удаления записи, но метод AcceptChanges еще не вызывался |
Modified | Запись изменена, но метод AcceptChanges еще не вызывался |
Detached | Запись создана, но не добавлена в коллекцию DataRowCollection, либо метод Remove вызван для удаления записи из коллекции DataRowCollection, либо метод Delete вызван для удаления записи и вызван метод AcceptChanges |
Таблица 5.2. Свойство DataRowVersion
Член перечисления | Описание |
---|---|
Original | Исходные значения записи. Эта версия не существует для строки со значением Added свойства состояния записи RowState |
Current | Текущее (возможно измененное) значение записи. Эта версия не существует для строки со значением Deleted свойства состояния записи RowState |
Default | Используемая по умолчанию версия записи, которая зависит от текущего состояния записи. Если состояние записи RowState имеет значение Deleted, то по умолчанию используется версия Original, если значение Detached – версия Proposed. Во всех остальных случаях по умолчанию используется версия Current |
Proposed | Предлагаемое значение записи. Эта версия существует только во время редактирования (начинается с вызова метода BeginEdit и заканчивается вызовами методов EndEdit или CancelEdit) либо для записи, которая еще не включена в коллекцию DataRowCollection |
Если запись находится в состоянии Deleted в момент вызова метода AcceptChanges, то она удаляется из коллекции DataRowCollection. В противном случае версия записи Original обновляется версией Current, а состояние записи становится равным Unchanged.
НА ЗАМЕТКУ
Поскольку все четыре версии записей возможны далеко не всегда, то можно вызвать метод HasVersion для объекта DataRow, чтобы проверить конкретную версию в текущем состоянии. Методу HasVersion передается значение одного из членов перечисления DataRowVersion, а он возвращает логическое значение, которое указывает, существует ли данная версия.
Наоборот, если запись находится в состоянии Added в момент вызова метода RejectChanges, то запись удаляется из коллекции DataRowCollection. В противном случае версия записи Current обновляется версией Original, а состояние записи становится равным Unchanged.
НА ЗАМЕТКУ
Доступ к версии поля DataRow (при условии, что она существует) можно получить, указывая нужную версию в качестве второго параметра для метода объекта DataRow при явном или неявном вызове этого метода:
dtEmployees.Rows(2).Item("lastname", DataRowVersion.Proposed)
или
dtEmployees.Rows(2)("lastname", DataRowVersion.Original)
Здесь следует особое внимание обратить на версию Proposed объекта DataRow. При вызове метода BeginEdit объекта DataRow обычные действия и события приостанавливаются, что позволяет пользователю вносить несколько изменений в запись, не применяя правил проверки вводимых значений. В этом режиме вносимые изменения отражаются не в версии Current, а в версии Proposed. И только после вызова метода EndEdit значения версии Proposed становятся (переносятся) значениями версии Current. Любые изменения можно отменить, вызывая метод CancelEdit до вызова метода EndEdit. Учтите, что изменения будут зафиксированы только после вызова метода AcceptChanges.
- Миграция между различными версиями InterBase
- Возможности, планируемые к реализации в следующих версиях
- Версия 1.5 - эволюция или революция?
- Новая версия ODS
- 2. Пример создания базового отношения в записи на псевдокоде
- Глава 10 Возможности подсистемы хранения данных в различных версиях Windows NT
- 3 Учетные записи пользователей
- ГЛАВА 8 Блокировки чтения-записи
- Как из-под учетной записи пользователя (без администраторских привилегий) включать и отключать оборудование и выполнять ...
- 10.6. Гостевые учетные записи
- Практическая работа 21. Настройка учетной записи в почтовой программе
- Практическая работа 59. Создание новой учетной записи и изучение действующих разграничений доступа к файлам