Описание
Возвращает значение, указывающее состояние обновления текущей
записи, если эта запись участвует в операции пакетного обновления (только в
рабочей области ODBCDirect).
Значение
Возвращаемое значение имеет тип данных Long и определяется
с помощью одной из следующих констант:
dbRecordUnmodified (По умолчанию). Запись не была изменена или была успешно обновлена. dbRecordModified Запись была изменена, но не обновлена в базе данных. dbRecordNew Запись была вставлена с помощью метода AddNew, но еще не занесена в базу данных. DbRecordDeleted Запись была удалена, но еще не удалена из базы данных. dbRecordDBDeleted Запись была удалена и на локальном уровне, и в базе данных.
Замечания
Свойство RecordStatus указывает состояние изменения
текущей записи в последней операции пакетного обновления с нежесткой
блокировкой.
Когда пользователь изменяет запись, свойство RecordStatus
для этой записи автоматически получает значение dbRecordModified.
Аналогично, при добавлении или удалении записи свойство RecordStatus
автоматически получает значение соответствующей константы. При дальнейшем вызове
метода Update в пакетном режиме, механизм DAO задает для каждой
записи выполнение соответствующей операции на удаленном сервере, основываясь на
свойстве RecordStatus этой записи.
Пример
Следующая программа использует свойства RecordStatus и
DefaultCursorDriver для демонстрации изменений в локальном объекте
Recordset во время пакетного обновления. Для выполнения данной процедуры
требуется функция RecordStatusOutput.
Sub RecordStatusX()
Dim wrkMain As Workspace
Dim conMain As Connection
Dim rstTemp As Recordset
Set wrkMain = CreateWorkspace("ODBCWorkspace", "admin", "", dbUseODBC)
' Это значение свойства DefaultCursorDriver
' требуется для пакетного обновления.
wrkMain.DefaultCursorDriver = dbUseClientBatchCursor
Set conMain = wrkMain.OpenConnection("Publishers", dbDriverNoPrompt, False, "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")
' Следующий аргумент блокировки
' требуется для пакетного обновления.
Set rstTemp = conMain.OpenRecordset( "SELECT * FROM authors", dbOpenDynaset, 0, dbOptimisticBatch)
With rstTemp
.MoveFirst
Debug.Print "Исходная запись: " & !au_lname
Debug.Print , RecordStatusOutput2(.RecordStatus)
.Edit
!au_lname = "Bowen"
.Update
Debug.Print "Измененная запись: " & !au_lname
Debug.Print , RecordStatusOutput2(.RecordStatus)
.AddNew
!au_lname = "NewName"
.Update
Debug.Print "Новая запись: " & !au_lname
Debug.Print , RecordStatusOutput2(.RecordStatus)
.Delete
Debug.Print "Удаленная запись: " & !au_lname
Debug.Print , RecordStatusOutput2(.RecordStatus)
' Закрывает локальный набор записей
' без обновления данных на сервере.
.Close
End With
conMain.Close
wrkMain.Close
End Sub
Function RecordStatusOutput(lngTemp As Long) As String
Dim strTemp As String
strTemp = ""
' Создает отображаемую строку на основании
' значения свойства RecordStatus.
If lngTemp = dbRecordUnmodified Then strTemp = "[dbRecordUnmodified]"
If lngTemp = dbRecordModified Then strTemp = "[dbRecordModified]"
If lngTemp = dbRecordNew Then strTemp = "[dbRecordNew]"
If lngTemp = dbRecordDeleted Then strTemp = "[dbRecordDeleted]"
If lngTemp = dbRecordDBDeleted Then strTemp = "[dbRecordDBDeleted]"
RecordStatusOutput = strTemp
End Function