Brian,
Thanks for the pointer. I have had limited success with my version of the VBA. It is managing to create a new table with all of the correct fields. However it isn't looping and it isn't populating the fields.
Option Compare Database
Private Sub Command1_Click()
Dim dbs As DAO.Database
Dim master As DAO.Recordset
Dim newtbl As DAO.Recordset
' fldcollid was defined as a public variable in a module
Set dbs = CurrentDb()
Set master = dbs.OpenRecordset("query1")
If Not master.EOF Then
master.MoveFirst
createtbldef:
fldname = master("NAME")
Call create_Click
Set newtbl = dbs.OpenRecordset("Edinburgh - " & [fldname])
Do Until master.EOF
If master("NAME") <> fldname Then
newtbl.Close
GoTo createtbldef
End If
newtbl.AddNew
newtbl("ID") = master("ID")
newtbl("TITLE") = master("TITLE")
newtbl("GIVEN_NAME") = master("GIVEN_NAME")
newtbl("INITIALS") = master("INITIALS")
newtbl("FAMILY_NAME") = master("FAMILY_NAME")
newtbl("PRE_ADDRESS_LINE_1") = master("PRE_ADDRESS_LINE_1")
newtbl("BUILDING_NUMBER") = master("BUILDING_NUMBER")
newtbl("STREET_NAME") = master("STREET_NAME")
newtbl("PRE_POST_TOWN") = master("PRE_POST_TOWN")
newtbl("POST_TOWN") = master("POST_TOWN")
newtbl("COUNTY") = master("COUNTY")
newtbl("POSTCODE") = master("POSTCODE")
newtbl("STATUS") = master("STATUS")
newtbl("CONC_ID") = master("CONC_ID")
newtbl("NAME") = master("NAME")
newtbl("POR_TYPE") = master("POR_TYPE")
newtbl("COUNTY_NUMBER") = master("COUNTY_NUMBER")
newtbl("MAIN_COLLECTOR_ID") = master("MAIN_COLLECTOR_ID")
newtbl("COLLECTOR_NUMBER") = master("COLLECTOR_NUMBER")
newtbl("POOLSCARD_NO") = master("POOLSCARD_NO")
newtbl("MAX(GCMP_ID)") = master("MAX(GCMP_ID)")
newtbl("MAX(H_COMPETITION_NUMBER)") = master("MAX(H_COMPETITION_NUMBER)")
newtbl.Update
master.MoveNext
Loop
End If
master.Close
newtbl.Close
End Sub
Private Sub create_Click()
Dim dbscreatetabledef As Database
Dim tdfNew As TableDef
Set dbscreatetabledef = CurrentDb()
' Create a new TableDef object.
Set tdfNew = dbscreatetabledef.createtabledef("Edinburgh - " & [fldname])
With tdfNew
' Create fields and append them to the new TableDef
' object. This must be done before appending the
' TableDef object to the TableDefs collection of the
' database.
.Fields.Append .CreateField("ID", dbText, 10)
.Fields.Append .CreateField("TITLE", dbText, 20)
.Fields.Append .CreateField("GIVEN_NAME", dbText, 50)
.Fields.Append .CreateField("INITIALS", dbText, 5)
.Fields.Append .CreateField("FAMILY_NAME", dbText, 50)
.Fields.Append .CreateField("PRE_ADDRESS_LINE_1", dbText, 100)
.Fields.Append .CreateField("BUILDING_NUMBER", dbText, 10)
.Fields.Append .CreateField("STREET_NAME", dbText, 100)
.Fields.Append .CreateField("PRE_POST_TOWN", dbText, 100)
.Fields.Append .CreateField("POST_TOWN", dbText, 100)
.Fields.Append .CreateField("COUNTY", dbText, 100)
.Fields.Append .CreateField("POSTCODE", dbText, 15)
.Fields.Append .CreateField("STATUS", dbText, 10)
.Fields.Append .CreateField("CONC_ID", dbText, 10)
.Fields.Append .CreateField("NAME", dbText, 10)
.Fields.Append .CreateField("POR_TYPE", dbText, 10)
.Fields.Append .CreateField("COUNTY_NUMBER", dbText, 10)
.Fields.Append .CreateField("MAIN_COLLECTOR_ID", dbText, 10)
.Fields.Append .CreateField("COLLECTOR_NUMBER", dbText, 10)
.Fields.Append .CreateField("POOLSCARD_NO", dbText, 20)
.Fields.Append .CreateField("MAX(GCMP_ID)", dbText, 20)
.Fields.Append .CreateField("MAX(HCOMPETITION_NUMBER)", dbText, 20)
' Append the new TableDef object to the createtabledef
' database.
dbscreatetabledef.TableDefs.Append tdfNew
End With
dbscreatetabledef.Close
End Sub