• ベストアンサー

アクセス2003 空欄の場合のみ更新したい

すみません教えて下さい。 「テーブルA」というテーブルと「テーブルB」というテーブルがあり、 それぞれに「項目1」と「項目2」があります。 「テーブルB」の内容を元に「テーブルA」を更新したいのですが、 「テーブルA」の「項目2」が空欄の場合のみ、 「テーブルB」の「項目2」の内容を、 「テーブルA」の「項目2」へ登録したいのです。 その際、紐づけのキーとなる項目を「項目1」にしたいです。 OSはWinXP。アクセス2003です。 すみませんが、どのようにすれば良いか教えてもらえるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

新規のクエリをデザインビューで開いたら、『テーブルの表示』ダイアログを そのまま閉じ、メニューで「表示(V)→SQLビュー(Q)」を選択して、以下の SQL文を貼り付けて下さい。 (但し、ご質問通りのテーブル2つがあるのが前提になります) UPDATE テーブルA INNER JOIN テーブルB ON テーブルA.項目1 = テーブルB.項目1 SET テーブルA.項目2 = [テーブルB]![項目2] WHERE (((テーブルA.項目2) Is Null)); 貼り付け後、再びメニューで「表示(V)→デザインビュー(D)」を選択すれば、 クエリのデザインビューになりますので、それを参考に、実際のテーブルで 同じようなクエリを作成して下さい。 ※テーブル2の項目1が主キー(もしくは「重複なし」のインデックスあり)で  ないと、意図した通りの更新結果にならない場合がある(又は更新不可?)  のでご注意下さい。

tisaco
質問者

補足

ありがとうございます。現在、頂いた内容を元に試行錯誤してます。 色々やりすぎてしまい、どうした結果がどれなのか混乱してきました。 「0件のデータが更新されました」となってしまう事もありますし、 「XXXXXXのデータが更新されました」と表示されたので見てみると、 今まで1万件あったレコードが2万件になっていたりします。もう少し色々やってみます。 ところで「デザインビュー(D)」と「SQLビュー(Q)」は表示の違いだけなのですね。

その他の回答 (1)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

No.1です。 > 今まで1万件あったレコードが2万件になっていたりします。 まずは10件程度のレコードで動かして、クエリの動作の理解を 第一に考えた方がいいと思います。 (データベースウィンドウでテーブルをコピー&貼り付けし、  貼り付け時に「貼り付けの設定」で「テーブル構造のみ」を  選択すると、空のテーブルができます。あとは、これに実際  のレコードをコピー&貼り付け) 更新クエリで件数が増えるというのはちょっとわかりませんが、「0件が更新」 というのは、間違ってクエリを連続で2回実行されたのではないでしょうか。 (私もうっかりよくやっていましたので・・・(汗)) > 「デザインビュー(D)」と「SQLビュー(Q)」は表示の違いだけなのですね。 「SQL文」がまずあって、けれどそれだと文法(?)を覚えなければならない ので、より感覚的にわかりやすくするためのインターフェースとして デザインビューが用意された、ということだと思います。 (実際、デザインビューで作成できるクエリは全てSQLビューに切り替える  ことができますが、逆は必ずできるわけではありません;  例えば、2つのテーブルのデータを1フィールドに合一表示させることができる  「ユニオンクエリ」などは、デザインビューでの表示はできません) 慣れるまでは試行錯誤の連続だと思いますが(・・・そう言う私も今現在かなり 試行錯誤していますが)、お互い頑張りましょう。

tisaco
質問者

お礼

色々とアドバイスありがとうございます。 私の質問が悪いのかしら。 もっと皆さんガシガシ答えて頂けると思ったのですが、思いのほか少なく、 そんな中2度も回答いただけて、励みになりました。 がんばりまーす!

関連するQ&A