質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

14605閲覧

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

th_bridge

総合スコア15

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2017/06/07 03:55

編集2017/06/08 09:03

【元の一連の流れ】
①メインフォームのみのフォームから請求データを入力
②入力された請求データは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;上記メッセージの「デバック」で表示される内容
イメージ説明

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/06/07 06:28

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

2017/06/08 01:51

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

回答2

0

自己解決

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

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

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

投稿2017/06/14 02:12

th_bridge

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2017/06/07 05:28

dit.

総合スコア3235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

th_bridge

2017/06/08 01:49

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

2017/06/08 02:06

質問に提示されている「画像2」を見ると、請求書テーブルのIDと請求内容テーブルのIDがそれぞれ主キー(ダブりなしの値)に設定されていて、かつそれが紐づいているので「一対多」の関係が持てないのではないでしょうか。 それぞれのテーブルにどんなフィールドが必要か、それがどうつながっていくのか(リレーションシップ)、フォームやレポートに表示するときにどう組み合わせるのかを整理してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問