
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組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです
Access(アクセス)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
アクセスと同フォルダのCSVファイルをインポートしたい
Access(アクセス)
-
-
4
Accessでリンクテーブルのパス変更
その他(データベース)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
9
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
10
OR関数
その他(Microsoft Office)
-
11
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
12
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
13
ACCESS:保存済みのインポート操作のパスを取得
その他(データベース)
-
14
Accessのハイパーリンクをクリックしてもファイルが開かない
Access(アクセス)
-
15
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
16
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
17
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
18
「#エラー」の回避
Access(アクセス)
-
19
「RunSQL」と「Execute」の違い
Access(アクセス)
-
20
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アイコンに付いている緑のチェ...
-
スペースデスクというアプリは...
-
パソコンでファイルを開く時、...
-
gの違う方のやつの出し方を教え...
-
残データ容量0.1Gになりました。
-
CubePDFをインストールしたら、...
-
LINEで電話をかけたら、「相手...
-
spacedeskというアプリがパソコ...
-
指数
-
Windows Update 後、Office2019...
-
iPhoneのバッテリー激減とノー...
-
EaseUSやAOMEIのバックアップソ...
-
ペイディというアプリで口座番...
-
アクリーというアクスタのアプ...
-
スマホのアプリが勝手に増えます!?
-
同じアプリをインストールした...
-
アプリ内でアクセスしているURL...
-
snipping tool を常時最前面に...
-
Clipboxで保存した動画が見れな...
-
タブレットやスマホのブラウザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アイコンに付いている緑のチェ...
-
パソコンでファイルを開く時、...
-
gの違う方のやつの出し方を教え...
-
スペースデスクというアプリは...
-
LINEで電話をかけたら、「相手...
-
Windows Update 後、Office2019...
-
位置情報アプリwhooについて 彼...
-
whooというアプリは、位置情報...
-
アクリーというアクスタのアプ...
-
残データ容量0.1Gになりました。
-
CubePDFをインストールしたら、...
-
アプリ内でアクセスしているURL...
-
EaseUSやAOMEIのバックアップソ...
-
spacedeskというアプリがパソコ...
-
Windows11にしたら、次の動画へ...
-
バッファローの「みまもり合図...
-
契約なしのスマホはgoogleplay...
-
携帯simに、GPSや、位置情報っ...
-
タブレットやスマホのブラウザ...
-
Accessのリンク先を相対パスに...
おすすめ情報