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.


Leave a Reply

Your email address will not be published.