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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- その他(Microsoft Office) こんにちは。Windows10でaccess(拡張子accdb)を右クリックし、プロパティ→全般タブ 1 2023/02/03 19:14
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(ニュース・時事問題) マイナンバーカードの批判 25 2023/06/30 21:30
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです
Access(アクセス)
-
アクセスと同フォルダのCSVファイルをインポートしたい
Access(アクセス)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
-
4
Accessでリンクテーブルのパス変更
その他(データベース)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
Vbaでアクセスからエクセルにリンクテーブルする
Access(アクセス)
-
8
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
9
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
10
Access サブフォームでの選択行の取得
その他(データベース)
-
11
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
12
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
13
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
14
「RunSQL」と「Execute」の違い
Access(アクセス)
-
15
データベースの最適化をマクロでしたい
その他(データベース)
-
16
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
17
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
18
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
19
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
20
Accessの画面更新を一時的に停止する方法。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アイコンに付いている緑のチェ...
-
残データ容量0.1Gになりました。
-
パソコンでファイルを開く時、...
-
位置情報アプリwhooについて 彼...
-
16歳男子です。 最近性欲が強く...
-
アプリ保管庫につきまして。
-
LINEで電話をかけたら、「相手...
-
whooというアプリは、位置情報...
-
discordというアプリが、通話を...
-
指数
-
gの違う方のやつの出し方を教え...
-
アプリ「みてね」について 困っ...
-
Simejiのアプリで文字を筆記体...
-
タブレットやスマホのブラウザ...
-
EaseUSやAOMEIのバックアップソ...
-
エクスペディアで海外旅行を予...
-
Androidのタブレットでイヤホン...
-
携帯simに、GPSや、位置情報っ...
-
スペースデスクというアプリは...
-
契約なしのスマホはgoogleplay...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アイコンに付いている緑のチェ...
-
スペースデスクというアプリは...
-
パソコンでファイルを開く時、...
-
位置情報アプリwhooについて 彼...
-
whooというアプリは、位置情報...
-
LINEで電話をかけたら、「相手...
-
アプリ保管庫につきまして。
-
アクリーというアクスタのアプ...
-
gの違う方のやつの出し方を教え...
-
Windows Update 後、Office2019...
-
タブレットやスマホのブラウザ...
-
16歳男子です。 最近性欲が強く...
-
QRコードで、読み取って読ん...
-
spacedeskというアプリがパソコ...
-
EaseUSやAOMEIのバックアップソ...
-
CubePDFをインストールしたら、...
-
会社で変なアプリ入れられました
-
携帯simに、GPSや、位置情報っ...
-
Simejiのアプリで文字を筆記体...
-
残データ容量0.1Gになりました。
おすすめ情報