문제

MS Access를 사용하여 SQL View에서 쿼리를 설계했습니다.

select floor(num1) from t1;

실행하면 "정의되지 않은 기능 바닥"이됩니다.

비슷한 오류가 발생합니다 Ceil, Mod,Power, Sign, Sqrt, Trunc, 그리고 initcap 기능.

액세스 데이터베이스 엔진의 SQL 구문에는 동등한 기능이 있습니까?

도움이 되었습니까?

해결책

바닥 ()을 int ()로 교체하십시오. 액세스 도움말 파일 (이 경우 쿼리 디자이너에서 F1을 치고”기능”을 검색하여이를 배웠습니다. VBA와 T-SQL 기능을 비교하는 도움말 주제로가되었습니다.

당신은 아마도 액세스 데이터베이스 엔진 SQL 참조. Jet/ACE 및 Access Expression Services를 통해 지원되는 기능에 대한 온라인 참조를 찾을 수 없습니다. 알려지지 않은 이유로, Access Help에는 Jet 3.0 이후 Jet/Ace 표현이 포함되지 않았 으며이 노화 된 자원은 마침내 1 년 또는 2 년 전에 MSDN에서 제거되었습니다.

외부 액세스를 사용하기위한 Jet/ACE 표현 서비스는 Access 2007 내부 SQL을 실행할 때 액세스 식 서비스를 사용하여 가능한 훨씬 작은 기능을 지원합니다. 광범위하게 말하면 VBA5 기능 (방법과 구별). 간단한 데이터 유형과 관련하여 (배열 또는 객체와는 별개) 액세스 사용자 인터페이스 외부에서 지원됩니다. 대략적인 기능 이름 목록은 'Jet 4.0 서비스 팩 3 이상으로 샌드 박스 모드 작업 사용'섹션을 참조하십시오. 이 MSDN 기사.

또한 VBE 도움의 기능 참조는 시작 장소 여야합니다.

도움말 파일은 완벽하지는 않지만 약간의 검색을 통해 필요한 것을 얻을 수 있습니다.

다른 팁

Public Function Floor(ByVal x As Double) As Double
'Be Because VBA does not have a Floor function.
'Works for positive numbers
'Turns 3.9 -> 3
'Note: Round(3.9) = 4

    Dim s As String, dPos As Integer
    s = CStr(x)
    dPos = InStr(s, ".")
    Floor = CLng(Left(s, dPos - 1))
End Function

언급했듯이 바닥은 액세스 할 수 없으므로 int ()를 대안으로 사용해야합니다. 바닥 사용을 고집하면 아래와 유사한 MDB 파일에서 항상 VBA 모듈 함수를 만들 수 있지만 아마도 과잉 일 수 있습니다.

Public Function floor(dblIn As Double, dec As Integer) As Double
  decPosition = InStr(Str(dblIn), ".")
  x = Left(dblIn, decPosition + dec - 1)
  floor = x
End Function

위에서 설명한 다른 수학 작업과 유사 하게이 기능 세트를 만들기 위해 추가 기능을 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top