• 締切済み

Access 更新クエリについて

いつもお世話になっております。 今回もAccessについてご指南お願い致します。 ただいまAccess2007で顧客管理DB作成しておりそれは無事完成いたしました。 今回は、更新クエリについてお伺いしたいです。 クライアント様より、お客様の進捗状況データがエクセルで毎週送られてきます。 そのデータ型は毎週同じです。 顧客番号、お客様の現ステータス、申込状況、支払方法登録状況など、 1行ごとにお客様の情報が記載されています。 A B C D E 1顧客番号 ステータス 支払い 入会日 開始日 2S52134 利用OK コンビニ 2015/3/10 2015/3/15 3 … 4 … 5 … といったデータです。 これを貼り付ける用のテーブルを作成しクエリで更新したい項目と紐付ける為の項目(今回は顧客番号)を出してきて、なおかつメインテーブルから更新したい項目をだしてきたクエリを作成しました。 更新用クエリで上記の二つのクエリを紐付けし、更新できるようになりました。 今までは上記でなんら問題なかったのですが、今回は更新データが2つ来ることになりました。 一つは他社利用だった新規のお客様のデータ、もうひとつは自社利用中のコース変更のお客様のデータです。 上記二つのデータはほぼ同じなのですが、新規データの方が項目が何個か多いのです。 毎回毎回自社利用のデータをコピペで新規お客様データに張り付ければ問題ないのですが、毎週の事で手間に思い、もうひとつ上記と同じようにテーブルを少し変えたもので更新クエリを組みました。 そうするとやはり、他社更新→自社更新、自社更新→他社更新どちらの順序で更新しても先に更新した方のデータが空白になってしまいます。 他社、自社共に更新する対象ものは同じものなので当然ですよね。。。 なので今回はテーブルにはったデータのみを更新するという方法をお伺いしたいです。 お前ばかだなあ、こういう方法もあるよって方も是非教えてください!! 分かりにくかったら本当に申し訳ありません。 ご教授の程何卒宜しくお願い致します。

みんなの回答

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.7

>そうするとやはり、他社更新→自社更新、自社更新→他社更新どちらの順序で更新しても先に更新した方のデータが空白になってしまいます。 よくよく見たら、「先に更新した方」が空白になるんですね。 後で更新した方で空白を上書きしているものかと思ってました。 メインテーブルの更新するフィールドをAとした場合、 新規客データとコース変更客データのAには空白はあるのでしょうか? 空白があるのであれば、Aを空白で上書きしてるのでしょう。 空白が無いのであれば、そもそも更新クエリが間違っているんだと思います。 サンプルでよいので、SQLを貼り付けて頂くと原因がわかると思いますよ。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.6

テーブルAとBで顧客が重複してないのなら、更新クエリAを実行した後に更新クエリBを実行したとしても、上書きされることは無いはずですが。。

dream_actress
質問者

補足

それがされてしまうから困っているんですよね… ご尽力いただきありがとうございました!

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.5

クエリだとこんな感じです。

dream_actress
質問者

補足

詳しく画像まで乗せて頂いてありがとうございます。 支払方法は変動するのですが、 これだと「コンビニ支払」が更新されたのち 「クレジット払い」に変更されても更新されますでしょうか。 なおかつ、更新データAとBにどう顧客番号のお客様はいらっしゃいません。 どちらかにしかいらっしゃいません。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.4

度々すみません。 画像が小さすぎたのでもう一度。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.3

画像が小さくて分かりづらいかもしれませんが、とりあえず更新するフィールドの条件に「Is Not Null」を指定して更新してみてください。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.2

以下の図のようなイメージを持っているのですが。。 この場合、更新クエリAでテーブルAが更新され、更新クエリBでテーブルBが更新される。。という認識だったのですが、逆にメインテーブルの方を更新してるってことでしょうか?(だから二つ目の更新クエリで上書きされるって意味?)

dream_actress
質問者

補足

上記図のおっしゃる通りで御座います。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

この質問内容だとちょっと分かり辛いと思います。。 人のこと言えたものではありませんが(笑 その「今回は更新データが2つ来ることになりました。」っていうのは 例えば、一つ目の更新データは、  ID フィールドA フィールドB フィールドC フィールドD 二つ目の更新データは  ID フィールドB フィールドD フィールドE フィールドF みたいな感じで、共通するものもあるし、それぞれで持ってるフィールド があるってことでよろしいでしょうか。 で、これらをコピペして  ID フィールドA フィールドB フィールドC フィールドD フィールドE フィールドF って感じにしてるってことでしょうか。 ※要するに両データのフィールドを揃える感じ。 >もうひとつ上記と同じようにテーブルを少し変えたもので更新クエリを組みました。 >そうするとやはり、他社更新→自社更新、自社更新→他社更新どちらの順序で更新しても先に更新した方のデータが>空白になってしまいます。 >他社、自社共に更新する対象ものは同じものなので当然ですよね。。。 ここの意味が分かりません。

dream_actress
質問者

補足

回答ありがとうございます。 >要するに両データのフィールドを揃える感じ。 そういった認識で大丈夫です。 >もうひとつ上記と同じようにテーブルを少し変えたもので更新クエリを組みました。 2つ来る更新データを別物とあつかい、それぞれに対応するテーブルを作り、それぞれの更新クエリを作成致しました。 >そうするとやはり、他社更新→自社更新、自社更新→他社更新どちらの順序で更新しても先に更新した方のデータが>空白になってしまいます。 >他社、自社共に更新する対象ものは同じものなので当然ですよね。。。 これはもう当たり前のことだったので簡略に書いてしまいました、申し訳ありません。 一つ目の更新クエリを実行すると更新したいものを反映させますよね。 その後二つ目のクエリを実行するとこれもまた反映してくれるのですが 一度目に更新した分のデータは二つ目の更新クエリに使っているテーブルにはデータがない為 空で更新されてしまいますよね。 上記の質問文を簡潔に申し上げますと更新クエリで、テーブルに貼ったものだけのデータを更新する方法を教えてください。 2つある更新クエリはそれぞれ更新する対象のフィールドが同じの為 二つ目を更新するとどうしても一つ目に更新したデータが空白で上書きされてしまうのです。 分かりにくくて申し訳ございませんでした。

関連するQ&A

専門家に質問してみよう