Make Sure all Access QueryDef Objects are Closed

Make Sure all Access QueryDef Objects are Closed

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:

 Dim qdCustomer as QueryDefDim 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 	NextEnd Sub	Now put the call to the subroutine ToNothing:	.	.	.rsCustomer.CloseSet rsCustomer = NothingToNothing
See also  Redefining Energy Management: Advanced Solutions for Modern Buildings

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist