be wary of using the DL() function with large tables like that. I recently ran a similar function in a query (using dlookup) on a table 160K records and it took something like 1 min to execute. So if you break that down statistically, that's 160000/60 seconds = 2700 records a second. And a normal query that doesn't execute any built in functions, I'm sure can run more than 50000 records a second (OK, maybe that's pushing it a bit, but you get the idea).
a better way would certainly be similar to the example I posted here:
https://www.accessforums.net/queries...html#post42905
That runs almost instantaneous on large sets, as is a great alternative to using lookups. It can be modified of course.