Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


113 / 2272 ツリー ←次へ | 前へ→

【12979】特定のテーブルのみ別に保存するVBA あな 16/3/29(火) 10:30 質問[未読]
【12980】Re:特定のテーブルのみ別に保存するVBA かるびの 16/3/29(火) 20:07 回答[未読]
【12982】Re:特定のテーブルのみ別に保存するVBA あな 16/3/30(水) 8:34 お礼[未読]

【12979】特定のテーブルのみ別に保存するVBA
質問  あな  - 16/3/29(火) 10:30 -

引用なし
パスワード
   すみませんが教えてください。
AccessVBAでつくったデータベースを仕事で使ってます。
たくさんのテーブルがあるのですが、別の部署でそのうちの
2個だけ必要で、容量を小さくしたいのでそのテーブルだけ
別のAccessデータファイルとして保存するVBAをつくって、
フォームのボタンで自動化したいのです。(毎日行うので)
よろしくお願いします。

【12980】Re:特定のテーブルのみ別に保存するVBA
回答  かるびの  - 16/3/29(火) 20:07 -

引用なし
パスワード
   >そのテーブルだけ
>別のAccessデータファイルとして保存するVBAをつくって、
>フォームのボタンで自動化したいのです。

 あまり感心しませんね。

 データベースにおける基本的ルールとして、一事実一箇所というルールがあります。
 これは、データの格納は一箇所だけにしろということです。
例えば、顧客管理のデータベースにおいて、顧客の住所は、一箇所だけに格納しろということです。
言い換えれば、顧客のデータをコピーしてあちこちのテーブルに持つようなことはしてはいけない
ということです。
 データをコピーしてあちこちのテーブルに格納しておくと、
最新のデータ、あるいは正しいデータがどれなのかわからなくなってしまうからです。

 御希望のことは、一事実一箇所の原則に反することになってしまうので、避けるべきです。


 では、どうするかですが、
テーブルをコピーして新ファイルに保存するのではなく、
新ファイルでは、当該テーブルをリンクテーブルとして使うべきです。
 例えば、例えば、元データが格納されている甲.accdbファイルがあり、
このうちのAテーブルとBテーブルだけを使って、乙.accdbファイルで処理をしたいという場合、
乙.accdbファイルにおいては、AテーブルとBテーブルをリンクテーブルとすべきだということです。


 リンクテーブルとすることが不可能である場合であって初めて、
テーブルのコピーを考えることになります。

 その場合は、予め、甲.accdbファイルのAテーブルとBテーブルと同じ構造のテーブルを、
乙.accdbファイルに作っておきます。
なお、乙.accdbファイルにおいては、それぞれaテーブルとbテーブルだとします。

 そして、フォームに設けたコマンドボタンのクリックイベントで、
aテーブルの全レコード削除、
bテーブルの全レコード削除、
Aテーブルからaテーブルへの追加クエリ、
Bテーブルからbテーブルへの追加クエリ
を順次実行します。

【12982】Re:特定のテーブルのみ別に保存するVBA
お礼  あな  - 16/3/30(水) 8:34 -

引用なし
パスワード
   かるびのさま
ご指摘ありがとうございました。全くそのとおりですね。
しかし断れない感じなので、コピーの方法を参考に
させていただきます。ありがとうございました。

113 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free