CloseAllQryDef




Dim qdCustomer as QueryDef
Dim rsCustomer as RecordSet
Set qdCustomer= Db.QueryDefs("qryCustomers")
qdCustomer.Parameters![Custom ID]= 195
Set rsCustomer= qdCustomer.OpenRecordSet(dbReadOnly)
While not rsCustomer.Eof
txtCustomerName= rsCustomer!Name
rsCustomer.MoveNext
Wend
rsCustomer.Close 'Close it
set rsCustomer=Nothing
'Free the reference to rsCustomer

qdCustomer.Close 'Close it
set qdCustomer = Nothing
'Free the reference to qdCustomer

'The problem is that DAO only closes the qdCustomer, but the other four QueryDefs

'(qryOrders, qryContacts, qrySales, and qryPersons) remain open. To solve the

'problem, use this subroutine:

Public Sub ToNothing()
Dim qdGeneric as QueryDef
'Surf the QueryDefs Collection

For each qdGeneric in Db.QueryDefs
qdGeneric.close 'Close it
Set qdGeneric = Nothing
Next
End Sub

'Now put the call to the subroutine ToNothing:

rsCustomer.Close
Set rsCustomer = Nothing
ToNothing
When you're working with QueryDef (SQL instructions stored on an MDB database)
and open it, DAO loads all the QueryDefs. For example, if you have an MDB with five
QueryDefs named qryCustomers, qryOrders, qryContacts, qrySales, and qryPersons
and you want to use the qryCustomers, do this:










( closeallqrydef.html )- by Paolo Puglisi - Modifica del 17/12/2023