• ベストアンサー

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

  • 開所日数の計算

    お世話になります。 記録テーブルのフィールドが利用日,利用者,利用時間とします。 同一利用日に複数の人が利用します。 8月1日 8名利用 8月2日 6名利用 8月3日 4名利用 とするとテーブルには 18 のレコードがあることになります このとき延べ日数は COUNT(*) で[18]ですが 営業日数はどのような式になりますか? 結果は[3]としたいのですが 宜しくお願いします。

  • accessレポートの除外表示、実人数、並べ替え

    ご覧いただき、ありがとうございます。 Access2010を使用している初心者です。レポート2枚を作成しています。 3点、お聞きしたいことがあります。 お分かりになる部分だけでも結構ですので、どなたかご教授いただけますでしょうか? ********* (1) グループ化で特定のレコードを除外して表示 レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:依頼者ID、曜日、項目名 --- 曜日 ヘッダー ---   [曜日] --- 項目名 ヘッダー ---   ★[項目名]       <[項目名]A-Dの各件数> =Count([項目名])  --- レポート フッター ---   E             <[項目名]がEの件数> =Sum(IIf([項目名]="E",1,0))   ひと月の項目名と件数を下方向に並べます。 この時、項目名A,B,C,Dがあり、Eを除外して表示したいです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ また、そのレポート内の下部で、グループ化せずにEの集計も行いたいのです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ … ★の式を、=iif([項目名]<>"E",null ,[項目名]) としたら循環参照となってしまいます。 … テーブルIから作ったA-DおよびEのみの選択クエリ、またはテーブルIとEのみの選択クエリに分けて、レコードソースに追加し、参照先を分けようとしましたが、「指定されたフィールド '[項目名]' が SQLステートメントのfrom句にある複数のテーブルを参照しました」とエラーが出ます。 ********* (2) 実人数のカウント レポート名:レポート2 / レコードソース:テーブルI 使用するフィールド:担当者名、依頼者名、会員、項目名 --- レポート ヘッダー --- <「項目名」A-Dの総件数>  =Count([担当者])-Sum(IIf([項目名]="E",1,0)) ★<「項目名」A-Dの依頼者実人数>  <A-Dで「会員」フィールドが null の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="",1,0))-Sum(IIf([項目名]="E" And [会員]="",1,0)) ★<A-Dで「会員」フィールドが null の依頼者実人数> <A-Dで「会員」フィールドが 1 の総件数>  =Sum(IIf([依頼者名]<>"" And [会員]="1",1,0))-Sum(IIf([項目名]="E" And [会員]="1",1,0)) ★<A-Dで「会員」フィールドが 1 の総件数> ひと月の項目名をフィールド「会員」で分けて集計します。 実人数はクロス集計クエリを参照して、手入力すれば解決しますが、できれば自動的に行いたいです。 ********* (3) グループ内での任意の並べ替え レポート名:レポート2 / レコードソース:テーブルI / 使用するフィールド:担当者名、依頼者名、会員 --- 担当者 ヘッダー --- <A-Dでの担当者>  ★[担当者]           --- 依頼者名 ヘッダー --- --- 項目名 ヘッダー --- <A-Dでの依頼者>  [依頼者名]       [項目名]         <各依頼者、各項目名の件数> --- 担当者 フッター ---  <担当者ごとの総件数> =Count([担当者])-Sum(IIf([項目名]="E",1,0)) レポート1の問題を踏まえ、一応、項目名Eを除外して集計しています(現時点で未解決) ここでは、担当者の並び替えを任意に行いたいです。 昇順や降順ではなく、例えばあ・い・う・え・おを、い・う・あ・お・えのように並べたいのです。

  • Accessのレポートで使う関数を教えて

    私は製造会社のOLです。Windows2000/Access2000で課内の一月毎の工数表を作っています。テーブルは[日付(年/月/日)]、[取引先]、[製品名]、[担当者]、[工数(時間)]のフィールドからなっています。レポートで、一つの製品を制作するのに何名が携わっているかを計算させたいのですが、製品名フッターにて「=Count([担当者])」にすると、3日同じ人が同じ製品を製作したとしたら、「3名」となってしまします。それを「1名」と計算させるには、どうすればよいのでしょうか?どうか教えて下さい。

  • Access2002のレポートについて

    社員マスターテーブルがあります。 フィールドは社員番号と郵便番号と住所です。 何をやりたいかというと、レポートで地図の画像を貼り付けて どの地域に何人いるかという印刷画面を作りたいです。 現在の状況は・・・ 郵便番号3桁が100~150迄は西東京地域151~200迄は南東京地域 200~300迄は神奈川地域・・・ となるように地域という演算フィールドを作成しました。 やってみた事は・・・ クロス集計を行い西東京地域や神奈川地域に人数が何人いるかを出しました。 それをもとにレポートを作りました。 レポートウィザードで地域フィールドでグループ化をしました。 結果を見ると地図の画像が数ページに表示されてしまいます。 やりたい事は・・・ 地図の画像は1つだけ表示させそれぞれの地域で何人いるかを集計したいです。 1つの地図の上にそれぞれの人数を表示させたいです。 レポートヘッダーに地図を表示させて人数を表示させると 1つのコントロールしか表示されません。 どうしたらよいでしょうか? ご指導お願い致します。_(_^_)_

  • ACCESS2000のレポートでデータの数値の+/-によって?

    ACCESS2000のテーブルに金額という一つのフィールドがあります。 ここには+データも-データーも入っています。 このフィールドをレポートで打ち出す時に、+だったらここに印刷 -だったらこっちに印刷なんてことはできるのでしょうか? お分かりの方お教えください。

  • Access2000レポートについて

    Access2000で担当者別顧客名簿を作成しています。担当者別なので顧客の重複があります。 クエリで抽出してレポートのラベル印刷をしたいのですが、顧客の重複している場合は、1ラベルだけ印刷したいのです。テーブルの削除はしてはいけないのです。できる方法ご存知の方お願いします。 また、顧客名の重複がある場合チェックが自動的に入る方法もありましたらお願いします。

  • Access2002の集計レポート?

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

  • ACCESSのレポートでの並び替えについて

    ACCESS2000を使っている初心者です。 レポートのデザインビューで詳細セクションに「並び替え/グループ化」を設定しましたが、これを設定しなおしたいと思っています。 現状5項目のフィールドの並び替えを設定していますが、3項目程度に減らしたいと思い、下位の2項目のフィールドを消してみましたが、いざプレビューに戻すと「プレビューまたは印刷しようとしたレポートで、グループヘッダー/グループフッターの並び替えを行うフィールドまたは式を指定する必要があります。」というメッセージが出てきてしまいます。 どのようにして項目を減らせばいいのか、またこの「並び替え/グループ化」の全解除が出来るのであれば、どうか教えてください。

  • Accessのレポートについて

    クエリやテーブルのデータを利用して、レポートを作成しようと思います。 テーブルで20人のお客様のお買い物商品・金額がのっているとします。(人によっては3商品や1商品のみの場合もあるとします) レポートでそれぞれのお客様ごとの請求書を作成したい場合、『オートレポート:単表形式』とやらにして印刷をすると、20人分それぞれお客様ごとのレポート(請求書)が印刷できるものでしょうか? 素人質問で本当に申し訳ありません。 是非ともわかりやすいお答えお待ちしております。

  • Accessのレポート上での計算

    現在4つのフィールドで=DCountを使ってリストの個数を返すクエリを組みました。 それをレポートで表示したのですが、この各フィールドの個数を合計したいんです。 テーブルB | A | B | C | D | ←このA~Dにはコンボボックスでタイプが入っています。 これから クエリ 式1:=DCount("*","テーブルB","[A]='タイプ1'") クエリを実行すると 1      式2:=DCount("*","テーブルB","[A]='タイプ2'")  クエリを実行すると 0      式3:=DCount("*","テーブルB","[A]='タイプ3'")  クエリを実行すると 1 が表示 といったようにクエリで選ばれている個数を算出しています。 このクエリを使ってレポートを作ったのですが、 レポートフッターに =Sum([式1]+[式2]+[式3]) という式を入れてレポートを表示すると 「101」と返ってきてしまいます(表示されている数字が順番にならんでる)。 目的としては「2」にしたいのですが、式が違うのでしょうか? 初心者バリバリの質問で申しわけありませんが、ご教授いただけますようお願いいたします。

専門家に質問してみよう