みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

access ADO Between

str年月="16年09月"
dtm月初日 = str年月 & "01日"
dtm月末日 = DateSerial(Year(dtm月初日), Month(dtm月初日) + 1, 0)

rs.CursorLocation = adUseClient
rs.Open "Ttest", cn, adOpenStatic, adLockPessimistic
rs.Sort = "日付 DESC"
rs.Filter = "日付 Between #" & dtm月初日 & "# And #" & dtm月末日 & "#"

を実行すると
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
と言うエラーになります。

ADOのフィルタでBetween andは使えないのでしょうか?
もしくはどこかにシングルコーテーションを入れれば良いのでしょうか?

投稿日時 - 2016-09-06 22:14:51

QNo.9225427

暇なときに回答ください

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

Filter プロパティ
https://msdn.microsoft.com/ja-jp/library/cc426691.aspx?f=255&MSPPError=-2147217396

上記のよると、
「演算子」には次の中から 1 つを選択して使用します。<、>、<=、>=、<>、=、または LIKE。
との記述がありますので、Between and は使えないのでは。
不等号とANDで代用すればいいでしょう。
rs.Filter = "日付 >= #" & dtm月初日 & "# And 日付 <= #" & dtm月末日 & "#"

ただ、Filter を使うよりOpenするときに、Where句で抽出条件を設定したほうが高速らしいです。それなら、Between and も使えます。

rs.Open "SELECT * FROM Ttest WHERE 日付 Between #" & dtm月初日 & "# And #" & dtm月末日 & "#", cn, adOpenStatic, adLockPessimistic

投稿日時 - 2016-09-06 23:31:32

お礼

回答ありがとうございました。

投稿日時 - 2016-09-12 22:28:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問