Objeto TableDef
Aplica-se ao: Access 2013, Office 2013
Um objeto TableDef representa a definição armazenada de uma tabela vinculada ou uma tabela base (apenas espaços de trabalho do Microsoft Access).
Comentários
Manipula-se a definição de uma tabela usando um objeto TableDef e seus métodos e propriedades. Por exemplo, você pode:
Examinar o campo e a estrutura de índice de qualquer tabela local, vinculada ou externa em um banco de dados.
Usar as propriedades Connect e SourceTableName para definir ou retornar informações sobre tabelas vinculadas e usar o método RefreshLink para atualizar conexões com as tabelas vinculadas.
Use as propriedades ValidationRule e ValidationText para definir ou retornar condições de validação.
Use o método OpenRecordset para criar uma tabela, dynaset –, dinâmica –, instantânea –, ou objeto tipo-encaminhar– somente conjunto de registros com base na definição da tabela.
Para tabelas de base, a propriedade RecordCount contém o número de registros da tabela de banco de dados específico. Para tabelas vinculadas, a configuração RecordCount de propriedade é sempre – 1.
Para criar um novo objeto TableDef, use o método CreateTableDef.
Para adicionar um campo a uma tabela
Certifique-se de que quaisquer objetos Recordset baseados na tabela estejam fechados.
Use o método CreateField para criar uma variável de objeto Field e definir suas propriedades.
Use o método Append para adicionar o objeto Field à coleção Fields do objeto TableDef.
Você pode excluir um objeto Field de uma coleção TableDefs se ele não tiver nenhum índice atribuído a ele, mas os dados do campo não serão perdidos.
Para criar uma tabela que esteja pronta para novos registros em um banco de dados
Use o método CreateTableDef para criar um objeto TableDef.
Defina suas propriedades.
Para cada campo na tabela, use o método CreateField para criar uma variável de objeto Field e definir suas propriedades.
Use o método Append para adicionar campos à coleção Fields do objeto TableDef.
Use o método Append para adicionar o novo objeto TableDef à coleção TableDefs do objeto Database.
Uma tabela vinculada é conectada ao banco de dados pelas propriedades SourceTableName e Connect do objeto TableDef.
Para vincular uma tabela a um banco de dados
Use o método CreateTableDef para criar um objeto TableDef.
Defina suas propriedades Connect e SourceTableName (e, como opção, sua propriedade Attributes).
Use o método Append para adicioná-lo à coleção TableDefs de um Database.
Para referir-se a um objeto TableDef de uma coleção pelo número ordinal ou pela configuração da propriedade Name, use qualquer uma das formas de sintaxe a seguir:
TableDefs(0)
TableDefs("nome")
TableDefs! [nome]
Exemplo
Este exemplo cria um novo objeto TableDef e o acrescenta à coleção TableDefs do objeto Database Northwind. Em seguida, enumeram-se as coleções TableDefs e Properties do novo TableDef.
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
Este exemplo cria um novo objeto TableDef no banco de dados da Northwind.
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
O exemplo a seguir mostra como criar um item de lista. O método CreateField cria um campo denominado NomeCompleto. A propriedade de expressão, em seguida, está definida como a expressão que calcula o valor do campo.
Código de exemplo fornecido por: a Referência do programador do Microsoft Access 2010.
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