2010-11-19 7 views
1

Fehler: -Wie wird der Fehler Syntaxfehler (fehlender Operator) gelöst, wenn die Anwendung Access als db für C# Windows verwendet wird?

Syntax error (missing operator) in query expression 'PriceHistory.UnitPriceId = ProductPrice.UnitPriceId inner join Prdc on prdc.prdcID=ProductPrice.PrdcId' 

Gebraucht Skript: -

string sql = "select PriceHistory.UnitSellRate," + 
    "PriceHistory.DateAssigned, PriceHistory.DateChanged, PriceHistory.MRP, PriceHistory.ProductOffer " + 
    "from ProductPrice " + 
    "inner join PriceHistory on PriceHistory.UnitPriceId = ProductPrice.UnitPriceId " + 
    "inner join Prdc on prdc.prdcID=ProductPrice.PrdcId"; 
    "left join Suppliers on Suppliers.supplierId = Products.SupplierId "; 
    " where Products.ProductCode='" + productCode + "'"; 
+0

Zuerst haben Sie ein paar ';' wo Sie '+' brauchen - ich nehme an, Sie haben Ihren Code falsch kopiert? – egrunin

+0

Vielen Dank .. meine Abfrage änderte sich wie folgt, aber immer noch bekomme ich denselben Fehler :( – user513655

+0

Skript: - "wählen PriceHistory.UnitSellRate," + "PriceHistory.DateAssigned, PriceHistory.DateChanged, PriceHistory.MRP, PriceHistory.ProductOffer "+ "von Product" + "INNER JOIN Preisverlauf auf PriceHistory.UnitPriceId = ProductPrice.UnitPriceId" + "INNER JOIN PRDC auf prdc.prdcID = ProductPrice.PrdcId" + " LEFT JOIN Lieferanten auf Suppliers.supplierId = Produkte. SupplierId "+ " wo Products.ProductCode = '"+ productCode +"' "; – user513655

Antwort

1

Sie benötigen einen Platz vor dem Ende Ihrer Zitate

string sql = "select PriceHistory.UnitSellRate," + 
"PriceHistory.DateAssigned, PriceHistory.DateChanged, PriceHistory.MRP, PriceHistory.ProductOffer " + 
"from ProductPrice " + 
"inner join PriceHistory on PriceHistory.UnitPriceId = ProductPrice.UnitPriceId " + 
"inner join Prdc on prdc.prdcID=ProductPrice.PrdcId " + 
"left join Suppliers on Suppliers.supplierId = Products.SupplierId " + 
" where Products.ProductCode='" + productCode + "'"; 
+0

Zeichenfolge sql =" wählen PriceHistory.UnitSellRate, "+" PriceHistory.DateAssigned, PriceHistory.DateChanged, PriceHistory.MRP, PriceHistory.ProductOffer "+ "von Product" + "INNER JOIN Preisverlauf auf PriceHistory.UnitPriceId = ProductPrice.UnitPriceId" + "INNER JOIN PRDC auf prdc.prdcID = ProductPrice.PrdcId" + "LEFT JOIN Lieferanten auf Suppliers.supplierId = Products.SupplierId" + "where Products.ProductCode = '" + productCode + "'"; – user513655

+0

Ich habe den gleichen Fehler mit dem oben geänderten Skript :( – user513655

+0

Immer noch den gleichen Fehler. Wählen Sie PriceHistory.UnitSellRate, PriceHistory.DateAssigned, PriceHistory.DateChanged, PriceHistory.MRP, PriceHistory.ProductOffer von ProductPrice Inner beitreten PriceHistory auf PriceHistory.UnitPriceId = ProductPrice .UnitPriceId Inner Join Prdc auf prdc.prdcID = ProductPrice.Prcd Linke Join Lieferanten auf Suppliers.supplierId = Prdc.SupplierId wo Prdc.ProductCode = 'df' – user513655

1

Es scheint zwei Hauptprobleme, ich kann das sein siehe (

1 (außer den bereits identifizierten Abstands- und Semikolonproblemen) - Access/Jet erfordert Klammern, wenn mehr als ein Join ausgeführt wird. Grundsätzlich müssen Sie im Wesentlichen Subqueries machen, um sicherzustellen, Sie sind nur zwei Tabellen zu einer Zeit kam, so statt dessen:

SELECT 
     PriceHistory.UnitSellRate, 
     PriceHistory.DateAssigned, 
     PriceHistory.DateChanged, 
     PriceHistory.MRP, 
     PriceHistory.ProductOffer 
FROM 
     ProductPrice 
      INNER JOIN PriceHistory 
      ON PriceHistory.UnitPriceId = ProductPrice.UnitPriceId 

      INNER JOIN Prdc 
      ON prdc.prdcID=ProductPrice.PrdcId 

... müssen Sie wickeln jene innere in Klammern verbindet zwei erstellen beitreten Tabellen in ein, die, wie dies mehr, etc. zu einem werden dann verbunden:

SELECT 
    PriceHistory.UnitSellRate, 
    PriceHistory.DateAssigned, 
    PriceHistory.DateChanged, 
    PriceHistory.MRP, 
    PriceHistory.ProductOffer 
FROM 
(ProductPrice INNER JOIN PriceHistory 
       ON PriceHistory.UnitPriceId = ProductPrice.UnitPriceId) 
INNER JOIN Prdc 
ON prdc.prdcID=ProductPrice.PrdcId 

2 - ich bin nicht wirklich sicher, was Sie am Ende mit LEFT JOIN sind Beitritt. Das LEFT JOIN versucht, den Suppliers und Products Tabellen beizutreten, aber keiner von ihnen scheint irgendeine Verbindung zu etwas in den INNER JOINs zu haben, die Sie bereits gemacht haben. Ist es möglich, dass Prdc und Produkte die gleiche Tabelle sind?

+0

immer noch nicht funktioniert. Hilfe wird geschätzt. – user513655

+0

Hatte das gleiche Problem, und das Umwickeln des Tisches und der ersten inneren Verbindung in den Elternphasen funktionierte für mich! –

Verwandte Themen