Метод Database.CreateTableDef (DAO)
Область применения: Access 2013, Office 2013
Создает новый объект TableDef (только для рабочих областей Microsoft Access). .
Синтаксис
expression . CreateTableDef(Name, Attributes, SourceTableName, Connect)
выражение: переменная, представляющая объект Database.
Параметры
Имя |
Обязательный/необязательный |
Тип данных |
Описание |
---|---|---|---|
Name |
Необязательно заполнять. |
Variant |
Variant (подтип String) присваивает уникальное имя новому объекту TableDef. См. свойство Name для получения более подробных сведений о допустимых именах TableDef. |
Attributes |
Необязательно заполнять. |
Variant |
Константа или сочетание констант, которое отражает одну или несколько характеристик нового объекта TableDef. См. свойство Attributes для получения дополнительной информации. |
SourceTableName |
Необязательно заполнять. |
Variant |
Variant (подтип String) содержит название таблицы во внешней базе данных, которая служит исходным источником данных. Исходная строка становится параметром свойства SourceTableName для нового объекта TableDef. |
Connect |
Необязательно заполнять. |
Variant |
Variant (подтип String) с информацией об источнике открытой базы данных, базе данных, используемой в запросе к серверу, или связанной таблицы. См. свойство Connect для получения дополнительной информации о допустимых строках подключения. |
Возвращаемое значение
TableDef
Комментарии
Если опустить одну или несколько необязательных частей при использовании метода CreateTableDef, вы можете воспользоваться соответствующим оператором присваивания, чтобы задать или сбросить соответствующее свойство перед добавлением нового объекта в коллекцию. После добавления объекта вы можете изменять некоторые, но не все его свойства. См. разделы для отдельных свойств для получения дополнительных данных.
Если имя ссылается объект, который уже входит в коллекцию, или вы указываете недопустимое свойство в объекте TableDef или Field, который вы добавляете, возникает ошибка во время выполнения, если вы используете метод Append. Кроме того, нельзя добавить объект TableDef в коллекцию TableDefs, пока вы не определите по крайней мере один объект Field для объекта TableDef.
Чтобы удалить объект TableDef из коллекции TableDefs, используйте метод Delete для коллекции.
Пример
В этом примере создается новый объект TableDef в базе данных 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
В этом примере используются методы CreateTableDef и FillCache и свойства CacheSize, CacheStart и SourceTableName для перечисления записей в связанной таблице два раза. Затем выполняется перечисление дважды с кэшем в 50 записей. Затем пример отображает статистику производительности для некэшированных и кэшированных запусков в связанной таблице.
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