Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2010)
日付の抽出を自動的に変える
投稿日時: 21/09/01 16:28:09
投稿者: ラングドシャ

たびたびの投稿申し訳ありません。
よろしくお願いいたします。
 
テーブル:T_アイテムマスタ
フィールド:ITEMDATE  に、"2103"というように年月が入力されています。(数値型)
 
これをクエリにて、抽出条件を次のようにしています。
>(Year(Date())*100+Switch(Month(Date()) Between 3 And 8,2,Month(Date())<3,-92,True,8)) Mod 10000
(かなり前ですがこちらで教えていただいた記憶があります)
 
今年の場合、3月〜8月は2103〜2108が抽出条件となり、9月になれば自動的に9月〜2月まで、2109〜2202が抽出条件と切り替わります。
 
今回この条件を以下のように変えたいのですが、どのようにすればよいでしょうか?
 
T_アイテムマスタのフィールド:ITEMDATEには9月になったからといって、即2109の値が入力されないため、値が入力されるまでデータが0件になってしまう。
そのため、9月に入っても2109がない場合は、まだ2103〜2108の条件のままにしたい。
本日が9月かつ2109の値が入力された場合に切り替える。
 
来年3月以降も同様で、本日が3月かつ2203の値があれば切り替える。といった具合です。
 
よろしくお願いいたします。

回答
投稿日時: 21/09/01 17:00:49
投稿者: Suzu

21年 9月の データが入ったかどうか は DCount関数 にて 導くことが可能です。
 
DCOUNT("*","T_アイテムマスタ","ITEMDATE=2109")
 
これを、条件に組み込む事になります。
  2109 の部分は、先の抽出条件の数式を参考に考えてみてください。
 
 
 
私なら一つのクエリ にそこまで求める事はしないでしょうね。
・前期のクエリを別に作る
・マクロや、VBAの 条件分岐に、 先のDCOUNTの戻り値 を設定し
  開くクエリ(フォーム[のレコードソース])を変えます

回答
投稿日時: 21/09/01 17:13:53
投稿者: よろずや

ラングドシャ さんの引用:
テーブル:T_アイテムマスタ
フィールド:ITEMDATE  に、"2103"というように年月が入力されています。(数値型)
 
これをクエリにて、抽出条件を次のようにしています。
>(Year(Date())*100+Switch(Month(Date()) Between 3 And 8,2,Month(Date())<3,-92,True,8)) Mod 10000
本日が9月かつ2109の値が入力された場合に切り替える。
 
来年3月以降も同様で、本日が3月かつ2203の値があれば切り替える。といった具合です。
Month(Date()で今日の月を取得していますが、代わりに
T_アイテムマスタのフィールド:ITEMDATEの最大値を使えばよろしいかと

投稿日時: 21/09/01 17:50:00
投稿者: ラングドシャ

Suzu様
回答ありがとうございます。
なるほど、DCount関数なんですね。
Accessにはあまり慣れていないのでいただいた内容を参考にチャレンジしてみます。
 
 
よろずや様
回答ありがとうございます。
最大値を使う方法もあるのですね。
こちらも、ちょっとじっくり考えてみます。

投稿日時: 21/09/02 17:03:46
投稿者: ラングドシャ

Suzu様
よろずや様
 
ちょっと別の仕事で忙しくなりすぐに試せなくなりました。
ヒントをいただいたので一旦解決としたいと思います。
落ち着いたら試してみて、わからない点があれば改めて質問させていただきます。
ありがとうございました。