There are a couple of ways to do this by letting sql server do the work. One way is to have your DBA make a "linked server" on sql server for each of your Access mdb tables. So, that would be 5 linked servers on your sql server database. The advantage is that you can treat the access tables just like any other sql server table. For example, you could send over the ADO connection the following SQL.
INSERT INTO MyAccessTable (PriKey, Description)
SELECT ForeignKey, Description
FROM MySQLTable
The disadvantage is that the DBA needs to do the linked servers for you. The DBA may not want to do it since they will need to maintain - should be minimal.
The other way to do it is by sending the SQL statement to sql server with the information on the Access table. Sql server has a Function called OPENROWSET that will run a query that crosses servers (including ADO connections).
Here is an example of what that could look like.
Dim sqlString As String
sqlString = "SELECT c.*, o.* "
sqlString = sqlString & "FROM Northwind.dbo.Customers AS c INNER JOIN "
'--- Define the location and database name
sqlString = sqlString & "OPENROWSET('Microsoft.Jet.OLEDB.4.0', "
sqlString = sqlString & "'c:\program files\microsoft office\office\Samples\northwind.mdb';'admin';, Orders) "
sqlString = sqlString & "AS o ON c.CustomerID = o.CustomerID "
rs.Open sqlString, cn, adOpenForwardOnly, adLockReadOnly
The above is joining the orders table in an access mdb to the customers table in the sql server database northwind.
The advantage here is that the DBA does not need to do anything. Of course, your query would be an insert into statement. I suggest you get the first simple sql statement to work on the ADO connection and build up from that point.