プロが教える店舗&オフィスのセキュリティ対策術

現在ACCESS2003で出荷データから売上の集計が可能となるように
試みているのですが、都合上プログラムとデータを分けて処理
したいと考えております。
そこで、リンクテーブルを活用したいと思うのですが、環境に
よってパスが変更となったり、データソースを切り替えたい時
などリンクテーブルのパスが変更できると非常に有難い状況です。
多少ネットで調べVBAで変更させる方法は見つかったのですが、
基本的に1つのリンク先を想定しているとの事で、複数は対応
していないようです。

例えば、リンクテーブルをそれぞれ
TBL伝票データ   → C:\DB1\A.mdb
TBL得意先マスター → C:\DB2\B.mdb
TBL商品マスター  → C:\DB2\C.mdb
と言ったように複数リンク先がある場合でそれぞれ
パス変更が生じた場合に簡単に変更ができる方法は無いでしょうか。

(リンクファイルが1つの場合)
Dim db As Database
Dim a As TableDef
Set db = CurrentDb()
For Each a In db.TableDefs
If Len(a.Connect) <> 0 Then
a.Connect = ";database=" & NEWPATH '→新しいパス名
a.RefreshLink
End If
Next
db.TableDefs.Refresh

gooドクター

A 回答 (1件)

下記のコードを試してみて下さい。

ただし、すでにTBL伝票データ,TBL伝票データ,TBL商品マスターがリンクテーブルとして存在していることが条件です。

Dim db As Database
Dim a As TableDef
Set db = CurrentDb()
For Each a In db.TableDefs
If Len(a.Connect) <> 0 Then
Select Case a.Name
Case "TBL伝票データ"
a.Connect = ";database=" & "C:\DB1\A.mdb" '→新しいパス名(TBL伝票データ
a.RefreshLink
Case "TBL得意先マスター"
a.Connect = ";database=" & "C:\DB2\B.mdb" '→新しいパス名(TBL得意先マスター
a.RefreshLink
Case "TBL商品マスター"
a.Connect = ";database=" & "C:\DB2\C.mdb" '→新しいパス名(TBL商品マスター
a.RefreshLink
End Select
End If
Next
db.TableDefs.Refresh
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
テストした結果、思い通り事が運びました!!
ありがとうございます。

お礼日時:2009/11/05 07:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング