Метод DBEngine.Idle (DAO)

Область применения: Access 2013, Office 2013

Приостанавливает обработку данных, позволяя ядру СУБД Microsoft Access выполнять любые ожидающие задачи, такие как оптимизация памяти или время ожидания страницы (только для рабочих областей Microsoft Access).

Синтаксис

expression . Бездействия (действие)

expression: переменная, представляющая объект DBEngine.

Параметры

Название Обязательно? Тип данных Описание
Действие Необязательный Variant Указывает действие, которое необходимо выполнить.

Замечания

Метод Простой позволяет ядру СУБД Microsoft Access выполнять фоновые задачи, которые могут не быть актуальными из-за интенсивной обработки данных. Это часто верно в многопользовательских средах с многозадачностью, в которых недостаточно времени фоновой обработки для поддержания актуальности всех записей в наборе записей .

Как правило, блокировки чтения удаляются, а данные в локальных объектах Recordset типа dynaset обновляются только в том случае, если другие действия (включая перемещение мыши) не выполняются. Если вы периодически используете метод Простой , ядро СУБД Microsoft Access может выполнить задачи фоновой обработки, освобождая ненужные блокировки чтения.

При указании необязательного аргумента dbRefreshCache память обновляется только с самыми актуальными данными из базы данных.

Этот метод не требуется использовать в однопользовательских средах, если не запущено несколько экземпляров приложения. Метод Простой может повысить производительность в многопользовательской среде, так как он заставляет ядро СУБД записывать данные на диск, освобождая блокировки памяти.

Примечание.

Вы также можете освободить блокировки чтения, сделав операции частью транзакции.

Пример

В этом примере используется метод Простой , чтобы убедиться, что процедура вывода обращается к самым актуальным данным, доступным из базы данных. Для выполнения этой процедуры требуется процедура IdleOutput.

Sub IdleX() 
 
 Dim dbsNorthwind As Database 
 Dim strCountry As String 
 Dim strSQL As String 
 Dim rstOrders As Recordset 
 
 Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
 
 ' Get name of country from user and build SQL statement 
 ' with it. 
 strCountry = Trim(InputBox("Enter country:")) 
 strSQL = "SELECT * FROM Orders WHERE ShipCountry = '" & _ 
 strCountry & "' ORDER BY OrderID" 
 
 ' Open Recordset object with SQL statement. 
 Set rstOrders = dbsNorthwind.OpenRecordset(strSQL) 
 
 ' Display contents of Recordset object. 
 IdleOutput rstOrders, strCountry 
 
 rstOrders.Close 
 dbsNorthwind.Close 
 
End Sub 
 
Sub IdleOutput(rstTemp As Recordset, strTemp As String) 
 
 ' Call the Idle method to release unneeded locks, force 
 ' pending writes, and refresh the memory with the current 
 ' data in the .mdb file. 
 DBEngine.Idle dbRefreshCache 
 
 ' Enumerate the Recordset object. 
 With rstTemp 
 Debug.Print "Orders from " & strTemp & ":" 
 Debug.Print , "OrderID", "CustomerID", "OrderDate" 
 Do While Not .EOF 
 Debug.Print , !OrderID, !CustomerID, !OrderDate 
 .MoveNext 
 Loop 
 End With 
 
End Sub