You can create a table in an external data format through Microsoft Access by exporting the structure and data from a Microsoft Jet object to the external data format.
You create a table in an external format by using the TransferDatabase method of the DoCmd object.
Important This example uses the TransferDatabase method, which is only available in Microsoft Access; you cannot create a database or database table in an external data format by using VBA.
After you’ve created the table, you can access it from the table’s native application or you can link or open it as you would any other external table. The following example demonstrates how to create a structure in a Microsoft Access table and use that structure as the basis for a FoxPro table:
Sub CreateExternalFoxProTable()
Dim dbs As Database
Dim tdf As TableDef
Dim fldContact As Field, fldPhone As Field
Dim rst As Recordset
Const conObjectExists = 3012
On Error GoTo Err_CreateExternalFoxProTable
' Create a Database object pointing to the current database. This
' code should be run from within a Microsoft Access database.
Set dbs = CurrentDb
' Create a table definition for the Microsoft Access table that will
' provide the structure information for the FoxPro table.
Set tdf = dbs.CreateTableDef("AccessTable")
With tdf
' Create two text fields in the Microsoft Access table.
Set fldContact = .CreateField("Contact", dbText)
fldContact.Size = 30
Set fldPhone = .CreateField("Phone", dbText)
fldPhone.Size = 25
' Append the newly created fields to the Microsoft Access table.
.Fields.Append fldContact
.Fields.Append fldPhone
End With
' Append the TableDef object to the TableDefs collection.
dbs.TableDefs.Append tdf
' Use the TransferDatabase method to export the Microsoft Access
' table's structure to a FoxPro table; this creates a new FoxPro
' table in the specified directory.
DoCmd.TransferDatabase acExport, "FoxPro 3.0", _
"C:\JetBook\Samples\FoxTables", acTable, "AccessTable", "FoxTable"
' Delete the TableDef object for the Microsoft Access table.
dbs.TableDefs.Delete "AccessTable"
' Link the new table and test it by inserting a few records.
Set tdf = dbs.CreateTableDef("LinkedFoxTable")
With tdf
.Connect = "FoxPro 3.0;DATABASE=C:\JetBook\Samples\FoxTables;"
.SourceTableName = "FoxTable"
End With
dbs.TableDefs.Append tdf
Set rst = dbs.OpenRecordset(tdf.Name)
With rst
.AddNew
!Contact = "Nancy Davolio"
!Phone = "555-9857"
.Update
.AddNew
!Contact = "Andrew Fuller"
!Phone = "555-9482"
.Update
.AddNew
!Contact = "Janet Leverling"
!Phone = "555-3412"
.Update
.AddNew
!Contact = "Margaret Peacock"
!Phone = "555-8122"
.Update
.Close
End With
Exit_CreateExternalFoxProTable:
On Error Resume Next
dbs.Close
Set dbs = Nothing
Exit Sub
Err_CreateExternalFoxProTable:
If Err = conObjectExists Then
dbs.TableDefs.Delete tdf.Name
Resume
Else
MsgBox "Error: " & Err.Number & " - " & Err.Description
Resume Exit_CreateExternalFoxProTable
End If
End Sub