アプリ版:「スタンプのみでお礼する」機能のリリースについて

日報のデータを作成しており、データ概要は以下のとおりです。

テーブル名_ta日報
フィールド 日付(日付型),休業日(Yes/No型),来客数(テキスト型)

 [日付]   [休業日] [来客数]
 2016/12/01 true   32
 2016/12/02 false 14
 2016/12/03 true   8

フォーム名_fo日報 
ヘッダー部に [txt期間はじめ]と[txt期間おわり]の入力欄があり、
全フィールドを選択した選択クエリ(q抽出)を作成し、
[日付]の抽出条件を『Between [Forms]![fo日報]![txt期間はじめ] And [Forms]![fo日報]![txt期間おわり]』として、fo日報ではこのq抽出のデータを一件ずつ表示しています。

質問意図は下記の【 】の項目を記載のように表示することです。
(便宜上、表形式で記述していますが、1日1画面で読み込みます)

※2016/12/01~2016/12/03を抽出した場合
 [日付」  「休業日」「来客数」【レコード数】【休業日数】【来客累計】
 2016/12/01  true    32     1      1     32
 2016/12/02 false    14     2      1     46
 2016/12/03 true    8     3      2     54

※2016/12/02~2016/12/03を抽出した場合
 [日付」  「休業日」「来客数」【レコード数】【休業日数】【来客累計】
 2016/12/02 false    14     1      0     14
 2016/12/03 true    8     2      1     22

【レコード数】は、抽出されたデータ上の通し番号。
【休業日】は、チェックボックス「休業日」の、抽出期間中のtrueの数。
【来客累計】は、テキストボックス「来客数」の抽出期間中の合計。

クエリ上で「来客累計」のフィールドを作りsumしたところ
 [日付」  「休業日」「来客数」【レコード数】【休業日数】【来客累計】
 2016/12/01  true    32     1      1     54
 2016/12/02 false    14     2      1     54
 2016/12/03 true    8     3      2     54
となってしまうミスをしました。

【抽出期間のはじめから現在表示しているレコードまで】を指定する手段やコードがわかれば
それだけで解決するのではないかと思っています。

どうか解決案をご教示ください。よろしくお願いします。
わかりづらい点があればご質問ください。

質問者からの補足コメント

  • 「来客数」は ×テキスト型 → ○数値型 です。

      補足日時:2016/12/27 22:01

A 回答 (1件)

日報の休業日は便宜上数値の型とします。



それぞれに更新クエリを作ります。ここでは、抽出条件は考慮していま
せん。そこは任せます。

更新クエリを3つ作ります。

① レコード数の更新は、
UPDATE 日報 SET 日報.レコード数 = DCount("*","日報","日付<=#" & [日付] & "#");

② 休業日数の更新は、
UPDATE 日報 SET 日報.休業日数 = DCount("*","日報","休業日=1 and 日付<=#" & [日付] & "#");

③ 来客数の更新は、
UPDATE 日報 SET 日報.来客累計 = DSum("来客数","日報","日付<=#" & [日付] & "#");

となります。

実装については、クエリの作成でsqlのビューを指定してそこにsqlの
upadateから始まる文字列をコピペして下さい。後は、実行するだけで
す。

実際のフォームでの確認に付いては、これに更に輪をかける必要が有る
かも知れません。そこ迄は考慮していません。

確認願います。
    • good
    • 0
この回答へのお礼

テストファイルを作成して動作確認をしました。
抽出条件を考慮されていないということで不安でしたが、
updateの構文を調べていたらクエリを指定できるということで

UPDATE ta日報 SET ta日報.レコード数 = DCount("*","q抽出","日付<=#" & [日付] & "#"),
    ta日報.休業日数 = DCount("*","q抽出","休業日=-1 and 日付<=#" & [日付] & "#"),
    ta日報.来客累計 = DSum("来客数","q抽出","日付<=#" & [日付] & "#");

として、解決の糸口が見えました。
行き詰っておりましたので、大変助かりました。
先の投稿の件も合わせて、本当にありがとうございます。

お礼日時:2016/12/28 01:28

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