アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。

■テーブル1
 ・顧客ID(主キー)
 ・顧客名
 ・住所
 ・TEL

■テーブル2
 ・顧客ID
 ・取引ID(主キー)
 ・請求金額

■クエリ1(集計クエリ)
 ・顧客ID グループ
 ・請求金額合計: Sum(請求金額) 合計

■クエリ2(実際に使用するクエリ)
 ・顧客ID(テーブル1)
 ・顧客名(テーブル1)
 ・住所(テーブル1)
 ・TEL(テーブル1)
 ・請求金額合計(クエリ1)

このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。

・請求金額合計(クエリ1)を除けば問題なく更新できます。

ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。

どなかた良い方法をご教授下さいませ。

A 回答 (3件)

集計したクエリを更新データに結合しているから無理だと思います。


テーブル1とテーブル2を結んで、顧客IDを重複表示する(請求金額は合計しない)か、
クエリ1をテーブル3として作成してからテーブル1とテーブル3を結びましょう。
考えてみるとわかると思いますが
請求金額を更新した場合、
どの元データを更新すれば良いのか判断できませんよね。
だから項目に請求金額を含むと更新できません。
クエリ1も更新できないですよね。
リレーションシップ(顧客ID同士を結ぶ)を使えば、重複データの片方を更新しても全てのレコードが更新されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

Accessでは実現できないのでしょうか・・・

お礼日時:2012/02/16 11:31

> 1顧客に対して通算で幾ら請求をしたかとその顧客のデータを


> 同一クエリで表示・更新したい

「『請求合計金額』は参照のみ、それ以外は更新可」ということ
でしたら、『請求合計金額』を、「定義域集計関数を使用した
演算フィールド」としてしまう、というのはいかがでしょうか。
これであれば、クエリ1を使用する場合に比べ、動作が遅くは
なりますが、テーブル1の各フィールドの編集は可能になります。

■クエリ2
 ※使用するのはテーブル1のみ、クエリ1は使用せず※
 ・顧客ID(テーブル1)
 ・顧客名(テーブル1)
 ・住所(テーブル1)
 ・TEL(テーブル1)
 ・請求金額合計(以下の式を指定)
  『フィールド:』欄:DSum("請求金額", "テーブル2", "[顧客ID]=" & [顧客ID])
  『テーブル:』欄: (空白にします)

注意:
万が一、顧客IDのデータ型が数値型ではなくテキスト型だった場合は、
以下の式としてください:
  『フィールド:』欄:DSum("[請求金額]", "テーブル2", "[顧客ID]='" & [顧客ID] & "'")

上記の「DSum」などの「定義域集計関数」の詳細については、
Accessのヘルプを参照してください。

なお、同関数の第3引数については、以下の過去のQ&Aを
参考として挙げておきます(No.4):
http://oshiete.goo.ne.jp/qa/6442713.html
「Access クエリ このレコードセット」の回答画像2

この回答への補足

ご回答ありがとうございます。

上記を参考に入力したのですが、

パラメーターの入力
顧客ID

と表示されてしまいます。

顧客ID毎に基本情報と請求金額の合計が出て、基本情報の編集ができるクエリを作りたいのですが・・・

お手数おかけして申し訳ございませんが、ご教授頂けないでしょうか。

補足日時:2012/02/16 11:38
    • good
    • 0
この回答へのお礼

ご連絡遅くなり申し訳ありません。

おかげさまで問題なく動きました。

ありがとうございます。

お礼日時:2012/02/19 22:00

No.2です。



> 上記を参考に入力したのですが、
>
> パラメーターの入力
> 顧客ID
>
> と表示されてしまいます。

これは、DSum関数の第3引数の右辺側に指定した『顧客ID』と
いう名前のフィールドが、クエリの元になっているテーブル(今回の
例では『テーブル1』テーブル)に存在しない場合に発生します。
(ちなみに、左辺側が存在しないフィールド名だった場合は、クエリ
 のデータシートビューでのエラー表示になります)

ですので、『テーブル1』の各フィールドの名前と、第3引数の右辺
のフィールド名を、もう一度確認してみてください。
第3引数の右辺に正しいフィールド名が指定されれば、ご希望の
『顧客ID毎に基本情報と請求金額の合計が出て、基本情報の
編集ができるクエリ』になるはずです。

見直す際の観点としては、
 ・『顧客』と『ID』の間などに、スペースやアンダーバーが入ったり
  していないか
 ・誤変換や誤字がないか
などになるかと思います。
(一旦、元となるテーブルをデザインビューで開いて、当該フィールド
 の名前をCopyしてから、当該クエリをデザインビューで開いて
 上記関数の右辺に貼り付け、とするのもいいかもしれません)

※もしもクエリの「SQLビュー」を使ったことがあるようでしたら、
  デザインビューで当該フィールドを追加した後、SQLビューに
  切り替え、そこに表示されたフィールド名をCopy、が最も確実。

SQLビューは、デザインビューを表示した状態で、
 ・Access2003以前なら、メニューで「表示(V)→SQL ビュー(Q)」で、
 ・Access2007なら、『デザイン』リボンの左端の『結果』内にある
  『表示』ボタンの下にある『▼』をクリックして「SQL ビュー」選択
で、表示できます。
(Access2010は使用したことがありませんが、多分2007と同様)

 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

なお、前回の回答で、本文中の式で「請求金額合計:」の記述が
漏れていました(正しくはNo.2の添付画像の通り)。
お詫びの上、訂正させていただきます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A