In your specific code, you run it once, so it doesn't really matter. If it is in a loop or query, and you combine hundreds or thousands of iterations, you will run into problems.
If performance of more than a thousand iterations is important to you, I would write something like the following:
Sub runDMin() x = Timer For i = 1 To 10000 MinRev2 = DMin("Revenue_Value", "tbl_Revenue", "(((tbl_Revenue.Division_ID)=20) AND ((tbl_Revenue.Period_Type)='Annual'))") Next Debug.Print "Total runtime seconds:" & Timer - x End Sub
Then do the same for the DAO request, replacing the MinRev2 part. Perform them several times and take on average. Make every effort to simulate the conditions in which he will work; for example, if you change the parameters in each request, do the same, because this is likely to affect the performance of both methods. I did something similar with DAO and ADO in Access and was surprised to find that under my conditions, DAO works faster (this was several years ago, so maybe the situation has changed since then).
There is a definite difference when it comes to using DMin in a query to get the minimum from an external table. In Access docs:
Tip. Although you can use the DMin function to find the minimum value from a field in a foreign table, it may be more efficient to create a query that contains the fields you need from both tables and create a form or report for that query.
However, this is slightly different from your situation in which you use both VBA methods.
I tend to believe (possibly erroneously because I have no evidence) that domain functions (DMin, DMax, etc.) are slower than using SQL. Perhaps if you run the code above, you can tell us how it works.
If you spell DMin correctly, I have no questions about accuracy. Did you hear that you were? Essentially, the call should be: DMin("<Field Name>", "<Table Name>", "<Where Clause>")
Good luck