質問: 【元の一連の流れ】 1メインフォームのみのフォームから請求データを入力 2入力された請求データは2つのテーブルに入る 3フィールド「請求月」または「取引先コード」で検索フォームから検索 42つのテーブルから請求データを抽出するクエリを作成・実行 5抽出結果をフォームで一覧表示 6一覧から任意のデータをレポートとして出力(印刷プレビュー) 上記が問題なく実行されるオブジェクトをそれぞれ作成しました。 一覧表示する際は、請求データのフィールドのひとつである、請求No.をキーにしています。 フォームから請求データを入力する際、請求No.に対してひとつの請求内容を 入力する仕様となっていたのですが、これを請求No.に対して複数の請求内容を 一度に入力できるように、メインフォームとサブフォームがある入力フォームに変更することになりました。 当然、入力フォーム以外のオブジェクトにも修正が必要になったのですが、 修正後、不具合が発生し困っています。 【修正後の一連の流れ】 1メインフォームとサブフォームのあるフォームから請求データを入力 2入力された請求データは3つのテーブルに入る 3フィールド「請求月」または「取引先コード」で検索フォームから検索 43つのテーブルから請求データを抽出するクエリを作成・実行 5抽出結果をフォームで一覧表示 6一覧から任意のデータをレポートとして出力(印刷プレビュー) --- 【発生した問題】 1.クエリを実行した際、請求No.でグルーブ化した合計額が正しいものとそうでないものがある (正しい値の2倍、3倍になっている) 2.レポート(印刷プレビュー)を実行した際、正しく出力されるデータとされないデータがある (実行時エラー2427 指定した式には値がありません。と表示) --- 順を追ってまずはクエリ実行時の不具合から解消したいと思います。 元の流れで組んでいたクエリと、修正後のクエリの画像を添付いたします。 アドバイスいただくにあたり必要な情報は追加いたします。 大変ご面倒かとは思いますがお力添えいただけますでしょうか。 よろしくお願いいたします。 画像1:正しい値が取得できていたクエリ ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/866853a753eb07639f8d492da4aa1494.png) 画像2:正しかったり、合計値が2倍3倍になってしまうクエリ ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/21561501fadbfde91a8cc03372d4df8e.png) 画像3:上記クエリ実行時のデータシート ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/7153efbd654321d1785a5cb618bf6669.png) 画像4:対象データの実際のテーブル内の内容 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/3b402e037694e9e009848cb4df13b57f.png) 請求No.17113001だけ正しく小計の合計が抽出できているが、他は2倍、3倍になっている <追記> 17113001は、改修後の入力フォーム(サブフォームあり)、 2倍、3倍になっているものは、改修前のフォームで入力しました。 テーブルを見ると17113001はデータの数がひとつ、 他のデータは同一の請求No.のレコードが複数あります。 請求No.を重複してカウントしてしまって、その分、倍数の値が表示されているのでしょうか。 画像5:対象のテーブルデータ ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/a8c9109a2ba5f288ca185a9dd9f8cdc0.png) <追記2> **重複していた請求NO.のレコードを削除してひとつにしたところ、正しい値になりました。** 続いて問題の2なのですが、画像のフォームの表示ボタンをクリックすることで、 該当の請求データのレポート(請求書の印刷プレビュー)が表示される仕様になっています。 全件表示をクリックすると表示されているデータすべて(この場合4件)のプレビューが表示されます。 現状、17113001以外は正しくプレビューの表示がされますが、17113001だけエラーとなります。 (実行時エラー2427 指定した式には値がありません。と表示) 問題として何が考えられますでしょうか。 画像6:一覧フォーム画面 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/e1941b550f8b1cb0fe8a40fe6e781046.png) 画面7:請求No.17013115の「表示」を実行して表示される印刷プレビュー ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/3b3bad77014d4556c21ce5d7b7cd146e.png) 画像8:請求No.17113001の「表示」を実行して表示されるエラーメッセージ ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/2553d5e208a88ffe148ac1a6d00f02e5.png) 画像9;上記メッセージの「デバック」で表示される内容 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8842715a5660fb6a473e9db6dd9e65b3.png) 同じ条件で抽出した結果なのですが、表示(印刷プレビュー)を実行すると、 このように一方は正しく、一方はエラーとなってしまいます。
回答: こちらの質問でhatena19さんが指摘していますが、テーブルの設計を見直していただいた方がいいかもしれません。 単純に考えればこれだけのテーブルとリレーションシップで請求書のメイン部分とその詳細、取引先との紐付はできるはずです。 !イメージ説明!イメージ説明 データ型やフィールド名は一例です 計算して出る内容や組み合わせて出る内容はクエリに任せます。