Метод TableDef.RefreshLink (DAO)
Область применения: Access 365, Access 2021, Access 2019, Access 2016
Обновления сведения о подключении для связанной таблицы (только для рабочих областей Microsoft Access).
Синтаксис
expression . RefreshLink
выражение: переменная, представляющая объект TableDef.
Комментарии
Чтобы изменить сведения о подключении для связанной таблицы, сбросьте свойство Connect соответствующего объекта TableDef , а затем используйте метод RefreshLink для обновления сведений. Использование метода RefreshLink не изменяет свойства связанной таблицы и объекты Relation .
Чтобы эти сведения о подключении существовали во всех коллекциях, связанных с объектом TableDef , который представляет связанную таблицу, необходимо использовать метод Refresh для каждой коллекции.
Начиная с Access 365 версии 2403 метод RefreshLink сохраняет существующие табличные индексы. Если ранее у вас была связанная таблица, которая потеряла бы первичный ключ после выполнения метода RefreshLink, и вы добавили код для явного повторного создания индекса после RefreshLink, это приведет к ошибке 3283 "Первичный ключ уже существует".
Пример
В этом примере метод RefreshLink используется для обновления данных в связанной таблице после того, как ее подключение было изменено из одного источника данных в другой. Для выполнения этой процедуры требуется процедура RefreshLinkOutput.
Sub RefreshLinkX()
Dim dbsCurrent As Database
Dim tdfLinked As TableDef
' Open a database to which a linked table can be
' appended.
Set dbsCurrent = OpenDatabase("DB1.mdb")
' Create a linked table that points to a Microsoft
' SQL Server database.
Set tdfLinked = _
dbsCurrent.CreateTableDef("AuthorsTable")
' Note: The DSN referenced below must be configured to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
tdfLinked.Connect = _
"ODBC;DATABASE=pubs;DSN=Publishers"
tdfLinked.SourceTableName = "authors"
dbsCurrent.TableDefs.Append tdfLinked
' Display contents of linked table.
Debug.Print _
"Data from linked table connected to first source:"
RefreshLinkOutput dbsCurrent
' Change connection information for linked table and
' refresh the connection in order to make the new data
' available.
' Note: The DSN referenced below must be configured to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
tdfLinked.Connect = _
"ODBC;DATABASE=pubs;DSN=NewPublishers"
tdfLinked.RefreshLink
' Display contents of linked table.
Debug.Print _
"Data from linked table connected to second source:"
RefreshLinkOutput dbsCurrent
' Delete linked table because this is a demonstration.
dbsCurrent.TableDefs.Delete tdfLinked.Name
dbsCurrent.Close
End Sub
Sub RefreshLinkOutput(dbsTemp As Database)
Dim rstRemote As Recordset
Dim intCount As Integer
' Open linked table.
Set rstRemote = _
dbsTemp.OpenRecordset("AuthorsTable")
intCount = 0
' Enumerate Recordset object, but stop at 50 records.
With rstRemote
Do While Not .EOF And intCount < 50
Debug.Print , .Fields(0), .Fields(1)
intCount = intCount + 1
.MoveNext
Loop
If Not .EOF Then Debug.Print , "[more records]"
.Close
End With
End Sub