2016-08-12 7 views
0

ネットワークドライブに格納されているAccessデータベースのセットがあります。これらのデータベースには独自のテーブルがあり、このドライブ内の他のデータベースの他のテーブルへのリンクがあります。クエリはネットワーク経由で実行されるため、クエリが完了するまでに時間がかかります。必要なオブジェクトをローカルフォルダにコピーしてクエリを実行し、その結果をネットワーク上の元のデータベースに戻すオプションを作成する方法はありますか?ローカルのネットワークドライブからアクセスクエリを実行する

+2

これは完璧になるにはあまりにも多くの作業が必要だと思います。これを2人のユーザーが同時に実行したとすると、後で照会を実行したユーザーは前の人の作業を上書きします。私が示唆している最高のものは、SQLサーバーのいくつかの並べ替えに大規模な応答のための –

答えて

1

私もその問題があります。

まず、テーブルのリンクテーブルが保存されている場所を伝えます(「リンクされたテーブルソース」)である:私は二つのことを自分のローカルドライブにソースデータと私のデータベースをコピーして追加します。 1行目は、DBがネットワーク上にあるときに使用する場所を持っている、第二のショーのソースデータは、私はその後、私の場合には(私のローカルPC上で、B :)

ID source path 
1 network \\usa0300swg02\sthq\corptax\tax\shared\Common Tables 2016.accdb 
2 local b:\Common Tables 2016.accdb 

だとき、私が持っているところ私は、AutoExecマクロで設定したVBA機能、私はデータベースをロードするたびに実行するには:

Function relink_tables() 

If Left(CurrentDb().Name, 2) = "C:" Or Left(CurrentDb().Name, 2) = "B:" Then 
    Source = "local" 
    Else: Source = "network" 
    End If 
Set rs = CurrentDb.OpenRecordset("select * from [linked table source] where source='" & Source & "'") 
Source = rs.Fields("path") 

For Each R In References 
    If InStr(R.Name, "Common Tables") > 0 Then Application.References.Remove R 
    Next R 
Application.References.AddFromFile Source 

x = 0 
Set TDefs = CurrentDb().TableDefs 
For Each table In TDefs 
    If InStr(table.Connect, "Common Tables") = 0 Then GoTo NT 
    table.Connect = ";DATABASE=" & Source 
    table.RefreshLink 
    x = x + 1 
NT: 
    Next table 
Finish: 
MsgBox "remapped " & x & " tables" 
End Function 

注:

  • これはまた、コードモジュールへの参照を更新します - あなたは、これらの行を削除することができますあなたがそれらを必要としない場合
  • あなたの特定の状況に合わせて機能を調整する必要があるかもしれません - 私の場合、すべてのリンクされたテーブルは "Common Tables"と呼ばれるdbからcomであり、そのデータベースのすべてを再リンクします。あなたの正確な要件は、おそらく異なるだろうが、これはあなたに私は毎年、データベースをロールオーバーする場合これも非常に便利です
  • を開始する場所を与える可能性 - 私はちょうどリンクテーブル(2016から2017年までの)ソースと再更新します-run the macro

上記のHynek Bernard氏によると、バージョン管理とマルチユーザーアクセスは大きな考慮事項です。私の場合、ローカルコピーを使用しているときにdbを使用している他の人を制御できます。別のオプションは、あなたは、SharePointまたは類似した何かを持っている場合は、ネットワーク上のDBリポジトリとしてそれを使用して、チェックアウトを使用してチェックイン制御のための機能のことです。ダウンロードしたデータの場所を知るためには、まだリンクを手に入れる必要があります。

+0

感謝をアップグレードしています。それは私に始める良い基礎を与えてくれました。私はあなたとHynekがマルチユーザアクセスになると言ったことを考慮に入れます。 –

関連する問題