2012-01-25 2 views
0

ADODB 2.x 레코드 집합이 있고 레코드 집합의 DateTime 열/필드에 필터를 적용하려고합니다.ADODB.Recordset.Filter 속성을 DateTime 값으로 올바르게 설정하는 방법은 무엇입니까?

어떻게 Windows에서 국제 날짜 형식 설정을 구성했는지 알 수 없습니다. 인터넷 검색에서 Windows 날짜 형식 설정에 따라 필터 속성에 대해 필요한 날짜 형식이 결정되거나 항상 미국 날짜 형식으로 예상되는지 여부는 확실하지 않습니다.

그럼, 어떻게 하나 제대로 코드 줄을 쓰기 않습니다. (물론, MS 문서는이 전혀 참고하지 않습니다), 그래서 사용자가 Windows에서 구성한 것을 날짜 형식 걱정할 필요가 없습니다 :

rs.Filter = "StartDateTime >= " & dteStartDate 

... dteStartDate에는 날짜와 시간 구성 요소가 모두 들어 있습니다.

답변

0

필터의 형식은 레코드 집합의 값과 동일한 형식이어야합니다. 방금 MS SQL 서버에서 레코드 집합을 사용하여 동일한 문제가 발생했습니다. 레코드 세트에는 YYYY-MM-DD 형식의 날짜가 포함됩니다.

실패 :

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

날짜가 일치하더라도, 레코드가 필터링 된 레코드에 없었다. 선택하면 CalendarRS.filter에 저장된 값이었다 "하여 DateField = # 08/2,014분의 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) & "#"