プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

記録テーブルのフィールドが利用日,利用者,利用時間とします。
同一利用日に複数の人が利用します。

8月1日 8名利用
8月2日 6名利用
8月3日 4名利用
とするとテーブルには 18 のレコードがあることになります

このとき延べ日数は COUNT(*) で[18]ですが
営業日数はどのような式になりますか? 結果は[3]としたいのですが
宜しくお願いします。

A 回答 (5件)

#3です。



>レポートフッターに[=Count([*])]求まるのですが…
レポートフィールドで求める場合ですね。

いくつか方法がありますが
方式1:レポートフッターで求める場合
(1)クエリを新規追加します。
SQLビューに以下を貼り付けます。
SELECT TBL.利用日 FROM TBL GROUP BY TBL.利用日;

(2)レポートに追加したTextBoxのコントロールソースに以下を入力します。
=DCount("*","追加クエリ")


方式2:(現実的では無いですが…この様な方式もあり)
(1)クエリを新規追加します。
SQLビューに以下を貼り付けます。
SELECT TBL.利用日, TBL.利用者, TBL.フリガナ, TBL.開始時刻, TBL.終了時刻, TBL.利用時間, TBL.利用料, TBL.食費, GRP.営業日数
FROM TBL, (select count(*) AS 営業日数 from (select TBL.利用日 from TBL group by TBL.利用日)). AS GRP
ORDER BY TBL.利用日, TBL.フリガナ, TBL.開始時刻;

(2)レポートのレコードソースに追加クエリを指定します。
(3)レポートに追加したTextBoxのコントロールソースに「営業日数」を指定します。

方式3:
レポートのVBAコードで求め、レポートフィールド(非連結)に格納します。

お試しを!!
    • good
    • 0
この回答へのお礼

方式1で解決しました。
有難うございました。

方式2は何度か試しましたが、自分のやり方がどこか違うのでしょうSQL文を受けてくれません。パスしましす。
方式3 VBA使用
方式1は分かりやすいのですがクエリーの数がどんどん増えてネーミングの管理が大変なので最終的にはVBA使用で行きたいと思います。
落ち着いたら質問を新しく立ち上げますので、お気づきになられましたら再度ご指導頂けますようにお願いします。

お礼日時:2007/09/05 20:45

#3です。



>select count(*) AS 営業日 from (
select 利用日,count(*) AS 日別人数 from 記録 group by 利用日)
をレコードソースに入れても動きます。

まずSQLの確認を行なってみてください。
クエリーデザインからSQLビューを表示し、上記の様なSQL文を貼り付けた後、データシートビューを表示する事で、SQLの取得状況が確認できます。

具体的なSQL文を提示いただくと具体的な回答ができますが、以下が参考になるでしょうか?

Group byを利用する場合、
(1)select 利用日,
(2)group by 利用日
の様に求めるフィールドとGroup by句で指定するフィールドが一致していない場合はえらーになります。

この回答への補足

判りにくい質問ですが、宜しくお願いします。
今のレコードソース文は
SELECT TBL.利用日, TBL.利用者, TBL.フリガナ, TBL.開始時刻, TBL.終了時刻, TBL.利用時間, TBL.利用料, TBL.食費 FROM TBL ORDER BY TBL.利用日, TBL.フリガナ, TBL.開始時刻;
(上記でTBLは実際にはTBL利用記録修出で1ヶ月のデータ担っています。}
TBLのテーブルには[利用日],[利用者]等のフィールドに、次のようなデータが入っています。
8/1,池田
8/1,石田
8/1,井上
8/1,田中
8/2,池田
8/2,石田
8/2,井上
8/2,田中
8/2,中村
8/2,渡辺
8/6,石田
8/6,井上
8/6,田中
8/7,中村
8/7,渡辺

このデータより延べ日数は レポートフッターに[=Count([*])]で求まるのですが
開所日数を求める方法が見つかりません
このデータでは4日(5/1,8/2,8/6,8/7)としたいのです

補足日時:2007/09/04 16:51
    • good
    • 0

>営業日数はどのような式になりますか? 結果は[3]としたいのですが



営業日数=利用日は営業日のみであり、

8月1日
8月2日
8月3日
8月5日
の場合に4を求める場合、
MS-ACCESSなら以下のクエリで求めることができます。

日別に求めるSQLをサブクエリとし、
サブクエリのレコード件数を求めます。

select count(*) AS 営業日 from (
select 利用日,count(*) AS 日別人数 from 記録 group by 利用日)

この回答への補足

すみません。質問不足でした。
アプリケーションソフトはACCESSです。

補足日時:2007/09/04 05:10
    • good
    • 0
この回答へのお礼

有難うございます
ご面倒かけて申し訳ございません
サブクエリーはレコードソースのフィールドに定義してよいのですか

開所日: (select count(*) as 利用日 from (TBL利用記録抽出))
としましたが、実行時エラー「サブクエリでは、マルチレベルGUROP BY 句は使用できません]となります。

お礼日時:2007/09/04 09:00

下記URLの過去ログで、#3の方のご回答が参考になると思います。



「[EXCEL]列の項目を何種類かカウントする方法」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1496804
    • good
    • 0

記録テーブルが日付順にならんでいるのであれば(あるいは日付順に並べ替えて)


D1のセルに
=IF(A1=A2,0,1)
という関数を入れて、オートフィルでD列最終行まで数式をいれます。
そして、最後にSUM関数でD列を合計してはどうでしょうか?
(↑A列1行目からデータが始まっているものとみなした場合の式です。1行目がタイトルの場合 D2のセルに =IF(A2=A3,0,1) を入れて下さい。)

この回答への補足

すみません。質問不足でした。
アプリケーションソフトはACCESSです。

補足日時:2007/09/04 05:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!