[英]Syntax error (missing operator) in query expression
I have the following SQL Statement that works fine in SQL Server but in Access gets me an error 我有以下在SQL Server中正常运行的SQL语句,但在Access中却出现错误
'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
Is this a Access SQL Size problem? 这是Access SQL大小问题吗? Any ideas? 有任何想法吗?
MS Access is very particular with the parentheses in queries. MS Access在查询括号中非常特别。 When you have multi-table joins a pair of parentheses must be around each join: 当您有多表联接时,每个联接必须在一对括号内:
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
To add to this. 为此。 If you are creating a Pass-Through Query, you need to identify the connections string before declaring the SQL. 如果要创建直通查询,则需要在声明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
'ERM_HAZARD.[HAZARDID] = ERM_XREF_HAZARD_CAT.[HAZARDID] INNER JOIN ERM_HAZARDSTATUS ON ERM_HAZARD.HAZARDSTATUSID = ERM_HAZARDSTATUS.HAZARDSTATUSI' 'ERM_HAZARD。[HAZARDID] = ERM_XREF_HAZARD_CAT。[HAZARDID] ERM_HAZARD.HAZARDSTATUSID上的内连接ERM_HAZARDSTATUS = ERM_HAZARDSTATUS.HAZARDSTATUSI'
Missing de "D" at the end of HAZARDSTATUSID HAZARDSTATUSID末尾缺少“ D”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.