【元の一連の流れ】
①メインフォームのみのフォームから請求データを入力
②入力された請求データは2つのテーブルに入る
③フィールド「請求月」または「取引先コード」で検索フォームから検索
④2つのテーブルから請求データを抽出するクエリを作成・実行
⑤抽出結果をフォームで一覧表示
⑥一覧から任意のデータをレポートとして出力(印刷プレビュー)
上記が問題なく実行されるオブジェクトをそれぞれ作成しました。
一覧表示する際は、請求データのフィールドのひとつである、請求No.をキーにしています。
フォームから請求データを入力する際、請求No.に対してひとつの請求内容を
入力する仕様となっていたのですが、これを請求No.に対して複数の請求内容を
一度に入力できるように、メインフォームとサブフォームがある入力フォームに変更することになりました。
当然、入力フォーム以外のオブジェクトにも修正が必要になったのですが、
修正後、不具合が発生し困っています。
【修正後の一連の流れ】
①メインフォームとサブフォームのあるフォームから請求データを入力
②入力された請求データは3つのテーブルに入る
③フィールド「請求月」または「取引先コード」で検索フォームから検索
④3つのテーブルから請求データを抽出するクエリを作成・実行
⑤抽出結果をフォームで一覧表示
⑥一覧から任意のデータをレポートとして出力(印刷プレビュー)
【発生した問題】
1.クエリを実行した際、請求No.でグルーブ化した合計額が正しいものとそうでないものがある
(正しい値の2倍、3倍になっている)
2.レポート(印刷プレビュー)を実行した際、正しく出力されるデータとされないデータがある
(実行時エラー2427 指定した式には値がありません。と表示)
順を追ってまずはクエリ実行時の不具合から解消したいと思います。
元の流れで組んでいたクエリと、修正後のクエリの画像を添付いたします。
アドバイスいただくにあたり必要な情報は追加いたします。
大変ご面倒かとは思いますがお力添えいただけますでしょうか。
よろしくお願いいたします。
請求No.17113001だけ正しく小計の合計が抽出できているが、他は2倍、3倍になっている
<追記>
17113001は、改修後の入力フォーム(サブフォームあり)、
2倍、3倍になっているものは、改修前のフォームで入力しました。
テーブルを見ると17113001はデータの数がひとつ、
他のデータは同一の請求No.のレコードが複数あります。
請求No.を重複してカウントしてしまって、その分、倍数の値が表示されているのでしょうか。
<追記2>
重複していた請求NO.のレコードを削除してひとつにしたところ、正しい値になりました。
続いて問題の2なのですが、画像のフォームの表示ボタンをクリックすることで、
該当の請求データのレポート(請求書の印刷プレビュー)が表示される仕様になっています。
全件表示をクリックすると表示されているデータすべて(この場合4件)のプレビューが表示されます。
現状、17113001以外は正しくプレビューの表示がされますが、17113001だけエラーとなります。
(実行時エラー2427 指定した式には値がありません。と表示)
問題として何が考えられますでしょうか。
画面7:請求No.17013115の「表示」を実行して表示される印刷プレビュー
画像8:請求No.17113001の「表示」を実行して表示されるエラーメッセージ
同じ条件で抽出した結果なのですが、表示(印刷プレビュー)を実行すると、
このように一方は正しく、一方はエラーとなってしまいます。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
テーブル内のデータとリレーションを整理しました。
テストデータということで、本来は入力すべき欄を空欄にしている欄などがあったので、
テーブルデータをエクスポート>修正>インポートの後、
再度リレーションシップを組み直して実行したところ、それぞれ希望通り出力されました。
ご対応いただきありがとうございました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
こちらの質問でhatena19さんが指摘していますが、テーブルの設計を見直していただいた方がいいかもしれません。
単純に考えればこれだけのテーブルとリレーションシップで請求書のメイン部分とその詳細、取引先との紐付はできるはずです。
データ型やフィールド名は一例です
計算して出る内容や組み合わせて出る内容はクエリに任せます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
coco_bauer
2017/06/07 15:28
請求書の合計項目数と、請求内容テーブルの件数は一致していますか? 一致しているなら集計作業に問題、一致していないなら入力作業に問題がありますから、最初に確認すべきだと思います。
th_bridge
2017/06/08 10:51
ご回答ありがとうございます。請求書に表示される合計項目数と請求内容テーブルの件数は一致していました。17113001の集計の問題を考えてみます。