Свойство Recordset.UpdateOptions (DAO)
Область применения: Access 2013, Office 2013
Синтаксис
expression . UpdateOptions
expression: переменная, представляющая объект Recordset.
Примечания
При выполнении обновления в пакетном режиме DAO и клиентская библиотека пакетных курсоров создают серию инструкций SQL UPDATE для внесения необходимых изменений. Для каждого обновления создается предложение SQL WHERE для изоляции записей, помеченных как измененные свойством RecordStatus . Так как некоторые удаленные серверы используют триггеры или другие способы обеспечения целостности ссылок, часто важно ограничить обновляемые поля только теми, на которые влияет изменение.
Для этого задайте для свойства UpdateOptions одну из констант dbCriteriaKey, dbCriteriaModValues, dbCriteriaAllCols или dbCriteriaTimeStamp. Таким образом выполняется только абсолютный минимальный объем кода триггера. В результате операция обновления выполняется быстрее и с меньшим количеством возможных ошибок.
Можно также сцепить любой из констант dbCriteriaDeleteInsert или dbCriteriaUpdate , чтобы определить, следует ли использовать набор инструкций SQL DELETE и INSERT или инструкцию SQL UPDATE для каждого обновления при отправке пакетных изменений обратно на сервер. В первом случае для обновления записи требуются две отдельные операции. В некоторых случаях, особенно когда удаленная система реализует триггеры DELETE, INSERT и UPDATE, выбор правильного параметра свойства UpdateOptions может значительно повлиять на производительность.
Если не указать константы, будут использоваться dbCriteriaUpdate и dbCriteriaKey .
Только что добавленные записи всегда создают инструкции INSERT, а удаленные записи — инструкции DELETE, поэтому это свойство применяется только к тому, как библиотека курсоров обновляет измененные записи.
Пример
В этом примере свойства BatchSize и UpdateOptions используются для управления аспектами любого пакетного обновления для указанного объекта Recordset .
Sub BatchSizeX()
Dim wrkMain As Workspace
Dim conMain As Connection
Dim rstTemp As Recordset
Set wrkMain = CreateWorkspace("ODBCWorkspace", _
"admin", "", dbUseODBC)
' This DefaultCursorDriver setting is required for
' batch updating.
wrkMain.DefaultCursorDriver = dbUseClientBatchCursor
' Note: The DSN referenced below must be configured to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
Set conMain = wrkMain.OpenConnection("Publishers", _
dbDriverNoPrompt, False, _
"ODBC;DATABASE=pubs;DSN=Publishers")
' The following locking argument is required for
' batch updating.
Set rstTemp = conMain.OpenRecordset( _
"SELECT * FROM roysched", dbOpenDynaset, 0, _
dbOptimisticBatch)
With rstTemp
' Increase the number of statements sent to the server
' during a single batch update, thereby reducing the
' number of times an update would have to access the
' server.
.BatchSize = 25
' Change the UpdateOptions property so that the WHERE
' clause of any batched statements going to the server
' will include any updated columns in addition to the
' key column(s). Also, any modifications to records
' will be made by deleting the original record
' and adding a modified version rather than just
' modifying the original record.
.UpdateOptions = dbCriteriaModValues + _
dbCriteriaDeleteInsert
' Engage in batch updating using the new settings
' above.
' ...
.Close
End With
conMain.Close
wrkMain.Close
End Sub