- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS2003 追加クエリの条件設定について)
ACCESS2003 追加クエリの条件設定について
このQ&Aのポイント
- ACCESS2003の追加クエリの条件設定についての質問です。条件設定用のフォームAで指定された条件を元にテーブルBから値を抽出し、テーブルCに書き込む追加クエリを作成しています。
- フォームAには対象日と月で出力のチェックボックスがあります。テーブルBには試験開始日や試験終了日などの項目フィールドがあります。追加クエリではフォームAの情報を使って試験開始日と試験終了日を条件にデータを抽出しています。
- 質問者さんはフォームAの月で出力のチェックボックスにチェックがついた場合に、フォームAの対象日の月とテーブルBの試験開始日や試験終了日の月を比較し、同じ月のデータを抽出したいと言っています。しかし、追加クエリの抽出条件を記述してもデータがヒットしないようです。どこに問題があるのか教えていただきたいとのことです。
- みんなの回答 (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]![対象日]) これでどうなるでしょう?
お礼
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]![対象日])) と二つのフィールドを設けて意図するデータを抽出する事が出来ました。 お手を煩わせましたが何とか出来て良かったです・・・・