2012-04-20 21 views
5

La siguiente consulta es que me da el error de sintaxis "(missing operator)". El resultado deseado es una combinación de datos de las tablas [dbo_tbl*] y vistas [vw_*]. Todas las claves que he usado existen. ¿Algunas ideas?Error de sintaxis (falta operador) en MS-Access consulta

SELECT dbo_tbl_BOD.fpartno AS PartNumber, 
     dbo_tbl_BOD.frev AS RevisionIssue, 
     vw_DOCSwType.DocID, 
     vw_DRHRelfilter.Rev, 
     vw_DOCSwType.DocTypeDesc, 
     vw_DOCSwType.DocDesc, 
     vw_DOCSwType.DwgNoLegacy, 
     vw_DOCSwType.FileLocationOld, 
     vw_DRHRelfilter.DateCreated, 
     vw_DOCSwType.CreatedBy, 
     vw_DRHRelfilter.Rel, 
     vw_DRHRelfilter.RelLink 
FROM dbo_tbl_BOD 
LEFT JOIN vw_DRHRelfilter 
     ON ((dbo_tbl_BOD.DocID=vw_DRHRelfilter.DocID) 
    AND (dbo_tbl_BOD.frev=vw_DRHRelfilter.Rev)) 
LEFT JOIN vw_DOCSwType 
     ON (dbo_tbl_BOD.DocID=vw_DOCSwType.DocID) 
ORDER BY PartNumber; 
+0

Gracias por la edición bluefeet. Novato aquí, ¿hay información sobre el formato para la entrada en este sitio en alguna parte? Mi formato se eliminó de mi publicación de texto original. – cixelsyd

+0

Para formatear texto como código, seleccione el texto y luego presione el botón de muestra del código que se ve como "{}". También puede seleccionar el texto y luego presionar 'Ctrl + k'. Más información sobre las opciones de edición aquí: http://stackoverflow.com/editing-help – HansUp

Respuesta

6

Con acceso, cada unión necesidades paréntesis, dicen:

SELECT dbo_tbl_BOD.fpartno AS PartNumber, 
dbo_tbl_BOD.frev AS RevisionIssue, 
vw_DOCSwType.DocID, 
vw_DRHRelfilter.Rev, 
vw_DOCSwType.DocTypeDesc, 
vw_DOCSwType.DocDesc, 
vw_DOCSwType.DwgNoLegacy, 
vw_DOCSwType.FileLocationOld, 
vw_DRHRelfilter.DateCreated, 
vw_DOCSwType.CreatedBy, 
vw_DRHRelfilter.Rel, 
vw_DRHRelfilter.RelLink 
FROM (dbo_tbl_BOD 
LEFT JOIN vw_DRHRelfilter 
ON dbo_tbl_BOD.DocID=vw_DRHRelfilter.DocID 
AND dbo_tbl_BOD.frev=vw_DRHRelfilter.Rev) 
LEFT JOIN 
vw_DOCSwType 
ON dbo_tbl_BOD.DocID=vw_DOCSwType.DocID 
ORDER BY PartNumber; 

Si usted tiene una copia de MS Access, puede ver fácilmente los paréntesis requeridos mediante el uso de la ventana de diseño de consulta para construir su une .

Puede utilizar VBA para comprobar los tipos de campo, por ejemplo:

Dim rs As DAO.Recordset 
Dim fld As DAO.Field 

Set rs = CurrentDb.OpenRecordset("query1") 
For Each fld In rs.Fields 
    Debug.Print fld.SourceField, fld.SourceTable, _ 
     DLookup("SQLName", "DataTypeEnum", "DataValue=" & fld.Type) 
Next 

El DataTypeEnum tabla contiene descripciones de texto para los valores numéricos devueltos por fld.type.

DataValue SQLName 
1 Boolean 
2 Byte 
3 Integer 
4 Long 
5 Currency 
6 Single 
7 Double 
8 Date 
9 Binary 
10 Text 
11 LongBinary 
12 Memo 
15 GUID 
16 BigInt 
17 VarBinary 
18 Char 
19 Numeric 
20 Decimal 
21 Float 
22 Time 
23 TimeStamp
+0

Gracias @Remou. Ahora recibo un error de discrepancia de tipo al ejecutar la consulta. – cixelsyd

+0

Esto es probable que sea debido a uno de los partidos que se de diferente tipo, por ejemplo búsqueda de un tipo de texto a un campo de tipo numérico (columna), por ejemplo 'dbo_tbl_BOD.frev = vw_DRHRelfilter.Rev' – Fionnuala

+0

I puede ver fácilmente el tipo de datos en mis tablas de acceso, pero ¿cómo puedo determinar el tipo de datos devuelto en las vistas? – cixelsyd

Cuestiones relacionadas