2012-04-20 22 views
5

Aşağıdaki sorgu bana "(missing operator)" sözdizimi hatası veriyor. İstenen çıktı, tablo [dbo_tbl*]'daki verilerden ve [vw_*] görüntülerinden oluşan bir kombinasyonun birleşimidir. Kullandığım tüm anahtarlar var. Herhangi bir fikir? MS Access bir kopyası varsaMS-Access Sorgusunda sözdizimi hatası (işleci eksik)

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; 

, kolayca, birleştirmeler inşa etmek sorgu tasarım penceresini kullanarak gerektirdiği parantez görebilirsiniz:

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

Düzenleme bluefeet için teşekkürler. Burada Newbie, bu sitede bir yere giriş için biçimlendirme hakkında bilgi var mı? Benim biçimlendirmem orijinal metin gönderiminden kaldırıldı. – cixelsyd

+0

Metni kod olarak biçimlendirmek için, metni seçin ve ardından "{}" gibi görünen kod örneği düğmesine basın. Metni seçebilir ve ardından 'Ctrl + k' tuşlarına basabilirsiniz. Burada düzenleme seçenekleri hakkında daha fazla bilgi için: http://stackoverflow.com/editing-help – HansUp

cevap

6

Erişim ile, her say, ihtiyaçlar parantez katılmak .

Örneğin, alan türlerini denetlemek için VBA kullanabilirsiniz:

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 

tablo DataTypeEnum fld.type tarafından döndürülen sayısal değerler için metin açıklamaları yer almaktadır.

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

Teşekkürler @Remou. Şimdi, sorguyu yürütürken bir tür uyuşmazlığı hatası alıyorum. – cixelsyd

+0

Bu, büyük olasılıkla farklı türdeki eşleşmelerden kaynaklanıyor olabilir, örneğin bir metin türünün bir sayısal tip alanına (sütun) eşleştirilmesi, örneğin "dbo_tbl_BOD.frev = vw_DRHRelfilter.Rev" – Fionnuala

+0

Veri tipini kolayca görebiliyorum Access tablolarımda, ancak görünümlerde döndürülen veri türünü nasıl belirleyebilirim? – cixelsyd