Microsoft Access 掲示板

営業日数 / 8

9 コメント
views
8
hiroton 2025/08/25 (月) 13:14:27 b296d@f966d

最初に訂正を
>> 2ですが、なんでかかっこが漏れているところがありました

(DSum("総売り上げ","T01_日報")+Nz([総売り上げ],0))/(Date()-DMin("日付","T01_日報")+1-DateDiff("ww",DMin("日付","T01_日報"),Date(),2)-DCount("*","T_臨時休業日"))

(DSum("総売り上げ","T01_日報")+Nz([総売り上げ],0))/(Date()-DMin("日付","T01_日報")+1-DateDiff("ww",DMin("日付","T01_日報"),Date(),2)-DCount("*","T_臨時休業日"))


定義域集計関数と呼ばれる関数(D○○の名前を持ついくつかの関数)はおおよそ同じような記述を行い、「(フィールド名, テーブル/クエリ名, 抽出条件)」のように引数を取ります

すでに出ている例では

DCount("*","T_臨時休業日","日付 Between #" & Date()-Day(Date())+1 & "# And #" & Date() &"#")

で使っていて、抽出条件部分は"日付 Between #" & Date()-Day(Date())+1 & "# And #" & Date() &"#"、実際に計算されるときは例えば

日付 Between #2025/8/1# And #2025/8/25#

のような文字列となって処理されます。この部分がSQLのWhere句に相当する部分となります


任意の日付を用いて特定の年月を対象としたいのであれば、「F01_日報」フォーム上に計算式を作るとして、上記計算では「今日(=Date())」としていたところをフォーム上のコントロールの参照に置き換えます
フォーム上の日付が最大の日付になる場合

"日付 Between #" & [日付]-Day([日付])+1 & "# And #" & [日付] &"#"

さかのぼりで登録することを想定する場合([日付]よりも後の日付がテーブルに保存されている場合=月末日付を求める必要がある場合)

"日付 Between #" & [日付]-Day([日付])+1 & "# And #" & DateSerial(Year([日付]),Month([日付])+1,0) &"#"

「日付」が入力されるまでは計算式はエラーになるので、Nz関数で補正して、未入力の場合は「今日」で仮に計算する等するとよいかもしれません([日付]Nz([日付],Date())

この抽出条件をそれぞれの定義域集計関数部分に指定してあげてください

DSum("総売り上げ","T01_日報")
↓
DSum("総売り上げ","T01_日報","日付 Between #" & [日付]-Day([日付])+1 & "# And #" & DateSerial(Year([日付]),Month([日付])+1,0) &"#")

これに加えて「T01_月初」テーブルから同じ年月の「家賃」の金額も追加したいです。

多分同様にできると思うので、まずはやってみてください

通報 ...