Как создать ссылки на мои таблицы в защищенном паролем бэкэнде, используя VBA в MS access - PullRequest
0 голосов
/ 26 ноября 2018

, поэтому я долго искал, как это сделать, так как я создал установку для своей базы данных.однако, когда вы по какой-то причине используете установку, она теряет пароль для связанных таблиц на серверной части.Мне нужен код, который поможет мне заново связать все таблицы под нагрузкой.Я довольно новичок в построении баз данных, так что я не уверен, что нужно было даже начинать писать код для этого

. Я нашел приведенный ниже код, который позволил мне добавить указанную таблицу, но мне нужно связать все таблицы в серверной частиDB, и я действительно не хочу повторять этот код для каждой таблицы

   Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strConnect As String
Dim strDbFile As String
Dim strLinkName As String
Dim strPassword As String
Dim strSourceTableName As String

strDbFile = "c:documents\mydb"
strPassword = "mypw"
strSourceTableName = "tblcaseid"
strLinkName = "link_to_caseid"

strConnect = "MS Access;PWD=" & strPassword & _
    ";DATABASE=" & strDbFile
Debug.Print strConnect
Set db = CurrentDb
Set tdf = db.CreateTableDef
tdf.Connect = strConnect
tdf.SourceTableName = strSourceTableName
tdf.Name = strLinkName
db.TableDefs.Append tdf

End Sub

, пожалуйста, помогите

1 Ответ

0 голосов
/ 26 ноября 2018

Понял, что мне не нужно удалять ссылки на таблицы и добавлять их снова, просто нужно перебирать таблицы, обновляя ссылку, включая пароль в strconnect

Sub relink()

Dim strDbFile As String
Dim strPassword As String
Dim strConnect As String

    strDbFile = "file location"
    strPassword = "database password"
    strConnect = "MS Access;PWD=" & strPassword & ";DATABASE=" & strDbFile

    Dim tdf As DAO.TableDef
    Dim db As DAO.Database

    Set db = CurrentDb

    For Each tdf In db.TableDefs
        ' ignore system and temp tables
        If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*" Or tdf.Name Like "exl*") Then
            tdf.Connect = strConnect
            tdf.RefreshLink
        End If
    Next


End Sub

это сработало

...