Описание
Сохраняет содержимое буфера копирования в обновляемом объекте Recordset.
наборЗаписей.Update (тип, режим )
Параметры
наборЗаписей
Объектная переменная, представляющая открытый обновляемый объект Recordset.
тип
Необязательный. Константа, задающая тип обновления (только в рабочей области ODBCDirect).
режим
Необязательный. Значение типа Boolean, указывающее, следует ли принудительно обновлять базу данных, вне зависимости от изменения другим пользователем данных в базовых источниках после вызова методов AddNew, Delete или Edit>. При значении True изменения заносятся, и все изменения, внесенные другим пользователем, переписываются. При значении False (по умолчанию) изменения, внесенные другим пользователем за время ожидания обновления, приведут к невозможности занесения изменений, конфликтующих с уже внесенными изменениями. Ошибка при этом не возникает, а в свойствах BatchCollisionCount и BatchCollisions будут записаны число конфликтующих записей и сами записи, соответственно (только в рабочей области ODBCDirect).
Замечания
Метод Update применяется для сохранения текущей записи и всех внесенных в нее изменений.
Внесенные в текущую запись изменения теряются в следующих случаях:
Для внесения изменений в запись следует сначала скопировать содержимое текущей записи в буфер копирования с помощью метода Edit. Если метод Edit не будет вызван первым, то попытка изменить значение поля или вызвать метод Update приведет к ошибке.
В рабочей области ODBCDirect можно выполнить пакетные обновления, если библиотека указателей набора записей поддерживает пакетные обновления, а объект Recordset был открыт с параметром пакетного обновления с нежесткой блокировкой.
В рабочей области ядра Microsoft Jet, когда в многопользовательской среде свойство LockEdits объекта Recordset имеет значение True(жесткая блокировка), запись остается заблокированной с момента вызова метода Edit до отмены изменения или до обновления записи с помощью метода Update. Если свойство LockEdits имеет значение False(нежесткая блокировка), запись блокируется и сравнивается с исходной версией записи только непосредственно перед ее обновлением в базе данных. Если запись была изменена после вызова метода Edit, выполнить операцию Update невозможно. При подключении ядра Microsoft Jet к базе данных ODBC или базе данных ISAM всегда используется нежесткая блокировка. Для продолжения операции обновления следует снова вызвать метод Update. Для возвращения к записи, измененной другим пользователем, следует выполнить инструкцию Move 0.
Для добавления, изменения или удаления записи необходимо, чтобы запись имела уникальный индекс в базовом источнике данных. В противном случае возникает ошибка «Отсутствие разрешения» при вызове метода AddNew, Delete или Edit в рабочей области Microsoft Jet или ошибка «Недопустимый аргумент» при вызове метода Update в рабочей области ODBCDirect.
Пример
Следующая программа демонстрирует совместное применение методов Update и Edit.
Sub UpdateX() Dim dbsNorthwind As Database Dim rstEmployees As Recordset Dim strOldFirst As String Dim strOldLast As String Dim strMessage As String Set dbsNorthwind = OpenDatabase("Борей.mdb") Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники") With rstEmployees .Edit ' Сохраняет исходные данные. strOldFirst = !Имя strOldLast = !Фамилия ' Изменяет данные в буфере редактирования. !Имя = "Вова" !Фамилия = "Сидоров" ' Отображает содержимое буфера и принимает введенные данные. strMessage = "Режим редактирования:" & vbCr & " Исходные данные = " & strOldFirst & " " & _ strOldLast & vbCr & " Данные в буфере = " & !Имя & " " & !Фамилия & vbCr & vbCr & _ "Вызвать Update для замены в объекте Recordset " & "исходных данных на данные из буфера?" If MsgBox(strMessage, vbYesNo) = vbYes Then .Update Else .CancelUpdate End If ' Отображает результаты. MsgBox "Содержимое набора записей = " & !Имя & " " & !Фамилия ' Восстанавливает исходные данные, так как изменения ' внесены только для демонстрации. If Not (strOldFirst = !Имя And strOldLast = !Фамилия) Then .Edit !Имя = strOldFirst !Фамилия = strOldLast .Update End If .Close End With dbsNorthwind.Close End Sub