It is most likely one of two things:
1. Your Access query does not rename the field and you are passing the renamed field name
2. the value may not be encoded properly for the lookup
Take a look at AccessControl.AccessGoto method. You will see the Datadict encode is one of the first things that happens. If your datadict does not inherit from Field_num it is possible that it is not being encoded properly for the lookup. You might want to add some Print statements in this method to find out if the lookup queries are doing what you expect.