• ベストアンサー

ACCESSのレポートで実人数と実日数を付加したいのですが

ACCESSのレポートで実人数と実日数を付加したいのですが デイハウス利用者の利用記録のテーブル[T 利用記録]があります このテーブルに利用日、利用者のフィールドがあります。 レポートフッタ-に利用日及び利用者の重複を除いた実日数と実人数を 印刷することができますか 延べ日数または延べ人数はcount(*)で印刷出来ますが

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

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

延べ人数、延べ日数はできるということなので、 実日数、実人数を対象とします。 レポートのレコードソースから取り出せるか不明なので レコードセットから取り出します。 なお、コードはDAOを使用しているので参照設定はDAO を選択しておいてください。 (1) クエリを4つ作ります。 Q利用者グループ化; SELECT T利用記録.利用者 FROM T利用記録 GROUP BY T利用記録.利用者; Q利用日グループ化: SELECT T利用記録.利用日 FROM T利用記録 GROUP BY T利用記録.利用日; Q実人数: SELECT Count([利用者]) AS 実人数 FROM Q利用者グループ化; Q実日数: SELECT Count([利用日]) AS 実日数 FROM Q利用日グループ化; (2) 関数をレポートのコード表に張り付けます。 '実人数 Private Function funcJITUNINZU() As Long Dim db As Database Dim rs As Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Q実人数", dbOpenDynaset) funcJITUNINZU = rs!実人数 rs.Close Set rs = Nothing db.Close Set db = Nothing End Function '実日数 Private Function funcJITUNISU() As Long Dim db As Database Dim rs As Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Q実日数", dbOpenDynaset) funcJITUNISU = rs!実日数 rs.Close Set rs = Nothing db.Close Set db = Nothing End Function (3) 次にレポートフッターの詳細の上で右クリックし プロパティシートを表示し、 印刷時でビルダの選択を起動しコードビルダを選択。 表示されたら、以下にします。 tx実人数、tx実日数はテキストボックスの名前です。 こちらで命名したものです。 Private Sub レポートフッター_Print(Cancel As Integer, PrintCount As Integer) Me!tx実人数 = funcJITUNINZU Me!tx実日数 = funcJITUNISU End Sub これで、レポートを立ち上げると表示されます。 なお、レポートで表示されているレコード数、 あるいは期間が限定されている場合はクエリの 書き換え、あるいはSQLをコードの中に書き込んで 対象レコードを絞り込む方法をとります。その場合は 絞り込むためにフォーム等に期間の設定をして それをクエリ、あるいはSQL文の中で参照するように します。 質問の中にそのことには言及されていないので一応テーブル のレコードすべてが対象になっています。

shinkami
質問者

お礼

ご回答有難うございます。 大変時間を割いていただいたようで恐縮です。 おかげさまで見通しがつきました。

関連するQ&A