Шаг 105 - Свойство RecordStatus

Описание
Возвращает значение, указывающее состояние обновления текущей записи, если эта запись участвует в операции пакетного обновления (только в рабочей области ODBCDirect).

Значение
Возвращаемое значение имеет тип данных Long и определяется с помощью одной из следующих констант:

Замечания
Свойство 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.03.2002