2009-12-21 5 views
0

VBA를 통해 날짜/시간을 Access DB의 날짜/시간과 비교하는 방법은 무엇입니까?VBA를 통해 날짜/시간과 Access DB의 날짜/시간을 비교하십시오.

쿼리는 나는 단지 날짜를 비교 달성

adoRS.Open "SELECT * FROM currentpositions WHERE ((currentpositions. 
[dateLT])=" & "#" & date_from_message & "#" & ")", adoConn, adOpenStatic, 
adLockOptimistic 

를 사용합니다.
아무 생각 없습니까?

감사
Camastanta

+0

날짜는 어떤 형식입니까? –

답변

3
adoRS.Open "SELECT * FROM currentpositions WHERE DateValue(currentpositions. 
[dateLT]) = DateValue(" & "#" & date_from_message & "#)", adoConn, adOpenStatic, 
adLockOptimistic 

참조는, 위의 경우 도움이됩니다.
DateValue은 주어진 날짜/시간에서 날짜 부분을 추출합니다. 따라서 시간 부분을 무시하고 날짜를 비교하는 데 사용할 수 있습니다.

2

IMHO 문자열 연결을 사용하여 SQL 문을 작성하지 마십시오. 대신 parameterized SQL queries을 사용하십시오. 이렇게하면 날짜/시간 비교를 통해 직면 한 문제에서 벗어날 수 있습니다.

+0

나는 동의하지 않는다. 매개 변수화 된 SQL 쿼리를 사용하면 코드를 유지 관리하고 테스트하기 위해 돌아 가야 할 때 작업하기가 훨씬 더 어렵습니다. –

+0

문자열에 연결하는 값의 출처에 따라 달라집니다. 사용자가 자유 텍스트를 입력 할 수없는 컨트롤에서 오는 경우 Access에서 완전히 안전합니다. 날짜 마스크가있는 텍스트 필드 나 날짜 선택기 컨트롤로만 편집 할 수있는 텍스트 필드는 어떠한 형태로도 SQL 삽입을받지 않습니다. –

+0

@ 토니 : 왜 유지 보수가 더 어려워 집니까? @David : 나는 그것이 단지 SQL 주입의 문제라고 생각하지 않습니다. 또한 날짜 서식 문제 등에서 사용자를 절약 할 수 있습니다. 또한 Access 응용 프로그램이 SQL Server에 의해 뒷받침되는 경우 매개 변수가있는 쿼리를 사용하면 SQL Server가 더 나은 성능을 제공하는 쿼리 계획을 캐시 할 수 있습니다. –

0

시스템의 날짜가 yyyy-mm-dd 또는 dd-mm-yyyy 형식입니까? 그렇다면 Return Dates in US #mm/dd/yyyy# format을보고 mm-dd-yyyy로 날짜를 변환하면 Access가 올바르게 작동 할 수 있습니다.

관련 문제