OK, it works for my brother. But he said that the table he is updating from has almost 20,000 records and the code has been running for 15 minutes and is still going.

My question now (for all you SQL geniuses) is can all these queries and recordsets be combined into a single update query using sub-queries?

VB Code:
  1. sSQL_NEW = "SELECT * FROM New_Table"
  2. Set RST_NEW = CurrentDb.OpenRecordset(sSQL_NEW, dbOpenDynaset) ' works fine for me
  3.  
  4. sSQL_LG = "SELECT * FROM Big_Table ORDER BY ID ASC"
  5. Set RST_LG = CurrentDb.OpenRecordset(sSQL_LG, dbOpenDynaset)
  6.  
  7. With RST_LG
  8.   .MoveFirst
  9.   Do Until .EOF
  10.     sSQL_SM = "SELECT TOP 1 * FROM Small_Table WHERE ID < " & !ID & " ORDER BY ID DESC"
  11.     Set RST_SM = CurrentDb.OpenRecordset(sSQL_SM, dbopensnapshot)
  12.     RST_NEW.AddNew
  13.        RST_NEW!ID = !ID
  14.        RST_NEW!Loan = !Loan
  15.        RST_NEW!Pmt = !Pmt
  16.        RST_NEW!Inv = RST_SM!Inv
  17.     RST_NEW.Update
  18.     .MoveNext
  19.   Loop
  20. End With