Accessでクエリに式を入れてあるのですが、
その式をSQLのwhere句で抽出できないものでしょうか?
クエリ(管理台帳クエリ)のフィールドの式は
次回検査日: DateAdd("yyyy",[検査周期],[最終検査日])
となっており、VBAで
strSQL = "select 次回検査日 from 管理台帳クエリ where 次回検査日 <= #" & txtDate & "#"
lstTbl.RowSource = strSQL
を実行してもlstTblには何も表示されません。
txtDateは日付の入っているテキストボックス、lstTblはリストボックスです。
検査周期と最終検査日は、管理台帳テーブルに定義されているフィールドで、
検査周期には、1~3の数字が入っています。
ちなみに最終検査日に変えてみると、問題なく抽出できます。
いろいろ調べてもよくわからず、煮詰まっています。
次回検査日をテーブルに定義するしかないのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
確かめたわけではないですが、下記の式だとどうでしょうか。
strSQL = "select 次回検査日 from 管理台帳クエリ where CDate(次回検査日) <= #" & txtDate & "#"
あるいは、
strSQL = "select 次回検査日 from 管理台帳クエリ where 最終検査日 <= DateAdd("yyyy",-[検査周期], #" & txtDate & "#)"
この回答への補足
もしや、と思って、クエリのフィールドの式を
次回検査日: CDate(DateAdd("yyyy",[検査周期],[最終検査日]))
としてみましたが、同じでした。
なお、「order by句」についても、次回検査日を入れると挙動不審です(泣
前にwhere句があるとソートされるのですが、
where句がないとリストが真っ白に‥。
↓正常に走るSQLの例
"select 管理台帳ID, 次回検査日 from 管理台帳クエリ where 部署ID = '" & txtBusho & "' order by 次回検査日 desc, 管理台帳ID"
↓リストが真っ白になるSQLの例
"select 管理台帳ID, 次回検査日 from 管理台帳クエリ order by 次回検査日 desc, 管理台帳ID"
なんどウォッチ式を確認しても、SQL文に不備はないような気がしますけれども‥。
ご回答ありがとうございます。
CDate関数の使用ですが、ダブルクオーテーションでくくられたSQL文の中にVBA関数を記述しても、機能しないようです。
DateAdd関数については、SQL構文の外に出して、
strSQL = "select 次回検査日 from 管理台帳クエリ where 最終検査日 <= " DateAdd("yyyy", -RS1!検査周期, txtDate)
と書けばうまくいくかもしれません。
ただこれだと2回SQLを実行(1回目は検査周期の抽出)しなければならないですね。それでも単純な計算式にもかかわらずテーブルにフィールドを増やさなければならないという無駄よりは、ましかもしれませんが‥。
No.2
- 回答日時:
#1さんの回答へ横レスさせて下さい
文字列中に”を含めたい場合は、2重に書くとOKです。
strSQL = "select 次回検査日 from 管理台帳クエリ where 最終検査日 <= DateAdd("”yyyy””,-[検査周期], #" & txtDate & "#)"
ご回答ありがとうございます。
やはり最終検査日を条件として次回検査日を抽出するしかないようですね。
hatena1989様への補足でも書きましたが、
クエリに式を入れて、それを抽出・ソート条件に使うと、どうも誤動作するような感じです。
最終検査日を使って抽出がうまくいったとしても、次回検査日でのソートがおかしくなってしまい、お手上げ状態‥。
最終検査日に1年か2年か3年を足すだけの次回検査日を、わざわざ台帳マスタにフィールド定義するのが野暮な感じですけれども、仕方がないので定義しました。
台帳に実在するフィールドのクエリですと、抽出・ソートとも正常に動作しています。
仕様の限界なのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- 妊活 妊娠の可能性 5 2023/03/16 11:04
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 妊活 着床出血と疑われる出血が本日ありました。 薄まった血のような色でした。一回きりの出血です。 早期妊娠 1 2023/02/20 20:08
- 妊活 妊娠検査薬について 妊娠を希望しています。 生理は29-31日程度の周期で来ていましたが、今月はまだ 2 2023/05/08 14:35
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- 妊娠 妊娠検査薬蒸発線 1 2022/07/23 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
ある範囲のセルから任意の値を...
-
検便についてです。 便は取れた...
-
2つの数値のうち、数値が小さい...
-
一番多く表示のある値(文字列...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
エクセルのラベルの値(文字列...
-
EXCELで条件付き書式で空白セル...
-
値が入っているときだけ計算結...
-
MIN関数で空白セルを無視したい...
-
甲状腺が腫れているが血液検査...
-
エクセルで数式の答えを数値と...
-
テスターで断線を調べる方法教...
-
エクセルでθを求めたい。
-
小数点以下を繰り上げたものを...
-
中出しをするとお腹が痛い・・・。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報