2012-04-20 5 views
5

Следующий запрос дает мне синтаксическую ошибку "(missing operator)". Желаемый результат представляет собой комбинацию данных из таблиц [dbo_tbl*] и просмотров [vw_*]. Все ключи, которые я использовал, существуют. Есть идеи?Ошибка синтаксиса (отсутствующий оператор) в запросе MS-Access

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

Благодарим за редактирование bluefeet. Новичок здесь, есть ли информация о форматировании для записи на этом сайте? Мое форматирование было удалено из моего исходного текстового сообщения. – cixelsyd

+0

Чтобы форматировать текст как код, выберите текст, затем нажмите кнопку образца кода, которая выглядит как «{}». Вы также можете выбрать текст, затем нажмите «Ctrl + k». Подробнее о вариантах редактирования здесь: http://stackoverflow.com/editing-help – HansUp

ответ

6

с доступом, каждый присоединиться к потребности круглые скобки, говорят:

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; 

Если у вас есть копия MS Access, вы можете легко увидеть необходимые круглые скобки, используя окно конструктора запросов, чтобы создать свой присоединяется ,

Вы можете использовать VBA для проверки типов полей, например:

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 

В таблице DataTypeEnum содержит текстовые описания для числовых значений, возвращаемых 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

Спасибо @Remou. Теперь я получаю ошибку несоответствия типа при выполнении запроса. – cixelsyd

+0

Скорее всего, это связано с тем, что одно из совпадений имеет различный тип, например, сопоставление текстового типа с полем числового типа (столбец), для 'example dbo_tbl_BOD.frev = vw_DRHRelfilter.Rev' – Fionnuala

+0

Я легко вижу тип данных в моих таблицах доступа, но как определить тип данных, возвращаемый в представлениях? – cixelsyd

Смежные вопросы