Compartilhar via


Método DBEngine.Idle (DAO)

Aplica-se ao: Access 2013, Office 2013

Suspende o processamento de dados, habilitando o mecanismo de banco de dados do Microsoft Access a concluir tarefas pendentes, como otimização de memória ou tempo limite da página (somente espaços de trabalho do Microsoft Access).

Sintaxe

expressão . Idle(Action)

expressão Uma variável que representa um objeto DBEngine.

Parâmetros

Name Obrigatório/opcional Tipo de dados Descrição
Action Opcional Variant Especifica a ação a ser tomada.

Comentários

O método Idle permite que o mecanismo de banco de dados do Microsoft Access execute tarefas em segundo plano que podem não estar atualizadas por causa de intenso processamento de dados. Isso geralmente ocorre em ambientes multiusuários e multitarefas que não têm tempo suficiente de planejamento em segundo plano para manter todos os registros em um Recordset atual.

Em geral, bloqueios de leitura são removidos e os dados em objetos Recordset do tipo dynaset locais são atualizados apenas quando nenhuma outra ação ocorrer (inclusive movimentos de mouse). Se você usa periodicamente o método Idle, o mecanismo de banco de dados do Microsoft Access pode realizar o processamento de tarefas em segundo plano, liberando bloqueios de leitura desnecessários.

Especificar o argumento dbRefreshCache opcional atualiza a memória apenas com os dados mais recentes do banco de dados.

Você não precisa usar esse método em ambientes de um único usuário a menos que várias instâncias de um aplicativo estejam em execução. O método Idle pode aumentar o desempenho em um ambiente multiusuário porque força o mecanismo de banco de dados a gravar dados em disco, liberando bloqueios na memória.

Observação

[!OBSERVAçãO] Você também pode liberar bloqueios de leitura tornando as operações parte de uma transação.

Exemplo

Este exemplo usa o método Idle para assegurar que um procedimento de saída está acessando os dados mais atuais disponíveis no banco de dados. O procedimento IdleOutput é exigido para a execução do procedimento.

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