2012-01-25 3 views
0

私はADODB 2.xレコードセットを持っており、レコードセットのDateTime列/フィールドにフィルタを適用しようとしています。DateTime値のADODB.Recordset.Filterプロパティを正しく設定するにはどうすればよいですか?

Windowsで国際日付形式設定がどのように設定されているか分かりません。たくさんのグーグルでは、Windowsの日付形式の設定によって、Filterプロパティの必要な日付形式が決定されるか、またはいつもUS日付形式で表示されるかどうかはわかりません。 (もちろん、MSのドキュメントはこれに気づいていません)。

このように、このコード行はどのように正しく書かれているのでしょうか? dteStartDateは、日付と時刻のコンポーネントの両方が含まれている
rs.Filter = "StartDateTime >= " & dteStartDate 

...。

答えて

0

フィルタの形式は、レコードセットの値と同じ形式である必要があります。私はちょうどMS SQLサーバーからのレコードセットで同じ問題に遭遇しました。レコードセットには、YYYY-MM-DD形式の日付が含まれていました。

この

に失敗しました:

CalendarRS.filter = "DateField = #" & datevalue(DisplayDate) & "#" 

日付が一致した場合であっても、レコードがフィルタリングされたレコードセットではなかったです。チェックすると、CalendarRS.filterに格納された値でした "のDateField =#08/2014分の29#" これはスラッシュが含まれていることと、順序が(MM/DD/YYYY)

これが成功した異なることに注意してください:

CalendarRS.filter = "DateField = #" & year(datevalue(DisplayDate)) & "-" & right("00" & month(datevalue(DisplayDate)),2) & "-" & right("00" & day(datevalue(DisplayDate)),2) & "#" 

このチェックボックスをオンにすると、CalendarRS.filterに格納されている値は "DateField =#2014-08-2014#"でした。これは、適切なフィルタを適用したレコードセットを返しました。

完全な日付と時刻の場合は、同じことを行い、時、分、秒を追加する必要があります。

CalendarRS.filter = "DateField = #" & year(datevalue(DisplayDate)) & "-" & right("00" & month(datevalue(DisplayDate)),2) & "-" & right("00" & day(datevalue(DisplayDate)),2) & " " & Right("00" & Hour(datevalue(DisplayDate)),2) & ":" & Right("00" & Minute(datevalue(DisplayDate)),2) & ":" & Right("00" & Second(datevalue(DisplayDate)),2) & "#" 
関連する問題