- ベストアンサー
Accessクエリのレコードセット更新エラー
- Accessでクエリを作成し、クエリ2を更新しようとすると「このレコードセットは更新できません」というエラーが表示されます。クエリ1の請求金額合計を除くと更新はできますが、1顧客に対して通算の請求金額を表示・更新したいため、解決策を求めています。
- Accessのクエリにおいて、クエリ2を更新しようとすると「このレコードセットは更新できません」というエラーメッセージが表示されます。クエリ1の請求金額合計を除くと更新はできますが、1顧客に対して通算の請求金額を表示・更新したいため、解決法を探しています。
- Accessで作成したクエリ2を更新するとき、「このレコードセットは更新できません」というエラーメッセージが表示されます。クエリ1の請求金額合計を除くと更新できますが、1顧客に対しての請求金額を表示・更新したいため、解決方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 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://okwave.jp/qa/q6442713.html
その他の回答 (2)
- DexMachina
- ベストアンサー率73% (1287/1744)
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の添付画像の通り)。 お詫びの上、訂正させていただきます。
集計したクエリを更新データに結合しているから無理だと思います。 テーブル1とテーブル2を結んで、顧客IDを重複表示する(請求金額は合計しない)か、 クエリ1をテーブル3として作成してからテーブル1とテーブル3を結びましょう。 考えてみるとわかると思いますが 請求金額を更新した場合、 どの元データを更新すれば良いのか判断できませんよね。 だから項目に請求金額を含むと更新できません。 クエリ1も更新できないですよね。 リレーションシップ(顧客ID同士を結ぶ)を使えば、重複データの片方を更新しても全てのレコードが更新されます。
お礼
ありがとうございます。 Accessでは実現できないのでしょうか・・・
お礼
ご連絡遅くなり申し訳ありません。 おかげさまで問題なく動きました。 ありがとうございます。
補足
ご回答ありがとうございます。 上記を参考に入力したのですが、 パラメーターの入力 顧客ID と表示されてしまいます。 顧客ID毎に基本情報と請求金額の合計が出て、基本情報の編集ができるクエリを作りたいのですが・・・ お手数おかけして申し訳ございませんが、ご教授頂けないでしょうか。