2017-09-20 4 views
1

Access에 SQL Server 연결 테이블이 있는데 특정 날짜 또는 데이터 범위 (예 : < 01/31/2017)에서 추출하도록 쿼리하려고합니다. 액세스 디자인 모드에서 다음과 같은 기준으로 시도했습니다. 하지만 올바르게 비교되지 않습니다.Access에서 SQL Server 연결 테이블의 날짜 비교 Access에 SQL Server 연결 테이블이있는 경우

SQL 서버 테이블의 필드는 datetime 데이터 형식이므로 디자인 모드의 속성에서 Access를 간단한 날짜 형식으로 Access 형식으로 지정했습니다.

SELECT dbo_LicensesLiveViewWithRevenue.BAN, 
     dbo_LicensesLiveViewWithRevenue.PTN, 
     dbo_LicensesLiveViewWithRevenue.SOC, 
     dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn, 
     Format([DeactivationDate],"Short Date") AS DeactOn, 
     dbo_LicensesLiveViewWithRevenue.RetailPrice, 
     dbo_LicensesLiveViewWithRevenue.WholeSalePrice, 
     dbo_LicensesLiveViewWithRevenue.AccountID 
FROM dbo_LicensesLiveViewWithRevenue 
WHERE (((dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn)< #2017/01/31#)) ORDER BY dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn; 

는 또한 행운과, 양식에서 매개 변수로 날짜를 통과하여 쿼리를 시도했다.

SELECT dbo_LicensesLiveViewWithRevenue.BAN, 
     dbo_LicensesLiveViewWithRevenue.PTN, 
     dbo_LicensesLiveViewWithRevenue.SOC, 
     dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn, 
     Format([DeactivationDate],"Short Date") AS DeactOn, 
     dbo_LicensesLiveViewWithRevenue.RetailPrice, 
     dbo_LicensesLiveViewWithRevenue.WholeSalePrice, 
     dbo_LicensesLiveViewWithRevenue.AccountID 
FROM dbo_LicensesLiveViewWithRevenue 
WHERE (((dbo_LicensesLiveViewWithRevenue.LicenseCreatedOn)<[Forms]![MainForm]![EndDate])); 

결과 : 내가 SQL에서 (나에게 정확한 날짜와 정확한 기록을주고있다 SQL 서버에서 직접 쿼리를 실행할 때

enter image description here

enter image description here

이 날짜 <이다 ' 20170131 '). Access에서는 동일한 기록 수가 있지만 결과 사진과 같이 날짜가 잘못 표시됩니다.

+2

정확하지 않은 결과를 * 표시하고 * 행운이없는 * 표시는 우리에게 도움이되지 않습니다. * 내가 뭘 잘못하고있어? * ... 우리는 무엇이 잘못되었는지조차 알지 못합니다. – Parfait

+0

더 많은 정보를 추가했습니다. –

+0

'# 01/31/2017 #'또는'CDate ("2017-01-31")'시도 – Parfait

답변

0

디자인보기에서 연결된 테이블을 여는 것이 좋습니다. 이 작업에 대한 읽기 전용 메시지를 무시하십시오.

해당 열이 더 새로운 날짜 형식 (datetime2)이고 표준 SQL 드라이버를 사용하여 링크하는 경우 해당 날짜는 날짜/시간이 아닌 TEXT 열로 표시됩니다.

디자인보기에서 링크 된 테이블을 빠르게 보면 날짜 또는 텍스트 열로 액세스하여 열을 볼 수 있습니다.

SQL 서버의 최신 형식 날짜를 사용하는 경우 테이블을 SQL 서버에 연결할 때 최신 11 (또는 최신) 드라이버를 사용해야합니다. 이전의 "기본"레거시 SQL 드라이버를 사용하는 경향이 있습니다. 레거시 드라이버가 설치되고 Windows에 포함되어 있으므로 각 워크 스테이션에서 Access를 실행할 때 드라이버를 설치할 필요가 없습니다.

그러나 SQL 서버에서 최신 날짜 형식을 사용하는 경우 기본 11 드라이버를 사용하여 테이블을 연결해야하며 Access 이외에 각 워크 스테이션에 기본 11 드라이버를 배포하고 설치해야합니다 또는 Access 런타임). 따라서 새로운 SQL 드라이버를 선호하고 사용해야하는 반면, 이러한 드라이버는 각 워크 스테이션에 설치해야한다는 단점이 있습니다.

테이블 디자인 모드에서 Access가 표시하는 열의 데이터 유형을 다시 확인하십시오. 텍스트 인 경우 네이티브 11 드라이버로 다시 링크해야합니다.

+0

감사합니다. –

+0

답변을 투표하지 않으셔서 감사드립니다. 현재 프로젝트에서 내가 가진 압박감을 알지 못합니다. 방금 해결 방법을 공유하려고했습니다. 그러나 IT 산업의 세계 빈곤이 영향을받을 것이기 때문에 나는 내 지위를 삭제하기로 결정했다. –