Поделиться через


Метод 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