Access2016:クエリ実行時に合計値が正しいものとそうでないものがある/印刷プレビューができるデータとできないデータがある

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,542

th_bridge

score 13

【元の一連の流れ】
①メインフォームのみのフォームから請求データを入力
②入力された請求データは2つのテーブルに入る
③フィールド「請求月」または「取引先コード」で検索フォームから検索
④2つのテーブルから請求データを抽出するクエリを作成・実行
⑤抽出結果をフォームで一覧表示
⑥一覧から任意のデータをレポートとして出力(印刷プレビュー)

上記が問題なく実行されるオブジェクトをそれぞれ作成しました。

一覧表示する際は、請求データのフィールドのひとつである、請求No.をキーにしています。

フォームから請求データを入力する際、請求No.に対してひとつの請求内容を
入力する仕様となっていたのですが、これを請求No.に対して複数の請求内容を
一度に入力できるように、メインフォームとサブフォームがある入力フォームに変更することになりました。

当然、入力フォーム以外のオブジェクトにも修正が必要になったのですが、
修正後、不具合が発生し困っています。

【修正後の一連の流れ】
①メインフォームとサブフォームのあるフォームから請求データを入力
②入力された請求データは3つのテーブルに入る
③フィールド「請求月」または「取引先コード」で検索フォームから検索
④3つのテーブルから請求データを抽出するクエリを作成・実行
⑤抽出結果をフォームで一覧表示
⑥一覧から任意のデータをレポートとして出力(印刷プレビュー)


【発生した問題】
1.クエリを実行した際、請求No.でグルーブ化した合計額が正しいものとそうでないものがある
(正しい値の2倍、3倍になっている)
2.レポート(印刷プレビュー)を実行した際、正しく出力されるデータとされないデータがある
(実行時エラー2427 指定した式には値がありません。と表示)


順を追ってまずはクエリ実行時の不具合から解消したいと思います。
元の流れで組んでいたクエリと、修正後のクエリの画像を添付いたします。

アドバイスいただくにあたり必要な情報は追加いたします。
大変ご面倒かとは思いますがお力添えいただけますでしょうか。

よろしくお願いいたします。

画像1:正しい値が取得できていたクエリ
イメージ説明

画像2:正しかったり、合計値が2倍3倍になってしまうクエリ
イメージ説明

画像3:上記クエリ実行時のデータシート
イメージ説明

画像4:対象データの実際のテーブル内の内容
イメージ説明

請求No.17113001だけ正しく小計の合計が抽出できているが、他は2倍、3倍になっている

<追記>
17113001は、改修後の入力フォーム(サブフォームあり)、
2倍、3倍になっているものは、改修前のフォームで入力しました。
テーブルを見ると17113001はデータの数がひとつ、
他のデータは同一の請求No.のレコードが複数あります。
請求No.を重複してカウントしてしまって、その分、倍数の値が表示されているのでしょうか。

画像5:対象のテーブルデータ
イメージ説明

<追記2>
重複していた請求NO.のレコードを削除してひとつにしたところ、正しい値になりました。
続いて問題の2なのですが、画像のフォームの表示ボタンをクリックすることで、
該当の請求データのレポート(請求書の印刷プレビュー)が表示される仕様になっています。
全件表示をクリックすると表示されているデータすべて(この場合4件)のプレビューが表示されます。

現状、17113001以外は正しくプレビューの表示がされますが、17113001だけエラーとなります。
(実行時エラー2427 指定した式には値がありません。と表示)
問題として何が考えられますでしょうか。

画像6:一覧フォーム画面
イメージ説明

画面7:請求No.17013115の「表示」を実行して表示される印刷プレビュー
イメージ説明

画像8:請求No.17113001の「表示」を実行して表示されるエラーメッセージ
イメージ説明

画像9;上記メッセージの「デバック」で表示される内容
イメージ説明

同じ条件で抽出した結果なのですが、表示(印刷プレビュー)を実行すると、
このように一方は正しく、一方はエラーとなってしまいます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • coco_bauer

    2017/06/07 15:28

    請求書の合計項目数と、請求内容テーブルの件数は一致していますか? 一致しているなら集計作業に問題、一致していないなら入力作業に問題がありますから、最初に確認すべきだと思います。

    キャンセル

  • th_bridge

    2017/06/08 10:51

    ご回答ありがとうございます。請求書に表示される合計項目数と請求内容テーブルの件数は一致していました。17113001の集計の問題を考えてみます。

    キャンセル

回答 2

check解決した方法

0

テーブル内のデータとリレーションを整理しました。

テストデータということで、本来は入力すべき欄を空欄にしている欄などがあったので、
テーブルデータをエクスポート>修正>インポートの後、
再度リレーションシップを組み直して実行したところ、それぞれ希望通り出力されました。

ご対応いただきありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こちらの質問でhatena19さんが指摘していますが、テーブルの設計を見直していただいた方がいいかもしれません。

単純に考えればこれだけのテーブルとリレーションシップで請求書のメイン部分とその詳細、取引先との紐付はできるはずです。
イメージ説明イメージ説明
データ型やフィールド名は一例です

計算して出る内容や組み合わせて出る内容はクエリに任せます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/08 10:49

    ご丁寧に例を挙げていただいてありがとうございます。
    参考にさせていただきます。

    キャンセル

  • 2017/06/08 11:06

    質問に提示されている「画像2」を見ると、請求書テーブルのIDと請求内容テーブルのIDがそれぞれ主キー(ダブりなしの値)に設定されていて、かつそれが紐づいているので「一対多」の関係が持てないのではないでしょうか。

    それぞれのテーブルにどんなフィールドが必要か、それがどうつながっていくのか(リレーションシップ)、フォームやレポートに表示するときにどう組み合わせるのかを整理してみてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • Accessに関する質問
  • Access2016:クエリ実行時に合計値が正しいものとそうでないものがある/印刷プレビューができるデータとできないデータがある