1

パスがまだ存在しないリンク テーブルを設定するにはどうすればよいでしょうか。

MS Access がインストールされていない顧客環境で最終的に使用するために、Access でリンク テーブルをセットアップする必要があります (Access データベースは、Jet を介してバックエンドとして使用されるだけです)。

お客様のサイトで Jet と DDL を使用して、.mdb 内のテーブルを作成/編集/削除できますが、私が知る限り、DDL を使用してリンク テーブルを作成することはできません。

理論的には、ここ (アクセス権がある場所) にリンク テーブルを作成し、VBA を使用して「無効な」パスを指定することができます (キリマンジャロがネットワーク上に存在しない顧客のサーバーであると仮定します)。

Function SetLinkedTablePath(tableName As String)
    Dim cdb As DAO.Database
    Set cdb = CurrentDb
    cdb.TableDefs(tableName).Connect = ";DATABASE=\\Kilimanjaro\Foo-Data.mdb"
    cdb.TableDefs(tableName).RefreshLink
    Set cdb = Nothing
End Function

ただし、.RefreshLink回線はパスを検証しようとするため、ネットワークでは失敗します。

この行をコメント アウトし.RefreshLinkて実行すると、問題なく実行されますが、Access でリンク テーブル マネージャーを確認すると、新しいパスが使用されていません。

これに対する解決策はありますか?マップされたドライブを使用しないことをお勧めします。

4

2 に答える 2

1

最後に、ネットワーク上の予備の仮想マシンを取得し、クライアントのサーバーと一致するように一時的に名前を変更しました (\\Kilimanjaroたとえば、名前を付けます)。その後、問題なくリンク テーブルを作成できました。

それは不十分でエレガントではありません。しかし、それが私たちの解決策だったので、この答えを受け入れるつもりですが、誰かがもっと巧妙なトリックを思いついたら、ぜひ聞いてみたいです.

于 2014-02-19T10:00:13.877 に答える
1

Kilimanjaroローカル ネットワーク上に実際のサーバーの名前が付けられていない場合はhosts、マシン上のファイルを編集して、サーバーが存在すると思わせるように「騙す」ことができます。Access 2010でこれを試したところ、うまくいきました:

「管理者として」Windowsコマンドプロンプトを開き、コマンドを発行しました

notepad C:\Windows\System32\drivers\etc\hosts

そのようにファイルの最後に行を追加しました

192.168.1.109   Kilimanjaro

192.168.1.109ローカル テスト サーバーの IPv4 アドレスはどこにありますか (実際の名前は別のものです)。変更を保存して、メモ帳を終了しました。

次に、Access.Connectで、リンクされたテーブルのプロパティを微調整して、\\Kilimanjaro次のようにポイントすることができました。

Dim cdb As DAO.Database, tbd As DAO.TableDef
Set cdb = CurrentDb
Set tbd = cdb.TableDefs("TableX")
tbd.Connect = ";DATABASE=\\Kilimanjaro\Public\Database1.accdb"
tbd.RefreshLink
Set tbd = Nothing
Set cdb = Nothing

その UNC パスに名前が付けられたファイルが実際にあったため、Database1.accdbAccess では問題なく、リンクされたテーブルを通常どおりデータシート ビューで開くことができました。

于 2014-02-12T22:06:29.200 に答える