
Access2010をつぎのような環境で開発しています。
c:\開発\データ.accdb テーブル定義と実データ格納
c:\開発\アプリ.accdb データ.accdbのテーブル定義へのリンクとフォームなど
これを本番のネットワーク環境 “\\network\本番” に設置した場合、
「c:\開発\データ.accdbは無い」旨のエラーになってしまいます。
また、本番環境のパス名はインストール先によって異なります。
Access2010のリンクマネージャでは絶対パスでのリンクしか定義できないようですが、
カレントパスに変更するには、アプリ.accdb を起動時に毎回、動的に変更するしかないのでしょうか?
お教えいただきたくお願いいたします。
No.2ベストアンサー
- 回答日時:
データ.accdb と アプリ.accdb が同じフォルダ内にあって
アプリ.accdb のリンク先を
その同じフォルダ内のデータ.accdbに設定するのなら、
VBAになりますが、アプリ.accdb に(例は標準モジュールです)
Sub reLink()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim lnkPath As String
Dim i As Integer
lnkPath = CurrentProject.path
Set db = CurrentDb
For Each tdf In db.TableDefs
If Len(tdf.Connect) <> 0 Then
tdf.Connect = ";DATABASE=" & lnkPath & "\データ.accdb"
tdf.RefreshLink
End If
Next
db.TableDefs.Refresh
End Sub
というのを一回実行すればリンク先が変更されます。
ただ、アプリ.accdb も共有フォルダ内に置いて、みんなが使うのは、
アプリ.accdb が壊れる可能性が高まる。
アプリ.accdb のデータもネットワークを流れるのでパフォーマンスが良くない。
という点でお勧めできません。
アプリ.accdb は各ユーザーに配布して使ってもらった方が吉。
データ.accdb のバックアップも抜かりなく。
この回答への補足
ありがとうございます。
質問内の アプリ.accdb は初期処理として業務選択メニュフォームを表示していますが、formload 時にお教え頂いたモジュールを実行することで求めていたことが実現できました。
また、ご回答でもご指摘のとおり、リスク回避やパフォーマンス向上のためのあるべき姿としてアプリ.accdbを共有フォルダにおくべきでないことも十分理解できました。
しかしながら、アプリ.accdbとデータ.accdbを同一フォルダにおかない場合、当該モジュールの方法ではパスの変更が実現できなくなります。
開発と本番の動作環境が異なることは、ごく自然なことと思いますが、Accessでの開発においては、本番環境移行時にリンクの絶対パスを書き換えるか、またはパス設定テーブル風なものを用意して、起動時にそれを参照するなどが、一般的なのでしょうか?
それとも、もっと基本的なセオリーがあるのでしょうか?
重ねてお教え頂きたくお願いいたします。
No.3
- 回答日時:
>アプリ.accdbとデータ.accdbを同一フォルダにおかない場合
同一フォルダに置いてリンク先を更新。それから配布。Or
開発・本番環境のPathをテーブルに保存しておき更新。
ではないでしょうかね。
アプリから複数のデータファイルにリンクを張っている場合は後者。
テーブル名|本番Path|開発Path
バグ取りや機能追加を行って再配布の場合には
どこか(テーブルかファイルのプロパティなど)にバージョン情報をおいて
アプリの起動時にチェック。
別のプロセス(VBSや更新.accdbなど)を立ち上げて自身は終了。
更新処理(ユーザーへのコピー?)が終わったら新アプリを起動。
のように行っていました。
(当初はメール告知だけだったのですが替えてくれない方が多かった)
(その他にも色々と・・・)
基本的なセオリーは独学のため、よく分かりませんが、
確実・安全・・を考えて行ってみてください。
なお、当方は社内用のモノしか作成したことが有りませんので
社外用やネットワークで繋がっていない場合に関しては門外漢です。
以上、ご参考まで。
No.1
- 回答日時:
リンク先が変われば起動時に毎回変更するしかないでしょうね
全てのリンク先がわかっていればテーブルにパスを保存し、アプリ起動時に確認して必要なら自動でリンク変更は出来ますが、そうでなければパスは入力(設定)が必要です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
アクセスと同フォルダのCSVファイルをインポートしたい
Access(アクセス)
-
Accessでリンクテーブルのパス変更
その他(データベース)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
ACCESS:保存済みのインポート操作のパスを取得
その他(データベース)
-
7
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
8
OR関数
その他(Microsoft Office)
-
9
Accessのハイパーリンクをクリックしてもファイルが開かない
Access(アクセス)
-
10
AccessにリンクさせたExcelファイルのパスについて
Access(アクセス)
-
11
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
14
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
15
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
16
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
17
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
18
Access VBA標準モジュールについてです。
Access(アクセス)
-
19
Vbaでアクセスからエクセルにリンクテーブルする
Access(アクセス)
-
20
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
iPhoneからAndroidの端末を探す
-
5
メルカリで本人確認書類の提出...
-
6
Macでインターネットの通信速度...
-
7
Deep Cleanerって大丈夫でしょ...
-
8
テキストエデイットに文字入力...
-
9
スマホの容量を空ける方法は ア...
-
10
spacedeskというアプリがパソコ...
-
11
声ともというアプリで開こうと...
-
12
EaseUSやAOMEIのバックアップソ...
-
13
無料でアダルト動画が見れるア...
-
14
モンストグッズアプリがいつ開...
-
15
彼女が音声通話アプリ?をやめ...
-
16
完全無料で友達や恋人を、探せ...
-
17
チェリーボーイです 俺のチェリ...
-
18
スクリーンタイムのApp使用時間...
-
19
zoomて、結局どれを使えばいい...
-
20
LINEのスタンプが使えなくなり...
おすすめ情報
公式facebook
公式twitter