It would make it so easy if Access 2000 allowed the Form recordset to be updateable, but that is not the case. In fact, before Access 2000 there was not even a Form recordset. Although in Access 2002 it may be updateable.
I would not use an array, instead ADO disconnected recordsets. Here is the general flow of how I would approach the problem.
Create a disconnected recordset form each table you want to update. How to do this, is to create a query with all the fields you want from each table but bring back an empty recordset - select * from table where id < 0 for example.
These will be used instead of the array to add the records you want to insert.
Next, close the active connection on each recordset, but do not set to nothing so that the connection is still available to be used later - the recordsets are now disconnected from the source. They can still be updated in Access, but will not at this time update the source.
Add the data from each form to the respective recordset until you have a logical grouping of records that will be your transaction.
Next, reconnect each recordset to the source by setting the recordset active connection to your connection.
Next, Do a begin transaction, then an updatebatch on the first recordset, then an updatebatch on the second recordset then do a commit transaction - all of this is done on the same connection object. Of course, there would need to be error checking and backout if an error occurred.
That is the general flow.
ADO has so many ways of doing the same thing. I think you can create an empty recordset by doing this.
rs.CursorLocation = adUseClient
rs.Locktype = adLockOptimistic
rs.Properties("Append-Only Rowset"

= true
rs.Open "select * from yourtable"