Поделиться через


Свойство Database.QueryTimeout (DAO)

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

Задает или возвращает значение, указывающее время ожидания в секундах до возникновения ошибки времени ожидания при выполнении запроса в источнике данных ODBC.

Синтаксис

expression . QueryTimeout

выражение: переменная, представляющая объект Database.

Замечания

Значение по умолчанию — 60.

При использовании базы данных ODBC, например Microsoft SQL Server, возможны задержки из-за сетевого трафика или интенсивного использования сервера ODBC. Вместо того чтобы ждать бесконечно, можно указать время ожидания.

При использовании QueryTimeout с объектом Connection или Database он задает глобальное значение для всех запросов, связанных с базой данных. Это значение можно переопределить для определенного запроса, задав свойство ODBCTimeout конкретного объекта QueryDef .

Пример

В этом примере используются свойства ODBCTimeout и QueryTimeout , чтобы показать, как параметр QueryTimeout для объекта Database задает параметр ODBCTimeout по умолчанию для всех объектов QueryDef, созданных из объекта Database .

Sub ODBCTimeoutX() 
 
 Dim dbsCurrent As Database 
 Dim qdfStores As QueryDef 
 Dim rstStores As Recordset 
 
 Set dbsCurrent = OpenDatabase("Northwind.mdb") 
 
 ' Change the default QueryTimeout of the Northwind 
 ' database. 
 Debug.Print "Default QueryTimeout of Database: " & _ 
 dbsCurrent.QueryTimeout 
 dbsCurrent.QueryTimeout = 30 
 Debug.Print "New QueryTimeout of Database: " & _ 
 dbsCurrent.QueryTimeout 
 
 ' Create a new QueryDef object. 
 Set qdfStores = dbsCurrent.CreateQueryDef("Stores", _ 
 "SELECT * FROM stores") 
 
 ' Note: The DSN referenced below must be configured to 
 ' use Microsoft Windows NT Authentication Mode to 
 ' authorize user access to the SQL Server. 
 qdfStores.Connect = _ 
 "ODBC;DATABASE=pubs;DSN=Publishers" 
 
 ' Change the ODBCTimeout setting of the new QueryDef 
 ' object from its default setting. 
 Debug.Print "Default ODBCTimeout of QueryDef: " & _ 
 qdfStores.ODBCTimeout 
 qdfStores.ODBCTimeout = 0 
 Debug.Print "New ODBCTimeout of QueryDef: " & _ 
 qdfStores.ODBCTimeout 
 
 ' Execute the query and display the results. 
 Set rstStores = qdfStores.OpenRecordset() 
 
 Debug.Print "Contents of recordset:" 
 With rstStores 
 Do While Not .EOF 
 Debug.Print , .Fields(0), .Fields(1) 
 .MoveNext 
 Loop 
 .Close 
 End With 
 
 ' Delete new QueryDef because this is a demonstration. 
 dbsCurrent.QueryDefs.Delete qdfStores.Name 
 dbsCurrent.Close 
 
End Sub