Access (一般機能)

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

 
(Windows 7 Professional : Access 2013)
システム日付を判断して、条件を追加する方法
投稿日時: 17/12/13 10:34:14
投稿者: hato

お世話になります。
 
クエリで、システム日付を判断して条件を追加するには
どのように書けばよいでしょうか?
 
現在のクエリ
得意先コード    得意先名
0001    得意先A
0002    得意先B
0005    得意先E
 
2017/12/30までは0002の得意先Bを出力したくないのですが
 
条件
WHERE
得意先コード NOT IN ('0003','0004)
OR (得意先CD<>"0002" AND Format(Date(),"yyyymmdd")>"20171230")
としても、0002が表示されてしまいます。
 
SQLでそもそも実現可能でしょうか?どうぞよろしくお願いします。

回答
投稿日時: 17/12/13 11:44:39
投稿者: hatena
投稿者のウェブサイトに移動

hato さんの引用:

2017/12/30までは0002の得意先Bを出力したくないのですが

2017/12/31以降は出力するということですね。
 
OR (得意先CD="0002" AND Format(Date(),"yyyymmdd")>"20171230")
 
じゃないですか。
 
なお、日付はわざわざFormatで変換するという無駄なことはせずに直接比較した方がいいのでは。
 
OR (得意先CD="0002" AND Date()>#2017/12/30#)

投稿日時: 17/12/13 13:31:21
投稿者: hato

hatenaさん、早速のご回答ありがとうございます。
 
得意先CD="0002の間違いですね。ありがとうございます。
ただ、それで実行しても0002が出てきてしまいます。
デザインビューはこんな感じです。
 
    得意先CD                        Date()
 --------------------------------------------------------
抽出条件 not in ('0003','0004')        
または  "0002"                    >#2017/12/30#
 
この設定でSQLを見ても、教えていただいたとおりになっています。
他に何か必要なことあるでしょうか?
 
よろしくお願いします。

回答
投稿日時: 17/12/13 14:09:06
投稿者: hatena
投稿者のウェブサイトに移動

なるほど、
得意先コード NOT IN ('0003','0004)
があるので複雑ですね。
 

WHERE
Not
 (得意先コード IN ('0003','0004')
  OR
  (得意先コード='0002' AND  Date()<=#2017/12/30#)
 );

 
でどうですか。
下記の方が分かりやすいかな。
 
WHERE
得意先コード Not IN ('0003','0002','0004')
OR
(得意先コード="0002" AND Date()>#2017/12/30#);

投稿日時: 17/12/13 14:34:48
投稿者: hato

ORだから、1つ目の条件で0002を含んでいて出てきていたんですね。
 
教えていただいた方法で、うまく結果がでました。
2つの書き方もとても参考になりました。
 
お手数おかけしてすいませんでした。
どうもありがとうございました!!