• ベストアンサー

Access レポートに合計を表示

Accessについて質問です。 もともとあるデータを使っていて、0のデータが空白となってしまいました。 そこで、クエリに|登録数: Nz([登録件数],0)|というフィールドを作り、登録件数フィールドが空白の時には0が表示されるようになっています。 そのクエリを元にレポートを作成して、登録数の合計を表示させようとしたらエラーになってしまいました。 どうしたら合計を表示させる事ができますでしょうか? NZ関数を使っているから合計がエラーになってしまうのでしょうか? NZ関数が原因の場合、その他の関数を使って表示することは可能なのでしょうか?

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.7

再掲(質問に答えていないですよ) >どこに変えたのですか? >エラーの内容は? もうひとつ、Sum関数はNullを除いて集計してくれます 合計でいいのなら Sum(登録件数) でOKです 詳細のほうもNullのときに0を表示させたいだけなら Nz関数など使わなくても書式で対応できます あるいはもっと大元のテーブルで規定値を0にしておいてもいいですね

joymei
質問者

お礼

再掲(質問に答えていないですよ) >どこに変えたのですか? >エラーの内容は? プレビュー表示にした時に「エラー#」と表示されたのみです。 素人なのでこれくらいしかわからずすみません。 前回なぜ表示されなかったのか解らないままですが、再度レポートを新規で作成したところ『Sum(登録件数)』で上手く表示されました。 ありがとうございました。

その他の回答 (6)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

>場所を変えてみましたがエラーとなってしまいます。 どこに変えたのですか? エラーの内容は? >他になにかエラーの原因となるものがわかりましたら 他によくやるミスといえば ソースのフィールド以外を集計式に使用するというやつなんですが >クエリに|登録数: Nz([登録件数],0)|というフィールドを作り とあったので登録数はソースのクエリのフィールドだと判断したのですが ひょっとしてレポート上のテキストボックスだったりして

joymei
質問者

補足

プレビュー表示にした時にエラー#となります。 一応クエリにフィールドはあります。 その「登録数: Nz([登録件数],0)」フィールドの合計をレポートに表示させたいと思います。 よろしくお願いいたします。

noname#140971
noname#140971
回答No.5

<データテーブル> ID____登録数 1_____________1 2_____________2 3_____________3 この場合、登録数を求めるのは僅か1行です。 [イミディエイト] ? DBSum("登録数", "データテーブル") 6 手順1: 下記の DBSum 関数を標準モジュールに登録する。 手順2:  [イミディエイト]ウィンドウで登録数合計を表示してみる。 手順3: レポートに表示用のテキストボックスを非連結で配置する。 手順4: 表示用テキストボックスに =DBSum("xxx", "xxxx", "xxxxx") と関数を仕組む。 DBSum(列名, 表名, 抽出条件(Where節)) 色々と面倒であれば、こういうやり方でも目的は達成できます。 Public Function DBSum(ByVal strField As String, _            ByVal strTable As String, _            Optional strWhere As String = "") As Variant On Error GoTo Err_DBSum   Dim N   Dim strQuerySQL As String   Dim rst     As ADODB.Recordset      Set rst = New ADODB.Recordset   strQuerySQL = "SELECT SUM(" & strField & ") FROM " & strTable   If Len(strWhere) > 0 Then     strQuerySQL = strQuerySQL & " WHERE " & strWhere   End If   With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        N = Nz(.Fields(0), 0)      End If   End With Exit_DBSum: On Error Resume Next    rst.Close    Set rst = Nothing    DBSum = N    Exit Function Err_DBSum:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSum)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSum End Function 多分、この方式と同じことを内容的にしていないのではないですか?

joymei
質問者

補足

ごめんなさい。 初めに記入しなかったこちらのミスですが、Access超初心者です。 せっかくアドバイスを頂いたのですが、よくわかりません。 すみません。 もしよろしければもう少し簡単な方法ではできないでしょうか。 それともやろうとしている事自体が難しいレベルのものなのでしょうか。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

#3です ごめんなさい、いきなりは合計しませんね;; 「集計実行」は、詳細にコントロール配置して、累積していかないと駄目みたいです どこに配置して、どう言うコントロールソースを設定しているか? 補足お願いできますか? コントロールとコントロールソースが、同じ名前を使って、目的と違う集計した記憶は、過去にあるのですが・・・エラーにはならなかったと思いましたが・・・

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

どうして、エラーになってるか?判りかねるのですが・・・ 関数なしで、 「テキストボックス」-「プロパティ」-「データ」-「集計実行」 で、設定し、コントロールソースに集計するデータを入れれば合計した記憶があるのですが・・・ 「詳細」で使うと累計、「グループフッター」で使うとグループの累計、「レポートフッター」でレポートの累計 という形で・・・ 詳細で使うときは行数のカウンターとしても使う方法があったと思いましたが・・・

joymei
質問者

お礼

お返事ありがとうございます。 集計機能とても便利ですね。 初めて知りました。 今回は別としてまた機会がありましたら利用させていただきます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>NZ関数を使っているから合計がエラーになってしまうのでしょうか? このようなことはありません 集計をどこで行っています? ページフッターでは集計関数は使えませんよ

joymei
質問者

お礼

早い回答ありがとうございます。 確かにページフッターでは表示されませんでした。

joymei
質問者

補足

場所を変えてみましたがエラーとなってしまいます。 他になにかエラーの原因となるものがわかりましたら教えていただけると助かります。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

> そこで、クエリに|登録数: Nz([登録件数],0)|というフィールドを作り、登録件数フィールドが空白の時には0が表示されるようになっています。 登録数: CLng(Nz([登録件数],0)) としてみたらいかがですか?

joymei
質問者

お礼

ありがとうございます。 お返事はやくて助かりました。 >登録数: CLng(Nz([登録件数],0)) さっそくやってみました。 式自体はうまくできあがりました。

joymei
質問者

補足

ごめんなさい。 こちらの説明不足で申し訳ないのですが、今回欲しい物は最終的な登録件数の合計です。 たとえば、登録件数が1、2、3の3件データがあれば、その合計の「6」というものを計算してレポートに表示したいです。 再度、質問になってしまい申し訳ないです。 よろしくお願いいたします。