- 締切済み
Access2003 更新クエリについてご教授下さい。
初めまして。 今回、初めてご質問させていただきます。 Access2003の更新クエリについてご教授お願いします。 AテーブルとBテーブルがあります。 ■Aテーブル(ALLテーブル) 各フィールド名: 名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) ■Bテーブル(更新させたいテーブル) 各フィールド名: 名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) (※Aテーブルと同じです。) Bテーブルの内容をAテーブルへ更新させたいのですが 名前/完了のフィールドは、更新クエリで完成出来ましたが 備考欄の更新が出来ません。 (※備考欄には、コメントがそれぞれ入っています。) どのような形でクエリを作成すれば Aテーブルへ更新が可能になるのでしょうか? 以上、ご教授お願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
<tabA> 名前___完了___備考 a________No__________ b________No__________ c________No__________ <tabB> 名前___完了___備考 b________Yes____bbb このような場合、tabB に対応する tabA のレコードを選択するクエリは次のようです。 SELECT tabA.* FROM tabA INNER JOIN tabB ON tabA.名前=tabB.名前; INNER JOIN 操作=2 つのテーブルの共通するフィールドに同じ値があった場合に、両方のテーブルのレコードを結合します。 (Access ヘルプ文より) クエリの[表示]を[SQLビュー]モードにしてコピペして[デザインビュー]に戻されたら上記のクエリの作成要領は判ると思います。 質問は、「このレコードの各列にtabB の値を代入したい」ということですか? であれば、上記の SELECT文をUPDATE文に修正することになります。 UPDATE tabA INNER JOIN tabB ON tabA.名前=tabB.名前 SET tabA.完了 = tabB.完了, tabA.備考 = tabB.備考; まあ、クエリを何となくいじっていたら出来たということは、SQL文ベースでは理解されていないのかな? もちろん、そのような理解がなくても可能なようにクエリが提供されている訳ですが・・・。 <INNER JOIN 操作> クエリで tabA と tabB を配置し、二つのテーブルを結ぶ線をクリックし[結合プロパティ」を選択すれば自動的にSQL文が生成されます。 作成される SQL文は、<UPDATE tabA INNER JOIN tabB ON tabA.名前=tabB.名前>ここまで! <各列にtabB の値を代入> ________フィールド:完了_______|備考_______| __________テーブル:tabA_______|tabA_______| __レコードの更新:tabB!完了|tabB!備考|<----ビルド機能を利用します。 これで、<SET tabA.完了 = tabB.完了, tabA.備考 = tabB.備考;>がSQL文に付加されます。 ※しかし、判らんのは、<名前/完了のフィールドは、更新クエリで完成出来ましたが備考欄の更新が出来ません。> ※<名前の一致を条件に、完了のフィールドの更新クエリは出来ましたが>なら理解できます。 なお、生まれて初めて<更新クエリ>なるものを作ったんでヒヤヒヤもんです。
お礼
大変遅くなってしまい申し訳ありませんでした。 Husky2007様、ご教授ありがとうございます。 SQL文で確認したところ 更新させたい備考欄の文章に[]を付け加えることで 更新クエリが正常に起動しました。 説明が至らなかった点やお礼が遅くなってしまったことを お詫び申し上げます。 以上、宜しくお願い致します。