Método Database.CreateTableDef (DAO)
Aplica-se ao: Access 2013, Office 2013
Cria um novo objeto TableDef (apenas espaços de trabalho do Microsoft Access). .
Sintaxe
expressão . CreateTableDef(Name, Attributes, SourceTableName, Connect)
expressão Uma variável que representa um objeto do Banco de dados.
Parâmetros
Nome |
Necessária/opcional |
Tipo de dados |
Descrição |
---|---|---|---|
Name |
Opcional |
Variant |
UmaVariante (Cadeia subtipo) que exclusivamente nomeia o novo objeto de QueryDef. Consulte a propriedade de Nome para obter detalhes sobre nomes válidos de TableDef. |
Atributos |
Opcional |
Variant |
Uma constante ou uma combinação de constantes que indicam uma ou mais características do novo objeto deTableDef. Consulte a propriedade de Atributos para obter mais informações. |
SourceTableName |
Opcional |
Variant |
UmaVariante (cadeia subtipo) que contém o nome de uma tabela em um banco de dados externo à fonte de dados original. A cadeia de caracteres de origem torna-se a configuração de propriedade SourceTableName do novo objeto TableDef. |
Connect |
Opcional |
Variant |
Um Variant (subtipo String) que contém informações sobre a fonte de um banco de dados aberto, um banco de dados usando em uma consulta passagem ou uma tabela vinculada. Consulte a propriedade Conectar para obter mais informações sobre as cadeias de caracteres de conexão válidas. |
Valor de retorno
TableDef
Comentários
Se omitir uma ou mais dessas partes opcionais quando usar o método CreateTableDef, você poderá usar uma instrução de atribuição apropriada para definir ou redefinir a propriedade correspondente antes de acrescentar o novo objeto à coleção. Depois de acrescentar o objeto, você poderá alterar algumas, mas não todas as suas propriedades. Consulte os tópicos de propriedade individuais para obter mais detalhes.
Se o nome fizer referência a um objeto que já é um membro da coleção ou se for especificada uma propriedade inválida no objeto TableDef ou Field que você está acrescentando, ocorrerá um erro em tempo de execução quando você usar o método Acrescentar. Além disso, não é possível acrescentar um objeto TableDef à coleção TableDefs até que se defina ao menos um Field para o objeto TableDef.
Para remover um objeto TableDef da coleção TableDefs, use o método Delete na coleção.
Exemplo
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
End Sub
Este exemplo usa os métodos CreateTableDef e FillCache e as propriedades CacheSize, CacheStart e SourceTableName para enumerar os registros vinculados à tabela duas vezes. Em seguida, enumera os registros duas vezes com um cache de 50 registros. Depois, exemplo exibe as estatísticas de desempenho das execuções com cache e sem cache por meio da tabela vinculada.
Sub ClientServerX3()
Dim dbsCurrent As Database
Dim tdfRoyalties As TableDef
Dim rstRemote As Recordset
Dim sngStart As Single
Dim sngEnd As Single
Dim sngNoCache As Single
Dim sngCache As Single
Dim intLoop As Integer
Dim strTemp As String
Dim intRecords As Integer
' Open a database to which a linked table can be
' appended.
Set dbsCurrent = OpenDatabase("DB1.mdb")
' Create a linked table that connects to a Microsoft SQL
' Server database.
Set tdfRoyalties = _
dbsCurrent.CreateTableDef("Royalties")
' Note: The DSN referenced below must be set to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
tdfRoyalties.Connect = _
"ODBC;DATABASE=pubs;DSN=Publishers"
tdfRoyalties.SourceTableName = "roysched"
dbsCurrent.TableDefs.Append tdfRoyalties
Set rstRemote = _
dbsCurrent.OpenRecordset("Royalties")
With rstRemote
' Enumerate the Recordset object twice and record
' the elapsed time.
sngStart = Timer
For intLoop = 1 To 2
.MoveFirst
Do While Not .EOF
' Execute a simple operation for the
' performance test.
strTemp = !title_id
.MoveNext
Loop
Next intLoop
sngEnd = Timer
sngNoCache = sngEnd - sngStart
' Cache the first 50 records.
.MoveFirst
.CacheSize = 50
.FillCache
sngStart = Timer
' Enumerate the Recordset object twice and record
' the elapsed time.
For intLoop = 1 To 2
intRecords = 0
.MoveFirst
Do While Not .EOF
' Execute a simple operation for the
' performance test.
strTemp = !title_id
' Count the records. If the end of the
' cache is reached, reset the cache to the
' next 50 records.
intRecords = intRecords + 1
.MoveNext
If intRecords Mod 50 = 0 Then
.CacheStart = .Bookmark
.FillCache
End If
Loop
Next intLoop
sngEnd = Timer
sngCache = sngEnd - sngStart
' Display performance results.
MsgBox "Caching Performance Results:" & vbCr & _
" No cache: " & Format(sngNoCache, _
"##0.000") & " seconds" & vbCr & _
" 50-record cache: " & Format(sngCache, _
"##0.000") & " seconds"
.Close
End With
' Delete linked table because this is a demonstration.
dbsCurrent.TableDefs.Delete tdfRoyalties.Name
dbsCurrent.Close
End Sub