2013-03-13 2 views
1

나는 SQL 서버에서 잘 작동하지만 액세스 나에게 오류구문 오류 (누락 된 연산자)

'ERM_HAZARD.[HAZARDID] = ERM_XREF_HAZARD_CAT.[HAZARDID] 
INNER JOIN ERM_HAZARDSTATUS 
ON ERM_HAZARD.HAZARDSTATUSID = ERM_HAZARDSTATUS.HAZARDSTATUSI' 

SELECT erm_hazard.hazardid AS PKTrans, 
     erm_hazard.extref  AS No, 
     erm_cat.name   AS CaseType, 
     erm_hazard.created  AS CaseDate, 
     erm_hazard.name  AS Title, 
     erm_hazard.description AS DescriptionTrans, 
     erm_organisation.name AS ResponsibleUnit, 
     erm_hazard.reviewdate AS CaseDeadline, 
     erm_hazardstatus.name AS Status, 
     erm_organisation.name AS UnitInCharge, 
     erm_personel.name  AS PersonInCharge 
FROM (erm_personel 
     INNER JOIN (erm_organisation 
        INNER JOIN erm_hazard 
          ON erm_organisation.[organisationid] = 
           erm_hazard.[organisationid]) 
       ON erm_personel.[personelid] = erm_hazard.[personelid]) 
     INNER JOIN (erm_cat 
        INNER JOIN erm_xref_hazard_cat 
          ON erm_cat.[catid] = erm_xref_hazard_cat.[catid]) 
       ON erm_hazard.[hazardid] = erm_xref_hazard_cat.[hazardid] 
     INNER JOIN erm_hazardstatus 
       ON erm_hazard.hazardstatusid = erm_hazardstatus.hazardstatusid 
WHERE (((erm_xref_hazard_cat.periodid) = (SELECT Max(
              erm_xref_hazard_cat.periodid) 
               FROM erm_xref_hazard_cat))) 
ORDER BY erm_xref_hazard_cat.periodid DESC, 
      erm_hazard.hazardid, 
      erm_cat.name 

얻을 이것을 액세스 SQL 크기가 다음과 같은 SQL 문을 문제? 아이디어가 있으십니까?

+0

오류를 지정하십시오. –

+2

쿼리 디자인 창을 사용하여 조인을 끌어다 놓아 올바른 MS Access 구문을 가지고 있는지 확인할 수 있습니다. – Fionnuala

답변

8

MS 액세스는 쿼리의 괄호와 매우 흡사합니다. 다중 테이블 조인이있는 경우 괄호 쌍은 각 조인 주위에 있어야합니다.

SELECT ERM_HAZARD.HAZARDID AS PKTrans, 
    ERM_HAZARD.EXTREF AS No, 
    ERM_CAT.NAME AS CaseType, 
    ERM_HAZARD.CREATED as CaseDate, 
    ERM_HAZARD.NAME AS Title, 
    ERM_HAZARD.DESCRIPTION AS DescriptionTrans, 
    ERM_ORGANISATION.NAME AS ResponsibleUnit, 
    ERM_HAZARD.REVIEWDATE AS CaseDeadline, 
    ERM_HAZARDSTATUS.NAME as Status, 
    ERM_ORGANISATION.NAME AS UnitInCharge, 
    ERM_PERSONEL.NAME AS PersonInCharge 
FROM ((((ERM_PERSONEL 
INNER JOIN ERM_HAZARD 
    ON ERM_PERSONEL.[PERSONELID] = ERM_HAZARD.[PERSONELID]) 
INNER JOIN ERM_ORGANISATION 
    ON ERM_ORGANISATION.[ORGANISATIONID] = ERM_HAZARD.[ORGANISATIONID]) 
INNER JOIN ERM_XREF_HAZARD_CAT 
    ON ERM_HAZARD.[HAZARDID] = ERM_XREF_HAZARD_CAT.[HAZARDID]) 
INNER JOIN ERM_CAT 
    ON ERM_CAT.[CATID] = ERM_XREF_HAZARD_CAT.[CATID]) 
INNER JOIN ERM_HAZARDSTATUS 
    ON ERM_HAZARD.HAZARDSTATUSID = ERM_HAZARDSTATUS.HAZARDSTATUSID 
WHERE ERM_XREF_HAZARD_CAT.PERIODID= (SELECT MAX(ERM_XREF_HAZARD_CAT.PERIODID) 
            FROM ERM_XREF_HAZARD_CAT) 
ORDER BY ERM_XREF_HAZARD_CAT.PERIODID DESC, ERM_HAZARD.HAZARDID, ERM_CAT.NAME 
0

이 내용을 추가하십시오. 통과 쿼리를 작성하는 경우 SQL을 선언하기 전에 연결 문자열을 식별해야합니다.

sub test() 
Dim dbs As Database 
Dim qdf As DAO.QueryDef 
Dim rstSQL As DAO.Recordset 
Dim strSQL As String 

On Error GoTo errTrap 

Set dbs = CurrentDb 

Set qdf = dbs.CreateQueryDef("") 

qdf.Connect = ConStringMailing 
qdf.ReturnsRecords = True 

qdf.SQL = "Select * FROM TABLE" 
Set rstSQL = qdf.OpenRecordset 

errTrap: 
end sub 
0

'ERM_HAZARD. HAZARDID = ERM_XREF_HAZARD_CAT. HAZARDID] INNER는 ERM_HAZARD.HAZARDSTATUSID = ON ERM_HAZARDSTATUS.HAZARDSTATUSI ERM_HAZARDSTATUS 가입'

가 HAZARDSTATUSID 끝에 "D"드 누락

관련 문제