Access VBA change Query criteria using QueryDef.SQL Property

This Access VBA tutorial explains how to change Query criteria in VBA using QueryDef.SQL Property.

You may also want to read:

Create Query using CreateQueryDef

Access VBA – change Query criteria

It is easy to change Query criteria in Query View, but sometimes your criteria may depend on a variable that is not a constant. In Access VBA, you can change the Query criteria using QueryDef.SQL Property. In fact, QueryDef.SQL does not really update just the update the criteria of the statement, it overwrites the SQL statement of a Query. The reason is that VBA cannot split the SQL statement into SELECT TABLE part and criteria part, and then only update the criteria statement.

VBA Code  – change Query criteria

In the below example, I change the SQL statement of tempQry to the SQL highlighted in blue.

Private Sub updateQuery()
    Dim db As dao.Database
    Set db = CurrentDb
    Dim qdf As dao.QueryDef
    Set qdf = db.QueryDefs("tempQry")
    qdf.SQL = "Select * From [employee_tbl] WHERE [Department]='HR'"
End Sub

Example  – change Query criteria

Let’s say we have a Query called tempQry, which select all employee data whose Department is Finance. Our goal is to change the criteria to HR department.


Close the Query Design. Press ALT+F11 and then copy the VBA code (in the above example) to a new Module, and then run the Macro.

Open tempQry in Design View again. Now you can see the criteria has changed to HR.


Wyman W
Wyman is human resources professional specialized in implementation of HR information system.

He is also a:
- Microsoft Most Valuable Professional (Excel)
- Microsoft Community Contributor
- Microsoft Office Specialist in Access / Excel
- Microsoft Specialist in MS Project
- Microsoft Technical Associate
- Microsoft Certified Professional
- IBM SPSS Specialist

Leave a Reply

Your email address will not be published. Required fields are marked *