- ベストアンサー
Accessデータを違うmdbにコピーしたい
VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
バックアップを使える形でとりたいのであれば、テーブルを(別名で)インポートするか、リンクテーブルを作成すると良いと思います。 直接、今回の件に関係ないかもしれませんが、 私は、mdbで複数人数が利用するDBを構築する際はデータ部分と、その他の部分を別のmdbで作るようにしています。 リンクテーブルでデータに操作することもありますし、ADOなどでアクセスする場合もあります。 (操作アプリをアクセス以外で作りたい場合や、将来的に他のDBへ移行したいものはADOを使うことが多いです。) データ部分がひとつであることにより、データ構造の改変のときの運用が楽になります。
その他の回答 (2)
- nfushi
- ベストアンサー率31% (39/122)
aaa.mdbは過去のDBで新しく作成したDBがbbb.mdbという認識で良いですか? それで過去のデータも表示したいというのならば、aaa.mdbの該当テーブルをbbb.mdbにインポートする。 過去のテーブルをAとし、現在のテーブルをBとすると SELECT A.a, A.b, A.c FROM A UNION ALL SELECT B.a, B.b, B.c, B.d, B.e FROM B みたいなSQLでVB側で表示可能かと思います。 B.d、B.eが新しく追加された列と思ってください。
- nda23
- ベストアンサー率54% (777/1415)
bbb.mdbにaaa.mdbのテーブル1をリンクします。次に、bbb.mdbで追加クエリを 作成し、aaa.mdbのテーブル1からbbb.mdbのテーブル1の項目に対応させれば 良いでしょう。もし、フィールド名が同じなら、aaa.mdbの項目を選択すると、 自動的にbbb.mdbの項目が対応します。 >列の追加が必要になる、いうことはまずいことでしょうか? いえ、よくある話です。テーブルの変更無しに寿命を終えるシステムなど、 まずは無いとしたものです。
補足
回答ありがとうございました。 >bbb.mdbで追加クエリを >作成し、aaa.mdbのテーブル1からbbb.mdbのテーブル1の項目に対応させれば >良いでしょう。もし、フィールド名が同じなら、aaa.mdbの項目を選択すると、 >自動的にbbb.mdbの項目が対応します 参考URLを見てみました。追加クエリというのがよくわからないので調べてみました。Accessでの操作方法はいろんなページに記載があったのですが、VB2005で作成したフォーム上のボタンを押したらテーブルの読み込みを行う、というような例題が見つけ出せず苦労しています。探し方が悪いのかもしれません。もしご存知でしたらお手数ですが教えてください。引き続き自分でも調べます。 アドバイスくださりありがとうございました。
お礼
回答ありがとうございました。 インポート、又はリンクテーブルの作成で可能なんですね。 VB2005からの操作方法がいまいちわからないので、調べてみます。 もし、参考コードやサイトなどご存知でしたらお手数ですが教えてください。 DBの構築の方法のアドバイスありがとうございます。 データ部分とその他の部分を分割した方が良いのですね。 今まで一緒にしていたので、分けてできるようにしてみます。 ありがとうございました。