What we do with the subform control is set the Link Master Fields and Link Child Fields properties to their appropriate indexes - the master has the name of the Main table index, and the Child has the name of the foreign key in the related table. However we leave the Source Object property blank. Then on the Lodge event of the main form we have code that looks like this: If you have only one subform you can do it on the main form OnLoad event. In the example I cited, we actually do it on a tab control Change event as we have 6 separate subforms. By doing that the main form loads quickly, and when the user clicks on a tab, then we check to see if the Source Object property has been set, and if not, we execute the code above. We also start with the subform control not being visible and set it to visible after setting the Source Object property. In the example, we have some 400K main form records, and in the worst case about 3 million subform records, and the user sees sub-second response times virtually all the time. Of course having all the indexes in the right places is a key factor. Hope that clarifies how we approach it.