2017-09-29 1 views
0

RDLC 보고서에이 기능이 있습니다. 나는 Ms 액세스에서 문자열을 만들었습니다. (그냥 똑바로 쓰는 것이 나쁘기 때문에) MS Access에서 작동하며 내 PC의 Vis Studio에서 작동합니다. EXE로 컴파일 할 때도 작동합니다. 정의되지 않음 기능 : MONTHNAME - OLEDB

그러나 ONE 노트북에 어떤 도움이 좋을 것
SELECT MonthName(Month(tblpack.cycledate)) AS MonthDate, Year(tblpack.cycledate) AS YearDate, Sum(tblpack.weeksinpack) AS SumOfweeksinpack, Month(tblpack.cycledate) AS MonthOrder 
FROM tblpatient INNER JOIN tblpack ON tblpatient.patientid = tblpack.patientid 
WHERE (((tblpack.iscommunity)=True) AND ((tblpatient.over5med)=True) AND ((tblpack.isrepat)=True) AND ((tblpack.cycledate) Between ? And ?) AND ((tblpack.packeduser) Is Not Null)) OR (((tblpack.iscommunity)=True) 
AND ((tblpatient.over5med)=True) AND ((tblpack.isconcession)=True) AND ((tblpack.cycledate) Between ? And ?) AND ((tblpack.packeduser) Is Not Null)) 
GROUP BY MonthName(Month(tblpack.cycledate)), Year(tblpack.cycledate), Month(tblpack.cycledate) 
ORDER BY MonthName(Month(tblpack.cycledate)), Year(tblpack.cycledate) 

표현

정의되지 않은 기능 MONTHNAME 함께 올라오고있다. 문자열이 동일하고 연결이 동일 할 때 왜 다른 컴퓨터가 아닌 하나의 컴퓨터에서 작동하는지 이해할 수 없습니다!

Gangel

답변

1

당신은 액세스 응용 프로그램 세션 내에서 실행되는 쿼리에 대해서만 사용할 수있는 샌드 박스 기능 때문에 ADO.NET과 MonthName 기능을 사용할 수 없습니다.

사용자 정의 사용자가 작성한 VBA 기능뿐만 아니라 SQL 쿼리에 포함 할 때 많은 내장 VBA 언어 기능은 마이크로 소프트 액세스에 의해 실행됩니다 This article이 문제와 관련된 액세스 동작을 설명했다. 해결 방법으로

(ADO, ADO.NET 등을 통해 실행될 때) 불행하게도 Jet 데이터베이스 엔진에 사용할 수있는 기능은 전체 월 이름을 표시 MMMM 형식 문자열로 Format 기능을 사용할 수 제한됩니다

SELECT Format(tblpack.cycledate, 'MMMM') AS MonthDate, 
     Year(tblpack.cycledate) AS YearDate, Sum(tblpack.weeksinpack) AS SumOfweeksinpack, 
     Month(tblpack.cycledate) AS MonthOrder 
FROM tblpatient 
INNER JOIN tblpack ON tblpatient.patientid = tblpack.patientid 
WHERE (((tblpack.iscommunity)=True) 
     AND ((tblpatient.over5med)=True) 
     AND ((tblpack.isrepat)=True) 
     AND ((tblpack.cycledate) Between ? And ?) 
     AND ((tblpack.packeduser) Is Not Null)) 
     OR (((tblpack.iscommunity)=True) 
     AND ((tblpatient.over5med)=True) 
     AND ((tblpack.isconcession)=True) 
     AND ((tblpack.cycledate) Between ? And ?) 
     AND ((tblpack.packeduser) Is Not Null)) 
GROUP BY Format(tblpack.cycledate, 'MMMM'), Year(tblpack.cycledate), Month(tblpack.cycledate) 
ORDER BY Format(tblpack.cycledate, 'MMMM'), Year(tblpack.cycledate) 

참고 :

How to configure Jet 4.0 to prevent unsafe functions from running in Access 2003

month name from date field in c#.net from access database

+0

감사합니다. Tetsuya, 내 질문은 다음과 같습니다. 두 컴퓨터에서 내 쿼리가 작동하지만 세 번째 컴퓨터에서는 작동하지 않는 이유는 무엇입니까? –

+1

해당 PC의 구성 및 버전이 정확히 동일합니까? 이 문제는 MSJet 엔진을 사용할 때 (ACE 엔진이 비슷한 문제를 겪는 지 잘 모름) 발생하며, 다른 구성 설정에 따라 결과가 다를 수 있습니다. –

+0

고마워, 설명해. 어쩌면 액세스 버전 일 수 있습니다. 귀하의 질의로 변경되었습니다. 도움을 주셔서 감사합니다! :) –

관련 문제