アクセス2003の表形式サブレポートで契約種別がNullの場合に#エラーが表示される問題について

このQ&Aのポイント
  • アクセス2003の表形式サブレポートのレポートフッターに非連結のテキストボックスを作成し、そのコントロールソースに「=Sum(IIf([契約種別]='1',[分配粗利],IIf([契約種別]='',0)))」と入力しています。契約種別が「1」の場合は正しく結果が表示されますが、契約種別がNullの場合には#エラーが表示されます。
  • 契約種別がNullの場合に#エラーが表示される問題について、アクセス2003の表形式サブレポートでレポートフッターに非連結のテキストボックスを作成し、コントロールソースに「=Sum(IIf([契約種別]='1',[分配粗利],IIf([契約種別]='',0)))」と入力しています。契約種別が「1」の場合は正しい結果が表示されますが、契約種別がNullの場合には#エラーが表示されます。
  • アクセス2003の表形式サブレポートのレポートフッターに非連結のテキストボックスを作成し、コントロールソースに「=Sum(IIf([契約種別]='1',[分配粗利],IIf([契約種別]='',0)))」と入力しています。契約種別が「1」の場合は結果が正しく表示されますが、契約種別がNullの場合には#エラーが表示されます。契約種別がNullの場合には0と表示したい場合はどのようにすればよいでしょうか。
回答を見る
  • ベストアンサー

アクセス2003 #エラーの非表示

昨日質問させていただきましたが、再度投稿致します。 表形式サブレポートのレポートフッターに非連結のテキストボックスを作成しています。 そのコントロールソースには =Sum(IIf([契約種別]="1",[分配粗利],IIf([契約種別]="",0)))  ← 少し作り変えました と入力していて[契約種別]="1"の時は結果は正しく表示されます。 ただ、[契約種別]がNullの場合、#エラーと表示されます。 [契約種別]がNullの時は、表形式レポートに何も表示されていないからだと思うのですが。。。 [契約種別]="1"の時は、[分配粗利]の合計を表示し、結果をメインレポートに表示させたいのです。 [契約種別]がNullの場合は0と表示し、結果をメインレポートに表示させたいのです。 ご教授をお願い致します。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

Option Compare Database Dim 分配粗利合計 As Currency Dim 分配粗利総計 As Currency Private Sub Report_Open(Cancel As Integer) End Sub Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer)   Me.ラベル20.Caption = 分配粗利合計 End Sub Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer)   分配粗利合計 = 0 End Sub Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)   Me.ラベル16.Caption = 分配粗利総計 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) On Error Resume Next   分配粗利合計 = 分配粗利合計 + Nz([分配粗利])   分配粗利総計 = 分配粗利総計 + Nz([分配粗利]) End Sub 図を参照してください。 各グループフッターとレポートフッターに合計値を表示しています。 [詳細]部で集計してラベルキャプションを書き換えています。 ですから、#エラーは発生しません。 もちろん、[詳細]部のエラートラップは必要ですよ。 なお、[契約種別]が空のグループは通常は発生しないように仕掛けます。

akumaou
質問者

お礼

試行錯誤して何とか思っているように出来ました。 丁寧にご指導いただきありがとうございました。

その他の回答 (5)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

的外れならごめん 体験での事ですが、 1.集計対象の中に数値以外があるときはSUM()関数はエラーになる 2.レポートを開いてからでは、フィールド間の演算(金額=数量×単価)が無効 3.数値ボックスに空白は送れない(金額=""はエラー) 添付図のように、クエリーで処理します SELECT 契約No.,契約種別,契約明細.ID,分配粗利, IIf([契約種別]="1",[分配粗利],0) AS 分配粗利確定 FROM T契約 INNER JOIN 契約明細 ON T契約.[ID] = [契約ID];

akumaou
質問者

お礼

アドバイスありがとうございます。

回答No.5

補足:最後に! [契約種別]に[分配粗利]とだけを配置したレポートを作ってみて下さい。 普通に作ったら、完全なノーデータの時以外はエラーがでないと思います。 このテストを通じて現状の問題が判明すると思います。 なお、完全なノーデータの時は、「表示するデータはありません」を告示。 レポートは閉じるのが一般的なやり方。 でも、今回は、そうではなくて別のケースの様子。 それは、[契約種別]に[分配粗利]とだけを配置したレポートで明るみに。

akumaou
質問者

お礼

返事が遅くなり申し訳ありません。 おっしゃるように[契約種別]と[分配粗利]だけを配置したレポートを作ってみました。 [契約種別]="1"の時はデータは表示されます。 [契約種別]に入力がないとき(契約がないとき)は、データは表示されません。 その場合は、レポートフッターのテキストボックスの =Sum(IIf([契約種別]="1",[分配粗利],IIf([契約種別]="",0)))  は#エラーになります。 何度もすみません。

回答No.3

>[詳細]部で集計してもノーデータの場合はやはりエラーになります。 それは、織り込み済みです。そして、それはエラートラップで回避できると思いますよ。

回答No.2

補足:式そのものを書かない手もありますが・・・。 Option Compare Database Dim 分配粗利合計 As Currency Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)   Me.ラベル16.Caption = 分配粗利合計 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) On Error Resume Next   分配粗利合計 = 分配粗利合計 + IIf([契約種別] = "1", [分配粗利], 0) End Sub レポートの[詳細]部で集計してレポートフッターで表示。 このようにすれば、非参照ですからエラーはでません。 が、そもそもノーデータの場合にも合計欄が表示される仕掛け自体が問題では? そんな気がします。

akumaou
質問者

補足

>レポートの[詳細]部で集計してレポートフッターで表示。 >このようにすれば、非参照ですからエラーはでません。 [詳細]部で集計してもノーデータの場合はやはりエラーになります。 >が、そもそもノーデータの場合にも合計欄が表示される仕掛>け自体が問題では? そうなのですね。 [契約種別]でグループ設定をしています。 各グループごとに[分配粗利]の合計を出したかったのです。 アドバイスありがとうございます。

回答No.1

もう少し、具体的に!図を添付しています。 >表形式レポートに何も表示されていないからだと思うのですが・・・。 もちろん、ノーデータの場合はエラーが発生します。 その場合、式が参照不能だからです。 Private Sub Report_NoData(Cancel As Integer)   Me.レポートフッター.Controls(0).Visible = False End Sub 対策としては、非表示にするか、あるいは式をクリアするか・・・。

akumaou
質問者

お礼

>もちろん、ノーデータの場合はエラーが発生します。 >その場合、式が参照不能だからです。 そうなのですね。 このエラーが回避できない限りは難しいのですね。。 >Private Sub Report_NoData(Cancel As Integer) >  Me.レポートフッター.Controls(0).Visible = False >End Sub を入れても#エラーのままです。 アドバイスありがとうございます。

関連するQ&A

  • アクセス2003 #エラーの非表示

    表形式サブレポートのレポートフッターに非連結のテキストボックスを作成しています。 そのコントロールソースには =Sum(IIf([契約種別]="1",[分配粗利],0)) と入力していて結果は正しく表示されます。 ただ、[契約種別]がNullの場合、#エラーと表示されます。 [契約種別]がNullの場合は0と表示し、結果をメインレポートに表示させたいのです。 ISERRORやNzなどで試してみましたが上手くいきません。 ご教授をお願い致します。

  • access #error 表示について

    ABCという3つのクエリを利用してレポートを作成しています。 Aはメイン。あとのBCをサブレポートとしていて、 そのサブレポートのデータをメインで参照表示させていますが、 データがないものは#errorと表示されます。 データがあれば正しく表示されます。 これはせめて印刷のときだけでも表示されないようにすることは 出来ないでしょうか? よろしくお願いします。

  • ACCESS サブレポートの参照について

    ACCESS2003を使用しています。 メインレポートのページフッターにテキストボックスを配置して、サブレポートの小計を参照して表示しています。 しかしサブレポートにデータがない時があり、【#エラー】という表示になってしまいます。 そこで、サブレポートにデータがない時は、【0】という表示にしたいのですが、どういった方法があるか、教えてください。 よろしくお願いします。

  • ACCESS2000レポートを一定の行数で改頁

    ACCESS2000を使っています。 メインレポートの詳細部にサブレポートがあり、サブレポートの詳細部を 決まった行数で印刷したいのですが、いい方法はありませんか? 今は、メインレポートのページヘッダ・フッタの高さの調整で対処しています。 よろしくお願いします ┌----------------------┐ |メインレポート ページヘッダ        | ├----------------------┤ |メインレポート 詳細部           | |┌--------------------┐|  ||サブレポート グループヘッダ      ||  |├--------------------┤| ||サブレポート◇詳細部     (1行目)||┐ ||               (2行目)||├この行数を ||               (・・・)|||固定にしたい ||               (9行目)|||例では10行 ||              (10行目)||┘ |├--------------------┤| ||サブレポート グループフッタ      || |└--------------------┘| ├----------------------┤ |メインレポート ページフッタ        | └----------------------┘

  • Access サブレポートデータ0件時 表示する

    Access サブレポートデータ0件時 表示する メインレポート内にサブレポートをいくつか配置し、表示・非表示をコントロールしております。 OS:Windows10 Access:Office365 フォーム F_MAIN ボタン bt_pop ポップアップフォーム F_POP ボタン bt_print メインレポート A (リンク親フィールド:ID_NO) サブレポート B~G (リンク子フィールド:ID_NO)・・・普段は非表示、帳票形式 「流れ」 F_MAIN上のボタンbt_popをクリックするとF_POPフォームがポップアップで開き、 印刷表示したいサブレポートB~Gのチェックボックスをクリックして、 ボタンbt_printをクリックすると、レポートAをプレビューする。 「質問」 チェックしたサブレポートを表示可能にした際、サブレポートのソースオブジェクト のソースデータが1件以上の時には表示されるのですが、 0件の場合にはサブレポート自体は表示可能にしているのですが、 ソースオブジェクト上のレポートヘッダーやフッターなども全て非表示となり、 何も表示されません。 この場合、0件でも表示することは可能でしょうか。 空データ時でのイベントでコントロースするなどの情報は見たのですが、 非表示にする方法しかありません。 お力をお貸しください。

  • Accessメインレポート非表示

    Access初心者です。 サブレポートにリンクされたメインレポートがあります。 サブレポートに表示するレコードが無い場合は、メインレポートのレコードも非表示にし、印刷対象外にしたいのですが、可能なのでしょか? 方法があれば教えて下さい。 よろしくお願い致します。

  • Accessのサブレポートのページ数の調べ方

     Accessのレポートにおいて、サブレポートの行数が多くてメインレポートが複数ページなる場合、最終ページ以外で「続く」などのメッセージを表示させる方法を教えてください。  サブレポートで集計を行います。サブレポートが複数ページになる場合、最終ページに集計結果を表示します。その集計結果は、ページの決まったところに表示します。その際、最終ページ以外では、集計結果を表示すべきところに、「続く」と表示させたいのです。その方法がわかりません。  メインレポートが複数ページにわたり、メインレポートの1レコードに対し、サブレポートが複数ページになる場合です。

  • アクセス2000のレポート上での計算

    アクセス2000のレポート上での計算 いま、レポートでメインにサブレポートをIDでリンクして貼り付けています。 メインとは別の入力フォームで入力し、クリエで集計した結果をメインレポートで表示はされています。 その、サブレポートで貼り付けた集計結果をメインレポートの集計結果に加算したい。 いま、メインに経費総合計というコントロールが非連結であります。 そこに、=sum([経費]+[労務費集計サブレポート].[Reports]![労務費計]という式をいれましたが、エラーになってしまいます。 同じようなことを、フォームでやっていますが、フォームではできるのにレポートではできないのはなぜでしょうか? 教えてください。お願いします。;_;

  • Access レポートフッターを条件により内容を分岐させたいのですが…

    閲覧いただきありがとうございます。 Access2003で出納簿を作成しておりますがよいアイデアがあれば教えて下さい。 レポートフッター制御なのですが、以下のデザインを使います。 ------------------------------------- レポートフッター ------------------------------------- 月計   収入  支出  差引残高 累計   収入  支出  差引残高 サブレポート--------------------------          コメントA -------------------------------------- 上記のように、レポートフッターに出納簿の月計と累計を表示させ、 サブレポートを埋め込み、VBAで「コメントA」を書換えたいと思います。 なお、サブレポートは特定の条件の時にのみ表示させたいと思います。 しかしながら、このままだと、サブレポートの終わりまで常に、 大きめに印刷範囲に設定されてしまい、複数のページにまたがりやすく なってしまいます。 (前頁に月計と累計を表示できるのに、サブレポート枠まで印刷範囲 とされてしまうからだと思います。) そこで、私はサブレポートが必要でない場合には、 VBAでサブレポートの高さを0にし、レポートフッターの高さも 小さくすることで、レポートフッターの印刷範囲を小さめに制御し、 前頁になるべくおさめるようにチャレンジしておりますが、 もっと簡単に他の方法がございましたら、ご教授頂ければと思います。 よろしくお願い致します。

  • Access レポートでNull値を含む足し算

    いつも、お世話になっています。 Win7 & Access2013 メインレポートとサブレポートがあり、メインレポートに代表者の [費用] があり、 サブレポートに同行者の [費用] があって、同行者の [費用] 合計はフッター下に コントロールを配して =Sum([費用]) としています。 このサブレポートの[費用合計]とメインレポートの代表者の[費用]合計をするのに コントロールをメインレポートに配して =[サブレポート名].[Report]![コントロール名]+[メインレポート費用] とすると、サブレポートに同行者の費用がある場合は計算されるのですが、 同行者の費用が無い場合は、#Size! また、色々 Nzなどでやった場合は #Type! などのエラーメッセージが出て、どおしても出来ません。 ご存知の方がいらっしゃいましたら、お教えいただきたいと思います。 よろしくお願いいたします。

専門家に質問してみよう