2

他の場所にある他のいくつかの *.mdb にリンクされているデータベース (*.mdb) のディレクトリがあります。

元のデータベースを 1 つのファイルから 2 つのパーティションに分割しました。ディレクトリ内のデータベースは、元のデータベース ファイル (およびその他のいくつかのデータベース) を指します。ここで、ディレクトリ内の各データベースのテーブルを、元の (分割された) データベースの正しいパーティションに再リンクする必要があります。

各データベースのリンク テーブル マネージャーで手動でテーブルを再リンクしてきましたが、これは非常に非効率的です。リンク テーブル マネージャーに何らかの方法でクエリを実行できれば、正しい番号を変更したかどうかを簡単に確認できます。テーブルの。

リンク テーブル マネージャーにクエリを実行する方法はありますか? VB を介して、またはテーブル名とファイルの場所を使用してシステム テーブルと SQL を使用しますか?

注: MS Access 2003 でファイルを開いていますが、MS Access 2003 がファイルを開き、Access 2000 形式を報告しています。

Remouの提案に従って、テーブルを再リンクするために私が書いたコードを次に示します。

Sub RelinkLinks()
    Dim db As Database
    Dim tdf As TableDef

    Dim OldLoc As String
    OldLoc = ";DATABASE=\\lois\_DB\DB\BE.mdb"

    Dim partition1Loc As String
    Dim partition2Loc As String
    partition1Loc = ";DATABASE=\\lois\_DB\DB\Partition 1\BE.mdb"
    partition2Loc = ";DATABASE=\\lois\_DB\DB\Partition 2\BE.mdb"

    Set db = CurrentDb

    For Each tdf In db.TableDefs

        ' Only cycle through the locations
        ' that are equal to the old one...
        If tdf.Connect = OldLoc Then
            ' Debug.Print tdf.Name & ":" & tdf.Connect

            Dim whichLoc As String

            If tdf.Name = "T_PAR_2_TBL_1" Or tdf.Name = "T_PAR_2_TBL_2" Then
            ' Only set the tables to partition 2 that were listed as in Partition 2 by the database splitter
                Debug.Print "Setting linked table " & tdf.Name & " FROM " & tdf.Connect & " TO " & partition2Loc
                whichLoc = partition2Loc
            Else
            ' If the name was not listed as in partition 2, set it to partition 1
                Debug.Print "Setting linked table " & tdf.Name & " FROM " & tdf.Connect & " TO " & partition1Loc
                whichLoc = partition1Loc
            End If

            'We will uncomment this when we take the safety off...
            'tdf.Connect = whichLoc
            'tdf.RefreshLink
        End If
    Next tdf
End Sub
4

1 に答える 1

1

VBA を介して TableDefs を参照することで、リンクを変更および更新できます。

 Set db = CurrentDB
 For Each tdf In db.Tabledefs
 If tdf.Connect <> Myconnect Then ''the connect property is a string
    tdf.Connect = MyConnect
    tdf.RefreshLink
 End If

CreateTableDef を使用して、外部データベースのすべてのテーブルを VBA にリンクすることもできます。通常、リンクしたいテーブルのテーブルを保持して使用すると便利です。

于 2012-08-23T14:33:11.907 に答える