webForumDet fria alternativet

Incorrect syntax near the keyword 'is'.

5 svar · 383 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!

Jag håller på att byta databas och skriver därmed om mina sidor...

Har följande kod som fungerade fint med access:

SELECT DISTINCT
tblArticle.articleNumber, 
tblArticle.articleName, 
tblArticle.articleUnit, 
tblPrice.articlePrice, 
tblSupplier.SupplierName, 
tblPrice.articleCategoryNumber, 
tblDiscount.articleDiscount, 
iif(articleDiscount is null, articlePrice, articlePrice*(1-([articleDiscount]*0.01))) AS articlePriceWithDiscount 
FROM ((tblArticle 
INNER JOIN tblPrice ON tblArticle.articleNumber = tblPrice.articleNumber) 
LEFT JOIN tblDiscount ON tblPrice.articleCategoryNumber = tblDiscount.CategoryNumber) 
INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId 
WHERE " & sOption & " AND tblSupplier.SupplierId IN (" & sCheckedSuppliers & ") 
ORDER BY " & sOrder1 & ", " & sOrder2 & " ASC

När jag nu kör med SQL-server får jag fölajnde fel:

Microsoft OLE DB Provider for SQL Server (0x80040E14)
Incorrect syntax near the keyword 'is'.

Vad beror detta på?

Mvh
Henrik

tydalMedlem sedan juni 20034 013 inlägg
#2

iif låter inte som SQL.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Iif fungerar bra när man använder Access, men i SQL Server får man använda CASE istället.

CASE WHEN articleDiscount is null THEN articlePrice ELSE articlePrice*(1-([articleDiscount]*0.01)) END AS articlePriceWithDiscount
devotionMedlem sedan jan. 20013 582 inlägg
#4

Aha! Trodde det kunde vara något sådant... :)

Ska testa det under dagen!

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#5

hmmm. får fortafarande samma felmeddelande....

//Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#6

:r

Glöm ovanstående inlägg... Redigerade i fel fil... sorry...

Mvh
Henrik

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)