Метод Recordset2.Edit (DAO)
Область применения: Access 2013, Office 2013
Копирует текущую запись с обновляемым объектом Recordset в буфер обмена для последующего редактирования.
Синтаксис
выражение .Edit
Выражение Переменная, представляющая объект Recordset2 .
Примечания
После использования метода Edit изменения, внесенные в поля текущей записи, копируются в буфер обмена. После внесения нужных изменений в запись используйте метод Update, чтобы сохранить изменения.
После использования метода Edit текущая запись остается текущей.
Примечание.
Если изменить запись, а затем выполнить какую-либо операцию, переходящую к другой записи, но без предварительного использования метода Update, изменения будут потеряны без предупреждения. Кроме того, если закрыть набор записей или завершить процедуру, которая объявляет объект Recordset или родительский объект Database или Connection, измененная запись удаляется без предупреждения.
Использование метода Edit вызывает ошибку, если:
Отсутствует текущая запись.
Объект Connection, Database или Recordset был открыт только для чтения.
В записи нет обновляемых полей.
Объект Database или Recordset был открыт для монопольного использования другим пользователем (рабочая область Microsoft Access).
Другой пользователь заблокировал страницу, содержащую запись (рабочая область Microsoft Access).
Если в рабочей области Microsoft Access свойству LockEdits объекта Recordset задано значение True (пессимистичная блокировка) в многопользовательской среде, запись останется заблокированной с момента использования метода Edit до завершения обновления. Если свойству LockEdits задано значение False (оптимистичная блокировка), запись заблокирована и сравнивается с состоянием записи до изменения непосредственно перед обновлением в базе данных. Если запись была изменена после использования метода Edit, операция Update завершается ошибкой во время выполнения, если используется OpenRecordset без указания dbSeeChanges. По умолчанию в ODBC с подключением к ядру СУБД Microsoft Access и устанавливаемых базах данных ISAM всегда используется оптимистичная блокировка.
Примечание.
Чтобы запись можно было добавить, изменить или удалить, в базовом источнике данных должен быть указан ее уникальный индекс. Если это не так, при вызове метода AddNew, Delete или Edit возникнет ошибка "Отказано в разрешении" в рабочей области Microsoft Access.
Пример
В этом примере используется метод Edit для замены текущих данных указанным именем. Процедура EditName является обязательной для запуска этой процедуры.
Sub EditX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset2
Dim strOldFirst As String
Dim strOldLast As String
Dim strFirstName As String
Dim strLastName As String
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees", _
dbOpenDynaset)
' Store original data.
strOldFirst = rstEmployees!FirstName
strOldLast = rstEmployees!LastName
' Get new data for record.
strFirstName = Trim(InputBox( _
"Enter first name:"))
strLastName = Trim(InputBox( _
"Enter last name:"))
' Proceed if the user entered something for both fields.
If strFirstName <> "" and strLastName <> "" Then
' Update record with new data.
EditName rstEmployees, strFirstName, strLastName
With rstEmployees
' Show old and new data.
Debug.Print "Old data: " & strOldFirst & _
" " & strOldLast
Debug.Print "New data: " & !FirstName & _
" " & !LastName
' Restore original data because this is a
' demonstration.
.Edit
!FirstName = strOldFirst
!LastName = strOldLast
.Update
End With
Else
Debug.Print _
"You must input a string for first and last name!"
End If
rstEmployees.Close
dbsNorthwind.Close
End Sub
Sub EditName(rstTemp As Recordset2, _
strFirst As String, strLast As String)
' Make changes to record and set the bookmark to keep
' the same record current.
With rstTemp
.Edit
!FirstName = strFirst
!LastName = strLast
.Update
.Bookmark = .LastModified
End With
End Sub