<record id="kanabn_count_dashbord" model="kanban.count">
<field name="name">Kanban Dashboard</field>
</record>
Можно использовать код ниже для обновления всех таблиц ODBC в проекте Access к данному DSN.
Как использовать его
Просто скопируйте код в новом или существующем модуле VBA и, где Вы хотите обновить ссылки, назовите его с надлежащим DSN для нового соединения ODBC:
RefreshODBCLinks "ODBC;DRIVER=SQL Server Native Client 10.0;" & _"
"SERVER=SQLSERVER;UID=Administrator;" & _
"Trusted_Connection=Yes;" & _
"APP=2007 Microsoft Office system;DATABASE=OrderSystem;"
Кроме того, взгляните на справку Доступа для TableDef.RefreshLink
метод.
Версия кода 1
Классический способ повторно связаться, но Доступ может сохранить информацию о соединении в памяти, если таблицы использовались прежде RefreshODBCLinks
назван.
Public Sub RefreshODBCLinks(newConnectionString As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef
Set db = CurrentDb
For Each tb In db.TableDefs
If Left(tb.Connect, 4) = "ODBC" Then
tb.Connect = newConnectionString
tb.RefreshLink
Debug.Print "Refreshed ODBC table " & tb.Name
End If
Next tb
Set db = Nothing
End Sub
Версия кода 2
Это полностью воссоздаст связанные таблицы ODBC: старые будут переименованы, затем новые таблицы с помощью данного DSN будут составлены прежде, чем удалить старую связанную версию.
Удостоверьтесь, что Вы тестируете это и возможно добавляете некоторый код для лучше обработки ошибок по мере необходимости.
Обратите внимание также что параметр dbAttachSavePWD
переданный во время создания таблицы ODBC сохранит пароль ODBC (если таковые имеются) в Доступе. Просто удалите его, если это не то, в чем Вы нуждаетесь.
Public Sub RefreshODBCLinks(newConnectionString As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim originalname As String
Dim tempname As String
Dim sourcename As String
Dim i As Integer
Set db = CurrentDb
' Get a list of all ODBC tables '
Dim tables As New Collection
For Each tb In db.TableDefs
If (Left(tb.Connect, 4) = "ODBC") Then
tables.Add Item:=tb.Name, key:=tb.Name
End If
Next tb
' Create new tables using the given DSN after moving the old ones '
For i = tables.count To 1 Step -1
originalname = tables(i)
tempname = "~" & originalname & "~"
sourcename = db.TableDefs(originalname).SourceTableName
' Create the replacement table '
db.TableDefs(originalname).Name = tempname
Set tb = db.CreateTableDef(originalname, dbAttachSavePWD, _
sourcename, newConnectionString)
db.TableDefs.Append tb
db.TableDefs.Refresh
' delete the old table '
DoCmd.DeleteObject acTable, tempname
db.TableDefs.Refresh
tables.Remove originalname
Debug.Print "Refreshed ODBC table " & originalname
Next i
Set db = Nothing
End Sub
Одна последняя вещь: если Вы все еще получаете проблемы, которые требуют, чтобы Вы перезапустили Доступ для изменений, чтобы быть видимыми, затем взглянуть на мой код в Перезапуске и уплотнении базы данных программно по моему сайту.
Примечание: Версия кода 2 была вдохновлена частично этой статьей Access Web.
Какую версию Доступа Вы используете? В 2000 можно перейти к Инструментам> Database Utilities> Диспетчер связанных таблиц для изменения настроек.