- ベストアンサー
Access レポートに合計を表示
Accessについて質問です。 もともとあるデータを使っていて、0のデータが空白となってしまいました。 そこで、クエリに|登録数: Nz([登録件数],0)|というフィールドを作り、登録件数フィールドが空白の時には0が表示されるようになっています。 そのクエリを元にレポートを作成して、登録数の合計を表示させようとしたらエラーになってしまいました。 どうしたら合計を表示させる事ができますでしょうか? NZ関数を使っているから合計がエラーになってしまうのでしょうか? NZ関数が原因の場合、その他の関数を使って表示することは可能なのでしょうか?
- joymei
- お礼率60% (14/23)
- オフィス系ソフト
- 回答数7
- ありがとう数5
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
再掲(質問に答えていないですよ) >どこに変えたのですか? >エラーの内容は? もうひとつ、Sum関数はNullを除いて集計してくれます 合計でいいのなら Sum(登録件数) でOKです 詳細のほうもNullのときに0を表示させたいだけなら Nz関数など使わなくても書式で対応できます あるいはもっと大元のテーブルで規定値を0にしておいてもいいですね
その他の回答 (6)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>場所を変えてみましたがエラーとなってしまいます。 どこに変えたのですか? エラーの内容は? >他になにかエラーの原因となるものがわかりましたら 他によくやるミスといえば ソースのフィールド以外を集計式に使用するというやつなんですが >クエリに|登録数: Nz([登録件数],0)|というフィールドを作り とあったので登録数はソースのクエリのフィールドだと判断したのですが ひょっとしてレポート上のテキストボックスだったりして
補足
プレビュー表示にした時にエラー#となります。 一応クエリにフィールドはあります。 その「登録数: Nz([登録件数],0)」フィールドの合計をレポートに表示させたいと思います。 よろしくお願いいたします。
<データテーブル> 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 多分、この方式と同じことを内容的にしていないのではないですか?
補足
ごめんなさい。 初めに記入しなかったこちらのミスですが、Access超初心者です。 せっかくアドバイスを頂いたのですが、よくわかりません。 すみません。 もしよろしければもう少し簡単な方法ではできないでしょうか。 それともやろうとしている事自体が難しいレベルのものなのでしょうか。
- Dxak
- ベストアンサー率34% (510/1465)
#3です ごめんなさい、いきなりは合計しませんね;; 「集計実行」は、詳細にコントロール配置して、累積していかないと駄目みたいです どこに配置して、どう言うコントロールソースを設定しているか? 補足お願いできますか? コントロールとコントロールソースが、同じ名前を使って、目的と違う集計した記憶は、過去にあるのですが・・・エラーにはならなかったと思いましたが・・・
- Dxak
- ベストアンサー率34% (510/1465)
どうして、エラーになってるか?判りかねるのですが・・・ 関数なしで、 「テキストボックス」-「プロパティ」-「データ」-「集計実行」 で、設定し、コントロールソースに集計するデータを入れれば合計した記憶があるのですが・・・ 「詳細」で使うと累計、「グループフッター」で使うとグループの累計、「レポートフッター」でレポートの累計 という形で・・・ 詳細で使うときは行数のカウンターとしても使う方法があったと思いましたが・・・
お礼
お返事ありがとうございます。 集計機能とても便利ですね。 初めて知りました。 今回は別としてまた機会がありましたら利用させていただきます。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>NZ関数を使っているから合計がエラーになってしまうのでしょうか? このようなことはありません 集計をどこで行っています? ページフッターでは集計関数は使えませんよ
お礼
早い回答ありがとうございます。 確かにページフッターでは表示されませんでした。
補足
場所を変えてみましたがエラーとなってしまいます。 他になにかエラーの原因となるものがわかりましたら教えていただけると助かります。
- bonaron
- ベストアンサー率64% (482/745)
> そこで、クエリに|登録数: Nz([登録件数],0)|というフィールドを作り、登録件数フィールドが空白の時には0が表示されるようになっています。 登録数: CLng(Nz([登録件数],0)) としてみたらいかがですか?
お礼
ありがとうございます。 お返事はやくて助かりました。 >登録数: CLng(Nz([登録件数],0)) さっそくやってみました。 式自体はうまくできあがりました。
補足
ごめんなさい。 こちらの説明不足で申し訳ないのですが、今回欲しい物は最終的な登録件数の合計です。 たとえば、登録件数が1、2、3の3件データがあれば、その合計の「6」というものを計算してレポートに表示したいです。 再度、質問になってしまい申し訳ないです。 よろしくお願いいたします。
関連するQ&A
- ACCESSでデータゼロ件の時レポートが#エラーに
ACCESSのレポートでCOUNT(*)やSUM([品名])のテキストがデータ件数ゼロの時に#エラーになります。NZ関数を使っても同様です。どうすれば良いのでしょうか。よろしくお願いします。 ACCESS 2002
- ベストアンサー
- オフィス系ソフト
- Access レポート 集計について
Accessのレポートについてご質問いたします。 Accessのレポートにクエリのデータを出力し、全データ出力後のレポート下部に、『商品名』フィールドに出力した、商品名ごとの数の集計を表示したいのですが、どのように記載すればよろしいでしょうか?
- ベストアンサー
- Access(アクセス)
- Accessのレポートで合計を計算するには?
アクセスでレポートを作成しているのですが、基になるクエリのデータではなく、レポートのテキスト同士で合計を計算させたいのです。 テキストの書式は、#,##0 にしています。 どうかよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Accessでレポートを作成したい
Access2000を使っています。 ウィザードを使ってレポートを作成しようとしています。 レポート作成用に新規クエリを作り、レポート作成ウィザードの「フィールドの選択」で新しく作ったクエリを指定し、そこからすべてのフィールドを選択しましたが、印刷形式を選択したところで、「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが出ます。 クエリの作り方が間違っているのでしょうか。それともクエリの中のテーブル間の結合がうまくいっていないとか…。 「フィールドの選択」では、レポートで表示させたいフィールドだけを選択すればいいんですよね? そのためのクエリも、同じくレポートで表示するフィールドだけを入れればいいんですよね。 そもそも「アプリケーション定義またはオブジェクト定義のエラー」って何なんでしょう…。 初心者ですがよろしくお願いします。
- 締切済み
- オフィス系ソフト
- ACCESSレポートに複数のクエリを選択する方法
ACCESSを使って、レポートを作成しています。 表示するフィールド数が255以上のため、1つのクエリにまとめることができません。そこで、複数のクエリを1つのレポートに表示することは可能でしょうか? よろしくお願いします。
- 締切済み
- その他(データベース)
- Access クロス集計 レポート 合計値
accessでクロス集計クエリを作成し、その結果でレポートを作りました。 総計やグループごとの合計値を表示したいのですが、マニュアル本やヘルプを見ても「sum」利用しか出てきません。 (本当はあるのかもしれませんが、見つけられませんでした) テキストボックスに一個一個「sum」を入れて合計値を作るしかないのでしょうか? データ量が物凄く、集計するデータ(列)が500以上あるので、大量のsumと戦わなければなりません。 何か良い方法があると思うのですが、見つけることができません。 どなたかご教示いただければ幸いです。 当方の環境: win2000 access200 なお私のレベルは簡単な関数を使えるだけで、SQLやVBAはチンプンカンプンです。 よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- Access2010 更新データのレポート表示
Access初心者です。 新規データを入力しても、レポートが更新されずに困っています。 (テーブルや、フォーム内では、データは更新されています) エクセルデータをAccess2010にインポートして、元テーブルを作成しました。 元テーブルを元に、フォーム・レポート・検索クエリ(年度別・分類別)等を作成しました。 ここまでの作業で、新規データの入力はありませんでした。 ところが・・・ 新規データをフォームに入力すると、元テーブルは更新されますが、既に作成しているレポートには、新規レコードが表示(反映)されません。 更新されている元テーブルを元に、もう一度レポートを作成しても、新規レコードは表示されません。 ホームタブの「全て更新」ボタンをクリックしても、新規レコードはレポートには表示されません。 尚、Access初心者です。 「更新クエリ」なるものは、作成していません。というか、「更新クエリ」って何?状態です。 また、クエリそのものが良くわかっておらず、作成したクエリは全て「検索」のためのクエリで、抽出条件に「 [] 」を入力したり、フィールドに「 年度: Year(DateAdd("m",-3,[発送日])) 」を入力したりしかできません。 勿論、リレーションシップって何???状態です。 どうしたらよいのでしょうか??? どなたか、初心者でもわかるように、教えていただけないでしょうか? 宜しくお願いいたします。
- 締切済み
- その他MS Office製品
- Access2002 255以上のフィールドをレポートで表示させたい
Access2002を使っています。Accessは初心者です。 255以上あるフィールドをレポートでA3用紙(横)1枚におさめたいと思っています。 構造は,下の通りです。 テーブル1,テーブル2,テーブル3,テーブル4 クエリ1(テーブル1~3をもとに)・・・フィールドが200あります クエリ2(テーブル4をもとに)・・・・・フィールドが150あります 初心者判断で,クエリ1とクエリ2をもとに350あるフィールドを1枚のレポートにおさめるには,A3用紙の右側の部分にサブレポートを作成すると解決できるのではと考え,マニュアルを読んで,レポート1にサブレポートを追加する作業を進めました。しかし,「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージが表示され作成できませんでした。 サブレポートの概念がよくわからないのですが,サブレポートにこだわらず,350もあるフィールドをA3用紙(横)1枚にレポートで出力できる最も簡単な方法があったら教えて下さい。何分,Accessは初心者なので,よろしくご教示下さい。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Access2002でのレポートで
お世話になります。 Access2002でレポートを作成しているのですがデザイン ビューの詳細セクションでテキストボックスを貼り付けて "=Left([***],Len([***])-4) " *[***]はレポートで作成したクエリの項目 をプロパティのコントロールソースに設定したのですが 実際にレポートに出力するテーブルにデータがないとき テキストボックスが貼り付けてある場所に "#エラー" と表示されます。 上記の表示を回避(空白でもいいです)できる方法を 教えてください。
- 締切済み
- オフィス系ソフト
- Accessフォーム/レポートのテキストボックスの表示について
Access2000で クロスクエリーを元にしたフォームで、フィールドが存在しない場合でも エラーにせずに空白を表示したいのですが、うまくいきません。 なるべくなら複雑なVBAは使わずに作りたいのですが よい方法がありましたら教えてください。 例えば下のようなデータになるクロスクエリーがあります。 (a,b,cは一つのフィールドです) a b c ----------- 北海道 1 1 0 東北 2 0 1 関東 0 1 1 ・ ・ それを条件をつけて北海道のみにした場合、次のようになります。 a b 北海道 1 1 フォーム上では、全てのとき(a,b,c全てある)と1つを選択したとき(cがない)でも ないフィールドは0として表示したいのです。 わかりにくい説明かもしれませんが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
再掲(質問に答えていないですよ) >どこに変えたのですか? >エラーの内容は? プレビュー表示にした時に「エラー#」と表示されたのみです。 素人なのでこれくらいしかわからずすみません。 前回なぜ表示されなかったのか解らないままですが、再度レポートを新規で作成したところ『Sum(登録件数)』で上手く表示されました。 ありがとうございました。