• ベストアンサー

クリスタルレポートで0件時の表示

おせわになっております。 ここには、初めて質問させていただきます、 よろしくおねがいします。 クリスタルレポート(VB2003付属)で帳票を作成しているのですが DBとクエリはACCESSで行い、表示のみクリスタルレポートを使用 しております。 金額の合計を表示するレポートを作成したのですが、 クアリの結果が0件(該当レコード無し)の場合 クリスタルレポートの表示が空白になってしまいます。 私としては、金額なので0円(¥0)を表示したいのですが 方法がわかりません。 どなたか、教えていただけると、ありがたいです。 よろしく、お願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

(1) IsNullを使う例 AccessではNETで使うIsDBNullと同様の 機能を持ったIsNullを使って、 IsNull([フィールド名など],[Trueのとき返す値],[Falseのとき返す値]) のようにしてNullのときに返す値を設定します。 [Falseのとき返す値]を設定するのはケースバイケース です。 たとえば、TaaaというテーブルにID、項目、金額 があり、いくつかの項目の金額がNullの場合、IIfを 併用して、 SELECT Taaa.ID, Taaa.項目, IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額]) AS 金額A FROM Taaa; のような使い方をしてNullの場合でも0を表示 するようにします。 (2) Nz関数を使う例 あるいは、合計を出すときなどにNz関数を使い、 合計が0の場合に結果セットが表示されないのを 0で表示しようと思えば、グループ化による 合計の例では、 SELECT Taaa.項目, Sum(Nz([Taaa].[金額])) AS 金額の合計 FROM Taaa GROUP BY Taaa.項目; この場合は金額が通貨型であっても\が表示されません。 あるいは、最初のSQL文をそのまま利用して、 SELECT Taaa.項目, Sum(IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額])) AS 金額A FROM Taaa GROUP BY Taaa.項目; この場合は金額が通貨型である場合は\が表示されます。 ということも出来ます。もちろんNz関数は合計以外でも 使用します。 合計の場合にクエリの結果がNullになる場合に 0としたい場合はNz関数を使用するというのが 普通のやりかたです。最後のSQL文でAS 金額A と金額のエイリアスを使っています。金額と するとデータが表示されません。 合計ですから(2)のほうですかね。 Accessのクエリの結果セットを取り出すので あればこれでいいと思うのですが。 こんなところです。何かあれば書き込みを。

gamera2950
質問者

補足

そうそうの御回等感謝しております。 ありがとうございます。 SQLは実際にやってみましたありがとうございます。 只、私が実施したいのは0件の場合です たとえば、教えていただいたSQLで SELECT [Taaa].[ID], [Taaa].[項目], IIf(IsNull([Taaa]![金額]),0,[Taaa]![金額]) AS 金額AFROM Taaa WHERE ((([Taaa].[項目])="あめ")); のようにして項目に「あめ」がなく、検索結果が0件になる場合です。 なにか良い方法あれば、教えておたでけましたら、ありがたいです。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

よく読んでいなかった v|v。 >クリスタルレポート この方の設定になるならば、 クリスタルレポートはほとんど使ったこと ないので(1,2回使ったような) 推測ですが、 WhilePrintRecords; If IsNull({クエリ.フィールド}) Then "0" Else ({クエリ.フィールド}) あるいは、 WhilePrintRecords; If Count({クエリ.フィールド}) < 1 Then "0" Else ({クエリ.フィールド}) あるいは、 WhilePrintRecords; IsNull(Count({クエリ.フィールド})) OR Count({クエリ.フィールド}) = 0 "0" Else ({クエリ.フィールド}) だったかな。"0"は0でいいのかな。 はずしていたらごめん、です。

関連するQ&A

専門家に質問してみよう