TableDef-Objekt (DAO)
Gilt für: Access 2013, Office 2013
Ein TableDef-Objekt stellt die gespeicherte Definition einer Basistabelle oder einer verknüpften Tabelle dar (nur Microsoft Access-Arbeitsbereiche).
Hinweise
Sie bearbeiten eine Tabellendefinition anhand eines TableDef-Objekts und seiner Methoden und Eigenschaften. Folgendes ist zum Beispiel möglich:
Untersuchen Sie das Feld und die Indexstruktur einer lokalen, verknüpften oder externen Tabelle in einer Datenbank.
Verwenden Sie die Connect- und SourceTableName-Eigenschaften, um Informationen zu verknüpften Tabellen festzulegen oder zurückzugeben, und verwenden Sie die RefreshLink-Methode, um Verbindungen zu verknüpften Tabellen zu aktualisieren.
Verwenden Sie die ValidationRule- und ValidationText-Eigenschaften, um Überprüfungsbedingungen festzulegen oder zurückzugeben.
Verwenden Sie die OpenRecordset-Methode, um ein Recordset-Objekt vom Typ "table", "dynaset", "dynamic", "snapshot" oder "forward–only" basierend auf der Tabellendefinition zu erstellen.
Für Basistabellen enthält die RecordCount-Eigenschaft die Anzahl der Datensätze in der angegebenen Datenbanktabelle. For linked tables, the RecordCount property setting is always –1.
Um ein neues TableDef-Objekt zu erstellen, verwenden Sie die CreateTableDef-Methode.
So fügen Sie einer Tabelle ein Feld hinzu
Stellen Sie sicher, dass alle Recordset-Objekte, die auf der Tabelle basieren, geschlossen sind.
Verwenden Sie die CreateField-Methode, um eine Field-Objektvariable zu erstellen, und legen Sie ihre Eigenschaften fest.
Verwenden Sie die Append-Methode, um das Field-Objekt zur Fields-Auflistung des TableDef-Objekts hinzuzufügen.
Sie können ein Field-Objekt aus einer TableDefs-Auflistung löschen, wenn ihm keine Indizes zugewiesen sind. Die Daten des Felds gehen aber verloren.
So erstellen Sie eine Tabelle, die für neue Datensätze in einer Datenbank bereit ist
Verwenden Sie die CreateTableDef-Methode, um ein TableDef-Objekt zu erstellen.
Legen Sie seine Eigenschaften fest.
Verwenden Sie für jedes Feld in der Tabelle die CreateField-Methode, um eine Field-Objektvariable zu erstellen, und legen Sie ihre Eigenschaften fest.
Verwenden Sie die Append-Methode, um die Felder zur Fields-Auflistung des TableDef-Objekts hinzuzufügen.
Verwenden Sie die Append-Methode, um das neue TableDef-Objekt zur TableDefs-Auflistung des Database-Objekts hinzuzufügen.
Eine verknüpfte Tabelle ist durch die SourceTableName- und Connect-Eigenschaften des TableDef-Objekts mit der Datenbank verbunden.
So verknüpfen Sie eine Tabelle mit einer Datenbank
Verwenden Sie die CreateTableDef-Methode, um ein TableDef-Objekt zu erstellen.
Legen Sie die Connect- und SourceTableName-Eigenschaften (und optional die Attributes-Eigenschaft) fest.
Verwenden Sie die Append-Methode, um es der TableDefs-Auflistung eines Database-Objekts hinzuzufügen.
Um auf ein TableDef-Objekt in einer Auflistung durch die Ordnungszahl oder die Einstellung der Name-Eigenschaft zu verweisen, verwenden Sie eine der folgenden Syntaxformen:
TableDefs(0)
TableDefs("name")
TableDefs! [Name]
Beispiel
Dieses Beispiel erstellt ein neues TableDef-Objekt und hängt es an die TableDefs-Auflistung des Northwind-Datenbankobjekts an. Dann zählt es die TableDefs-Auflistung und die Properties-Auflistung des neuen TableDef-Objekts auf.
Sub TableDefX()
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim tdfLoop As TableDef
Dim prpLoop As Property
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Create new TableDef object, append Field objects
' to its Fields collection, and append TableDef
' object to the TableDefs collection of the
' Database object.
Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef")
tdfNew.Fields.Append tdfNew.CreateField("Date", dbDate)
dbsNorthwind.TableDefs.Append tdfNew
With dbsNorthwind
Debug.Print .TableDefs.Count & _
" TableDefs in " & .Name
' Enumerate TableDefs collection.
For Each tdfLoop In .TableDefs
Debug.Print " " & tdfLoop.Name
Next tdfLoop
With tdfNew
Debug.Print "Properties of " & .Name
' Enumerate Properties collection of new
' TableDef object, only printing properties
' with non-empty values.
For Each prpLoop In .Properties
Debug.Print " " & prpLoop.Name & " - " & _
IIf(prpLoop = "", "[empty]", prpLoop)
Next prpLoop
End With
' Delete new TableDef since this is a
' demonstration.
.TableDefs.Delete tdfNew.Name
.Close
End With
End Sub
Dieses Beispiel erstellt ein neues TableDef-Objekt in der Northwind-Datenbank.
Sub CreateTableDefX()
Dim dbsNorthwind As Database
Dim tdfNew As TableDef
Dim prpLoop As Property
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
' Create a new TableDef object.
Set tdfNew = dbsNorthwind.CreateTableDef("Contacts")
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
' Northwind database.
.Fields.Append .CreateField("FirstName", dbText)
.Fields.Append .CreateField("LastName", dbText)
.Fields.Append .CreateField("Phone", dbText)
.Fields.Append .CreateField("Notes", dbMemo)
Debug.Print "Properties of new TableDef object " & _
"before appending to collection:"
' Enumerate Properties collection of new TableDef
' object.
For Each prpLoop In .Properties
On Error Resume Next
If prpLoop <> "" Then Debug.Print " " & _
prpLoop.Name & " = " & prpLoop
On Error GoTo 0
Next prpLoop
' Append the new TableDef object to the Northwind
' database.
dbsNorthwind.TableDefs.Append tdfNew
Debug.Print "Properties of new TableDef object " & _
"after appending to collection:"
' Enumerate Properties collection of new TableDef
' object.
For Each prpLoop In .Properties
On Error Resume Next
If prpLoop <> "" Then Debug.Print " " & _
prpLoop.Name & " = " & prpLoop
On Error GoTo 0
Next prpLoop
End With
' Delete new TableDef object since this is a
' demonstration.
dbsNorthwind.TableDefs.Delete "Contacts"
dbsNorthwind.Close
Im folgenden Beispiel wird veranschaulicht, wie Sie ein berechnetes Feld erstellen. Die CreateField-Methode erstellt ein Feld namens FullName. Die Expression-Eigenschaft wird dann auf den Ausdruck festgelegt, der den Wert des Felds berechnet.
Der Beispielcode stammt von:Microsoft Access 2010 Programmer's Reference.
Sub CreateCalculatedField()
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field2
' get the database
Set dbs = CurrentDb()
' create the table
Set tdf = dbs.CreateTableDef("tblContactsCalcField")
' create the fields: first name, last name
tdf.Fields.Append tdf.CreateField("FirstName", dbText, 20)
tdf.Fields.Append tdf.CreateField("LastName", dbText, 20)
' create the calculated field: full name
Set fld = tdf.CreateField("FullName", dbText, 50)
fld.Expression = "[FirstName] & "" "" & [LastName]"
tdf.Fields.Append fld
' append the table and cleanup
dbs.TableDefs.Append tdf
Cleanup:
Set fld = Nothing
Set tdf = Nothing
Set dbs = Nothing
End Sub