I am transposing multiple queries into different tables at one time using:
Function transposer(strSource As String, strTarget As String)
Dim db As Database
Dim tdfNewDef As TableDef
Dim fldNewField As Field
Dim rstSource As Recordset, rstTarget As Recordset
Dim i As Integer, j As Integer
On Error GoTo Transposer_Err
Set db = CurrentDb()
Set rstSource = db.OpenRecordset(strSource)
rstSource.MoveLast
' Create a new table to hold the transposed data.
' Create a field for each record in the original table.
Set tdfNewDef = db.CreateTableDef(strTarget)
For i = 0 To rstSource.RecordCount
Set fldNewField = tdfNewDef.CreateField(CStr(i + 1), dbMemo)
tdfNewDef.Fields.Append fldNewField
Next i
db.TableDefs.Append tdfNewDef
' Open the new table and fill the first field with
' field names from the original table.
Set rstTarget = db.OpenRecordset(strTarget)
For i = 0 To rstSource.Fields.Count - 1
With rstTarget
.AddNew
.Fields(0) = rstSource.Fields(i).Name
.Update
End With
Next i
rstSource.MoveFirst
rstTarget.MoveFirst
' Fill each column of the new table
' with a record from the original table.
For j = 0 To rstSource.Fields.Count - 1
' Begin with the second field, because the first field
' already contains the field names.
For i = 1 To rstTarget.Fields.Count - 1
With rstTarget
.Edit
.Fields(i) = rstSource.Fields(j)
rstSource.MoveNext
.Update
End With
Next i
rstSource.MoveFirst
rstTarget.MoveNext
Next j
db.Close
Exit Function
Transposer_Err:
Select Case Err
Case 3010
MsgBox "The table " & strTarget & " already exists."
Case 3078
MsgBox "The table " & strSource & " doesn't exist."
Case Else
MsgBox CStr(Err) & " " & Err.Description
End Select
Exit Function
End Function
docmd.deleteobject actable, "transposed table"
docmd.runcommand accmddebugwindow
debug.print transposer("qrynon-transposed","transposed table")
docmd.deleteobject actable, "transposed table1"
docmd.runcommand accmddebugwindow
debug.print transposer("qrynon-transposed1","transposed table1")
docmd.deleteobject actable, "transposed table2"
docmd.runcommand accmddebugwindow
debug.print transposer("qrynon-transposed2","transposed table2")
docmd.deleteobject actable, "transposed table3"
docmd.runcommand accmddebugwindow
debug.print transposer("qrynon-transposed3","transposed table3")
docmd.deleteobject actable, "transposed table4"
docmd.runcommand accmddebugwindow
debug.print transposer("qrynon-transposed4","transposed table4")
The problem is that the contents that are in each individual queries are getting into each others tables instead of their own. Example - The contents for transposed table2 sometimes get into transposed table4 and visa versa. The contents will only go into the correct table right after the macro is ran again.