Accessのレポートでの集計について

このQ&Aのポイント
  • JYMDフッターに1日毎の合計発注件数(品目数)を出力したいと考えております。レポートのレコードソースは、JYMD、商品コード、商品単価、数量で構成されたクエリを使っています。
  • VBAでレポートの印刷時に全ての日数の合計が出てしまい、1日毎の件数とはできませんでした。改ページをレポート側で設定しているので、1日毎の件数は出せないでしょうか?
  • レポート側での処理でも良いので、何か方策を教えてもらえたら助かります。
回答を見る
  • ベストアンサー

Accessのレポートでの集計について

JYMDフッターに1日毎の合計発注件数(品目数)を出力したいと考えております。 構成は、 JYMDヘッダー ---------------------- 明細 -------------------------- JYMD(日付)  商品コード  数量  金額 JYMDフッター ----------------------         商品コード数     件 改ページは、JYMDヘッダーの「カレントセクションの前」にしています。 レポートのレコードソースは、JYMD、商品コード、商品単価、数量で構成されたクエリを使っています。 例示すると 2008/4/21  0001  1  100 2008/4/21  0001  2  200 2008/4/21  0002  1  400 2008/4/21  0003  1  500 ------------------------------ 商品コード数 3件 ← (0001、0002、0003で3件という意味です。) (次頁) 2008/4/22  0001  1  100       ・・・ という感じです。 VBAでレポートの印刷時に以下の記述(一部です)をしましたが、 全ての日数の合計が出てしまい、1日毎の件数とはできませんでした。 ********************************************* Dim SQL_STR AS STRING Dim QUE AS QueryDef Dim RS AS RecordSet SQL_STR = "SELECT Count(商品コード) AS KEI" SQL_STR = SQL_STR & " FROM 商品日別QUE" Set QUE = DB.QueryDefs("Q_商品日別") QUE.SQL = QUE Set RS = DB.OpenRecordset("Q_商品日別", dbOpenSnapshot) If RS.RECORDCOUNT <> 0 Then Me![GOKEI] = RT_QUE![KEI] End If ********************************************* 改ページをレポート側で設定しているので、1日毎の件数は出せないでしょうか? レポート側での処理でも良いので、何か方策を教えてもらえたら助かります。

  • nobil
  • お礼率90% (27/30)

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

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

商品コードの件数を数えたいのですね 商品コードをグループに指定し グループフッターにテキストボックスを置き =1 集計実行をグループ全体とします 日付フッターの件数のところにはこのテキストボックスを参照する式を書きます 商品コードフッターのテキストボックスやフッターは邪魔になるでしょうから テキストボックスの高さは最小(たとえば0.01cm)にしフッターの高さもこれに合わせ、[可視]も[いいえ]にしておけばいいでしょう

nobil
質問者

お礼

CHRONOS_0さん、ご回答ありがとうございます。 教えていただいた方法でやってみました。 結論から書きますと、商品コードの件数がうまく出ませんでした。 (重複した商品コードを「明細分」カウントしてしまう) グループに日付と商品コードが入っているからうまく出ないのかとも 考えたのですが、 原因を突き止められませんでした。 そこで、クエリを2つ作って、日付ごとの商品コードをGroup Byした クエリを元に件数を出して、 そのクエリの日付をレポート上の日付と比較する手法をとることにより実現できました。 他の方法で実現しましたが、同様の事例の場合に、 また使わせていただきたいと思います。 ありがとうございました。

関連するQ&A

  • Access2002の集計レポート?

    商品コード別の集計レポート作成において、デザイビューの「商品コード フッター」部分で「配送の有無(Yes/No型)」のフィールドで「配送有り」をカウントしたいのですが、上手くいきません・・・? =Count(IIf([配送の有無]=Yes,1,0) で表示させると ・Yes との結果です。 ご教示ください。

  • Accessのレポートでグループごとに改頁とページ数のクリア

    こんにちは。Access2000を使用しています。 支店毎の商品別売り上げ表を作成したいので、 レポートで「支店コード」と「商品コード」を グループ化しました。 支店が変わったら改頁するよう、「支店コードフッター」 に改頁コントロールを挿入しました。ここで以下の 問題とカスタマイズをおこないたいのです。 *********************************************** 1.最後の「支店コードフッター」を出力した後で、 改頁されてしまい、不要な紙(ページヘッダーと ページフッターだけ)が出力される。 2.ページフッターにページ番号([Page])を出力して いるが、支店が変わったら(ページフッターを出力 したら)クリアーして「1ページ」から出力したい。 *********************************************** 以上の2点を解消する策をどなたかよろしくお願い いたします。

  • Accessレポートのレイアウトについて

    Accessレポートのレイアウトについて 現在レポートを作成していて行き詰っています。 レコードを3件出力したら、グループヘッダー部を表示したいのです。 いろいろ調べて、指定件数出力したら改ページする。というのは見つけたのですが、 改ページせずに、同じページにグループヘッダを出したいのです。 アドバイスいただければうれしいです。よろしくお願いします。

  • Access2002のコンパイルエラーについて

    Access2002を使っていて、印刷ボタンを押したら、下記のような見たことのない画面になり、 「コンパイルエラー end function が必要です。」というメッセージが出てきました。 どなたか詳しい方、修復の方法を教えて下さい。 Private Function PfDataMake() As Boolean 'On Error GoTo Err_PfDataMake Dim St_Sql As String Dim Ln_Cnt As Long Dim Rs_Cnt As Recordset Dim Rs_Cnt2 As Recordset Dim In_Cnt As Long Dim End_Flg As Boolean Dim Code1 As Long Dim Gokei As Long Dim Gohan As Long Dim Okayu As Long Dim Josyoku As Long Dim Kizami As Long Dim ChoKizami As Long Dim GenEn As Long Dim Kome As String Dim Okazu As String Dim Enbun As String Dim Hiduke As Date Dim Youbi As String 'W_発注食数合計の初期化 St_Sql = "Delete From W_発注食数合計 ;" DoCmd.RunSQL (St_Sql) 'W_発注食数明細の初期化 St_Sql = "Delete From W_発注食数明細 ;" DoCmd.RunSQL (St_Sql) '///// 対象データを抽出 ///// St_Sql = "SELECT * " St_Sql = St_Sql & "FROM W_配食入力 " '/// 20060423追加 出力対象「前日キャンセル」追加 start /// 'St_Sql = St_Sql & "WHERE W_配食入力.キャンセル = 0" 'St_Sql = St_Sql & "WHERE (W_配食入力.キャンセル = 0) or (W_配食入力.キャンセル = 2)" St_Sql = St_Sql & "WHERE (W_配食入力.配達 <> 3) and (W_配食入力.配達 <> 4)" '/// 20060423追加 end /// St_Sql = St_Sql & " ORDER BY W_配食入力.利用者コード ;" '件数を取得 Set Rs_Cnt = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt.RecordCount End_Flg = False 'レコード無し判定 If Rs_Cnt.EOF = True Or Rs_Cnt.BOF = True Then End_Flg = True End If Gokei = 0 Gohan = 0 Okayu = 0 Josyoku = 0 Kizami = 0 ChoKizami = 0 GenEn = 0 'ループ処理 Rs_Cnt.MoveFirst Hiduke = Rs_Cnt("日付") Youbi = Rs_Cnt("曜日") Do Until Rs_Cnt.EOF = True Gokei = Gokei + 1 Select Case Rs_Cnt("米") Case 1 Gohan = Gohan + 1 Kome = " " Case Else Okayu = Okayu + 1 Kome = "おかゆ" End Select Select Case Rs_Cnt("おかず") Case 1 Josyoku = Josyoku + 1 Okazu = " " Case 2 Kizami = Kizami + 1 Okazu = "刻み" Case Else ChoKizami = ChoKizami + 1 Okazu = "超刻み" End Select Select Case Rs_Cnt("減塩") Case 1 Enbun = " " Case 2 GenEn = GenEn + 1 Enbun = "減塩" End Select Code1 = Rs_Cnt("利用者コード") St_Sql = "SELECT D_利用者.シメイ " St_Sql = St_Sql & "FROM D_利用者 " St_Sql = St_Sql & "WHERE D_利用者.利用者コード = " & Code1 St_Sql = St_Sql & " ORDER BY D_利用者.利用者コード ;" '件数を取得 Set Rs_Cnt2 = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt2.RecordCount St_Sql = "INSERT INTO W_発注食数明細 VALUES (" & Code1 & "," St_Sql = St_Sql & "'" & Rs_Cnt("利用者氏名") & "','" & Rs_Cnt2("シメイ") & "'," St_Sql = St_Sql & "'" & Rs_Cnt("主食") & "','" & Rs_Cnt("副食") & "'," St_Sql = St_Sql & "'" & Kome & "','" & Okazu & "','" & Enbun & "'" St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) Rs_Cnt.MoveNext Loop St_Sql = "INSERT INTO W_発注食数合計 VALUES ('" & Hiduke & "'," St_Sql = St_Sql & "'" & Youbi & "'," & Gokei & "," & Gohan & "," & Okayu & "," St_Sql = St_Sql & Josyoku & "," & Kizami & "," & ChoKizami & "," & GenEn St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) 'レコードセットの終了 Rs_Cnt.Close Rs_Cnt2.Close Exit Function Err_PfDataMake: Resume Next

  • Access2002のコンパイルエラーについて

    Access2002を使っていて、印刷ボタンを押したら、下記のような見たことのない画面になり、 「コンパイルエラー end function が必要です。」というメッセージが出てきました。 どなたか詳しい方、修復の方法を教えて下さい。よろしくお願いします。 Private Function PfDataMake() As Boolean 'On Error GoTo Err_PfDataMake Dim St_Sql As String Dim Ln_Cnt As Long Dim Rs_Cnt As Recordset Dim Rs_Cnt2 As Recordset Dim In_Cnt As Long Dim End_Flg As Boolean Dim Code1 As Long Dim Gokei As Long Dim Gohan As Long Dim Okayu As Long Dim Josyoku As Long Dim Kizami As Long Dim ChoKizami As Long Dim GenEn As Long Dim Kome As String Dim Okazu As String Dim Enbun As String Dim Hiduke As Date Dim Youbi As String 'W_発注食数合計の初期化 St_Sql = "Delete From W_発注食数合計 ;" DoCmd.RunSQL (St_Sql) 'W_発注食数明細の初期化 St_Sql = "Delete From W_発注食数明細 ;" DoCmd.RunSQL (St_Sql) '///// 対象データを抽出 ///// St_Sql = "SELECT * " St_Sql = St_Sql & "FROM W_配食入力 " '/// 20060423追加 出力対象「前日キャンセル」追加 start /// 'St_Sql = St_Sql & "WHERE W_配食入力.キャンセル = 0" 'St_Sql = St_Sql & "WHERE (W_配食入力.キャンセル = 0) or (W_配食入力.キャンセル = 2)" St_Sql = St_Sql & "WHERE (W_配食入力.配達 <> 3) and (W_配食入力.配達 <> 4)" '/// 20060423追加 end /// St_Sql = St_Sql & " ORDER BY W_配食入力.利用者コード ;" '件数を取得 Set Rs_Cnt = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt.RecordCount End_Flg = False 'レコード無し判定 If Rs_Cnt.EOF = True Or Rs_Cnt.BOF = True Then End_Flg = True End If Gokei = 0 Gohan = 0 Okayu = 0 Josyoku = 0 Kizami = 0 ChoKizami = 0 GenEn = 0 'ループ処理 Rs_Cnt.MoveFirst Hiduke = Rs_Cnt("日付") Youbi = Rs_Cnt("曜日") Do Until Rs_Cnt.EOF = True Gokei = Gokei + 1 Select Case Rs_Cnt("米") Case 1 Gohan = Gohan + 1 Kome = " " Case Else Okayu = Okayu + 1 Kome = "おかゆ" End Select Select Case Rs_Cnt("おかず") Case 1 Josyoku = Josyoku + 1 Okazu = " " Case 2 Kizami = Kizami + 1 Okazu = "刻み" Case Else ChoKizami = ChoKizami + 1 Okazu = "超刻み" End Select Select Case Rs_Cnt("減塩") Case 1 Enbun = " " Case 2 GenEn = GenEn + 1 Enbun = "減塩" End Select Code1 = Rs_Cnt("利用者コード") St_Sql = "SELECT D_利用者.シメイ " St_Sql = St_Sql & "FROM D_利用者 " St_Sql = St_Sql & "WHERE D_利用者.利用者コード = " & Code1 St_Sql = St_Sql & " ORDER BY D_利用者.利用者コード ;" '件数を取得 Set Rs_Cnt2 = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt2.RecordCount St_Sql = "INSERT INTO W_発注食数明細 VALUES (" & Code1 & "," St_Sql = St_Sql & "'" & Rs_Cnt("利用者氏名") & "','" & Rs_Cnt2("シメイ") & "'," St_Sql = St_Sql & "'" & Rs_Cnt("主食") & "','" & Rs_Cnt("副食") & "'," St_Sql = St_Sql & "'" & Kome & "','" & Okazu & "','" & Enbun & "'" St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) Rs_Cnt.MoveNext Loop St_Sql = "INSERT INTO W_発注食数合計 VALUES ('" & Hiduke & "'," St_Sql = St_Sql & "'" & Youbi & "'," & Gokei & "," & Gohan & "," & Okayu & "," St_Sql = St_Sql & Josyoku & "," & Kizami & "," & ChoKizami & "," & GenEn St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) 'レコードセットの終了 Rs_Cnt.Close Rs_Cnt2.Close Exit Function Err_PfDataMake: Resume Next

  • Accessのレポートの集計に条件をつけたい

    いつもお世話になります。 Access2010でレポートでの集計を行う際に条件をつけるには、どうすればよいか 教えて下さい。 レポートを作成した際、販売店コードでグループ化しています。 その中で消費者コードのレコードをカウントし、販売店コードフッターでカウント数を プリントしています。 このレコード数をカウントする際に、すべてのレコードではなく、そのレコード内にある 売上額の欄が0円より大きい(売上がある)消費者の件数をカウントするようにしたいと 考えています。 明細行には売上のない消費者もプリントされるため、プリントされる行数とカウント数は 異なってきますが、それはかまいません。 また売上がない消費者も含めた全レコード数も必要ありません。 このような条件を指定するにはどうすればよいでしょうか? よろしくお願いします。

  • オラクルのデータをAccessに追加 無限ループ

    前回、オラクルからデータを取り出し、Accessのテーブルに書き込みを教えて頂き、データ追加は出来たのですが、データ追加時に無限ループが発生しました。 【環境】 Oracle:10g Access:2010 Dim CON As New ADODB.Connection 'Oracle側コネクション Dim RS As ADODB.Recordset 'Oracle側レコードセット Dim SQL As String 'Oracle側SQL文 Dim i As Integer '処理用インクリメント Dim DT As Date '抽出日付変数(日付型) Dim sDT As String '抽出日付変数(テキスト型) Dim RS2 As ADODB.Recordset 'Access側レコードセット ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) ’取得したレコード数表示 MsgBox "オラクル側のレコード数は: " & RS.RecordCount (1)↑↑↑オラクルから、抽出したレコード数表示 rs2.Open "新しいテーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.MoveFirst Do Until rs.EOF rs2.AddNew rs2!カラム1 = rs!カラム1 rs2!カラム2 = rs!カラム2 rs2!カラム3 = rs!カラム3 rs2.Update rs2.Close: Set rs2 = Nothing rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 上記を実行したところ、いくら待っても処理がおわらず、強制終了をかけた所、新テーブルには、約150万件追加されてました。 (1)でオラクルから抽出した、レコード数を表示させてみた所、-1でした。 ◎疑問点、 -1ってありえない数値だと思うのですが。 ちなみに、オラクル側で同様のSQLを実行させた所、取得件数は48件でした。 上記について、ご存じの方がいらっしゃいましたら、アドバイスお願いいたします。

  • Accessで、DAOでAddnew

    参照はDAOで、Addnewでデータの追加をしたいのですが、記述が悪いのか、上手くできません。 どなたか、教えて下さい! テーブル:スケジュールソース フィールド:日付 Private Cur_Db As DAO.Connection Private rs As DAO.Recordset Private sql As String Dim str_date As String str_date = Me!日付 Set Cur_Db = CurrentDb rs.Open "スケジュールソース", Cur_Db, dOpenKeyset, adLockOptimistic rs.AddNew rs("日付").Value = str_date rs.Update

  • AccessSQL COUNT文で該当レコード抽出したい

    初心者です。 Access2000であるテーブルの条件に一致した レコード件数を抽出するSQLを作成しました。 条件に該当しない場合も1件で件数が戻ってきてしまいます。 AccessクエリでSQLを貼り付けて 検証した場合はちゃんと0件になるのですが VBAのコードではうまく件数が抽出されません。 簡単なことだったらごめんなさい。 いろいろなサイトで探した末、 どうしても解決できないので ご教授よろしくお願いします。 Dim strSQL As String Dim db As DAO.Database Dim rs As DAO.Recordset  Dim IntCount As integer 'SQL文を生成 strSQL = "SELECT COUNT(*) AS 件数 FROM テーブル名 " strSQL = strSQL & "WHERE テーブル名.コード = '" strSQL = strSQL & Forms![フォーム名]![txtコード] strSQL = strSQL & "' AND Left([テーブル名]![区分],1) = '" strSQL = strSQL & Forms![フォーム名]![cnb種類].Column(0) strSQL = strSQL & "' AND テーブル名.名称 = '" strSQL = strSQL & Forms![フォーム名]![txt名称] strSQL = strSQL & "';" Set db = CurrentDb Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) IntCount =  rs.RecordCount rs.Close Set db = Nothing Set rs = Nothing

  • Accessのフォームで値が見た目変更されない

    はじめまして、こんにちは。 Accessを使用して自社ツールを作成しています。 バージョン:Access2003 OS:WindowsXP フォームのレコードソースに、あるテーブルを連結させて一覧にして表示しています。 複数のコンボボックスを用意して、選択された値によって検索をかけ、 レコードソースの値を書き換えて再表示しています。 この検索はコンボボックスの更新後処理にVBAでSQLを記述して行っています。 Dim str_sql As String str_sql = str_sql & "select * from T_テーブルA where ○○コード = 1" Me.RecordSource = str_sql かなり省略していますが、実際はコンボボックスで選択された値によって SQLを生成しています。 フォームにはtxt_件数という名前でテキストボックスを用意してあります。 レコードソースを設定した後に、同じ条件でカウントし件数を表示しようと しているのですが、これがうまくいきません。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) 件数が1件でもある時は正しい値が表示されます。 0件の場合は前回の表示のまま見た目上かわりません。 例) 1回目の検索で200件→テキストボックス[200]と表示 2回目の検索で0件→テキストボックス[200]と表示 3回目の検索で10件→テキストボックス[10]と表示 このような感じです。 ただし、実際は正しい値[0]が設定されているみたいです。 別のウインドウを一度フォームにかぶせて避けると[0]になりますし、、 2回目で[200]と表示されているものをコピーすると[0]がコピーされます。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) If Me!txt_件数 = 0 Then Me!txt_件数 = 0 End If 馬鹿げていますが、このようにしても正しく[0]が表示されませんでした。 Accessを再起動しても状態は変わらず、困っています。 環境の問題でしょうか? 解決策など解る方いらっしゃいましたら教えてください。 よろしくお願いいたします。

専門家に質問してみよう