- 締切済み
Access2003で
Access2003で AテーブルとBテーブルがあります。 両テーブルにも、NOフィールドがあります。 両テーブルとも1からの数字を付与しています。 NOフィールドの他に名称などのフィールドがあります。 ここでお聞きしたいのですが、BテーブルのNOフィールドの2のレコードを、 AテーブルのNOフィールドの2のレコードに上書きしたいのですが、どうすれば良いでしょうか? ちなみにBテーブルには上書きしたいレコード(この例でいきますとフィールド2)だけが格納されています。 どうすれば良いでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- layy
- ベストアンサー率23% (292/1222)
Aテーブルはもともとのテーブルで Bテーブルは更新用に準備されるテーブル、 Bテーブルは更新のときの差分データが格納されるので 毎回内容や件数が違ってきます、 ということですね?。 Aが基本とするテーブルであれば、Bテーブルのレコードは毎回クリアされますか?。 1) Aと同じ構造のテーブルCを準備する。 A・BからのAにしかないものはAから、A・B両方あるものはBから、 BにしかないものはBから、になる選択クエリや追加クエリをする、 最終形はCに出来上がります。 2) A・B両方にあるものはAから削除する、 BをAへ追加クエリをする、 最終形はAに出来上がります。 3) A・B両方にあるものでAにしかないものをBへ追加クエリする。 最終形はBに出来上がります。 4) BからAを直接更新させる更新クエリ あとは、 何かあったとき、もう1回最初からやり直す、ことまで 必要としているかどうかも関係してきます。
- tag1701
- ベストアンサー率54% (67/123)
更新クエリを作成すれば良いと思います。 テーブルAとテーブルBのNoフィールドを1対1で結んで テーブルAの※列にはBテーブルの#列を入れ込むと作成し 最終列にBテーブルの抽出条件に=2とすれば如何でしょうか? SQLで記述すると UPDATE Bテーブル INNER JOIN Aテーブル ON Aテーブル.No = Bテーブル.No SET Aテーブル.※1列 = Bテーブル.※1列, Aテーブル.※列2 =Bテーブル.※列2, WHERE (((Bテーブル.No)=2)); こんな感じでしょうか?
お礼
ありがとうございます。 補足させて頂きます。 テーブルBはテーブル作成クエリで作られたものです。 ですので、あるボタンをクリックするとテーブルBができるようになっております。 もう1点ですが、ここではNOフィールドが2としていますが、実際はここの数字は毎回異なります。 ややこしくなりましたが、御教授下さい。 よろしくお願いします。