I have not done what you seek to do (I rarely work with ADO recordsets
within forms), but I did a little testing with data in one file, and perhaps
you can adapt what I've tried to your situation.
What I did was open a form and use its Load event to set the Recordset of
the form based on DAO recordset SQL statement:
Private Sub Form_Load()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM MyTable", dbOpenDynaset)
Set Me.Recordset = rst
Set rst = Nothing
End Sub
This fills the form's recordset with the data from MyTable, and sets the
form's Recordsource to the SQL statement itself ("SELECT * FROM MyTable;").
I believe it's possible to use an ADO recordset to fill a form's Recordset
in a similar manner.
I then used a command button on the form to generate an SQL statement for a
"make-table" query (you can modify my approach for an update query), and
then ran that statement to create a new table based on the form's
RecordSource:
Private Sub Command4_Click()
Dim strs As String
strs = Me.RecordSource
' This next code step manipulates the form's RecordSource to
' make the new query that will put the data into a new table
' (runs a make-table query)
strs = Left(strs, InStr(strs, " FROM ")) & " INTO ThisIsMyTable" & _
Mid(strs, InStr(strs, " FROM "))
CurrentDb.Execute strs, dbFailOnError
End Sub