Описание
Приостанавливает выполнение новых инструкций обработки данных и позволяет ядру базы данных Microsoft Jet выполнить все незаконченные операции, такие как оптимизация памяти или интервалы ожидания страниц (только в рабочей области ядра Microsoft Jet).
DBEngine.Idle [dbRefreshCache]
Замечания
Вызов метода Idle позволяет предоставить ядру базы данных Microsoft Jet возможность завершить фоновые операции, которые не были завершены из-за большого объема операций обработки данных. Такая ситуация часто возникает при работе в многопользовательской и многозадачной среде, когда времени, выделенного на выполнение фоновых задач, недостаточно для своевременного обновления всех записей в текущем объекте Recordset.
Как правило, блокировки изменений снимаются, и данные в локальном объекте Recordset типа динамического набора записей обновляются только тогда, когда в системе не происходят никакие другие события (включая и перемещения указателя мыши). Периодический вызов метода Idle снимает лишние блокировки изменений, и ядро базы данных получает достаточное количество времени для того, чтобы выполнить фоновые задачи.
Если в качестве аргумента указать необязательную константу dbRefreshCache, принудительно выполняются все отложенные операции записи в файлы .mdb, а память обновляется с использованием последних данных из файла .mdb.
Данный метод применяется на автономных компьютерах только при одновременном запуске нескольких копий приложения. Метод Idle позволяет увеличить производительность в сети, поскольку ядро базы принуждается к записи данных на диск и снятию ненужных блокировок в памяти.
Снять блокировки изменений позволяет также включение операций в транзакцию.
Пример
Следующая программа использует метод Idle, чтобы обеспечить в процедуре вывода доступ к последним доступным данным в базе данных. Для выполнения данной процедуры требуется процедура IdleOutput.
Sub IdleX() Dim dbsNorthwind As Database Dim strCountry As String Dim strSQL As String Dim rstOrders As Recordset Set dbsNorthwind = OpenDatabase("Борей.mdb") ' Принимает введенное пользователем название страны ' и использует его для создания инструкции SQL. strCountry = Trim(InputBox("Введите название страны:")) strSQL = "SELECT * FROM Заказы WHERE СтранаПолучателя = '" & strCountry & "' ORDER BY КодЗаказа" ' Открывает объект Recordset с помощью инструкции SQL. Set rstOrders = dbsNorthwind.OpenRecordset(strSQL) ' Отображает содержимое объекта Recordset. IdleOutput rstOrders, strCountry rstOrders.Close dbsNorthwind.Close End Sub Sub IdleOutput(rstTemp As Recordset, strTemp As String) ' Вызывает метод Idle для снятия ненужных блокировок, ' принудительного выполнения отложенных операций записи, ' и обновления памяти текущими данными из файла .mdb. DBEngine.Idle dbRefreshCache ' Отображает содержимое объекта Recordset. With rstTemp Debug.Print "Страна " & strTemp & ":" Debug.Print , "КодЗаказа", "КодКлиента", "ДатаРазмещения" Do While Not .EOF Debug.Print , !КодЗаказа, !КодКлиента, !ДатаРазмещения .MoveNext Loop End With End Sub