• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS2003 追加クエリの条件設定について)

ACCESS2003 追加クエリの条件設定について

このQ&Aのポイント
  • ACCESS2003の追加クエリの条件設定についての質問です。条件設定用のフォームAで指定された条件を元にテーブルBから値を抽出し、テーブルCに書き込む追加クエリを作成しています。
  • フォームAには対象日と月で出力のチェックボックスがあります。テーブルBには試験開始日や試験終了日などの項目フィールドがあります。追加クエリではフォームAの情報を使って試験開始日と試験終了日を条件にデータを抽出しています。
  • 質問者さんはフォームAの月で出力のチェックボックスにチェックがついた場合に、フォームAの対象日の月とテーブルBの試験開始日や試験終了日の月を比較し、同じ月のデータを抽出したいと言っています。しかし、追加クエリの抽出条件を記述してもデータがヒットしないようです。どこに問題があるのか教えていただきたいとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

WHERE句にIIfはあまり使いません。 ([Forms]![F_A]![月で出力] AND Year([試験開始日])=Year([Forms][F_A]![対象日]) AND Month([試験開始日])=Month([Forms]![F_A]![対象日]) AND Year([試験終了日])=Year([Forms][F_A]![対象日]) And Month([試験終了日])=Month([Forms]![F_A]![対象日])) OR ((NOT [Forms]![F_A]![月で出力]) AND [試験開始日]<=[Forms]![F_A]![対象日] AND [試験終了日]>=[Forms]![F_A]![対象日]) これでどうなるでしょう?

msn-q
質問者

お礼

nda23様 ご回答ありがとうございます、またレスが遅くなり申し訳ありません。 頂いた回答を元にやってみました。 が、どうしても0件抽出になってしまいます。 一つずつ追っていくと、[Forms][F_A]![対象日]にMonth、Year関数を使うと 日付/時刻型の基準値「1899/12/30」の値を持ってきてしまっているようです。 [Forms][F_A]![対象日]の書式や定型入力を日付にしても変わらなかった為、 Formatを用いて無理やり"YYYY/MM/DD"型に変換した後、Month・Yearを 当てると正常に月・年が取り出せました。 後、チェックボックスの評価はTrue/False、-1,0でないと反映しないようです。 (NOTでうまく動きませんでした) 結論としまして、追加クエリに フィールド:IIf([[Forms]![F_A]![月で出力]=True,True,[試験開始日]<=[Forms]![F_A]![対象日] 抽出条件:True AND Year([試験開始日]) = Year(Format([Forms]![F_A]![対象日])) AND Month([試験開始日]) = Month(Format([Forms]![F_A]![対象日])) フィールド:IIf([[Forms]![F_A]![月で出力]=True,True,[試験終了日]>=[Forms]![F_A]![対象日] 抽出条件:True AND Year([試験開始日]) = Year(Format([Forms]![F_A]![対象日])) AND Month([試験開始日]) = Month(Format([Forms]![F_A]![対象日])) と二つのフィールドを設けて意図するデータを抽出する事が出来ました。 お手を煩わせましたが何とか出来て良かったです・・・・