2017-03-20 4 views
0

Dieser Code wird in Microsoft Access nicht funktionieren, aber es funktioniert in Microsoft SQL Server Management Studio. Was kann ich tun, damit dies in Access funktioniert? Ich erhalte eineWarum funktioniert dieser SQL-Code nicht in Microsoft Access, funktioniert aber in SQL Server Management Studio?

„Syntaxfehler (fehlender Operator) in Abfrageausdruck‚CAST (od.UnitPrice * od.Quantity * (1 + od.Discount) als Dezimalzahl (10,2)) 'Order Total' .

Select TOP 5 
    c.CompanyName as 'Company Name', 
    CAST(od.UnitPrice * od.Quantity * (1 + od.Discount) as decimal(10, 2)) 'Order Total' 
From 
    Customers as c 
Join 
    Orders as o On c.CustomerID = o.CustomerID 
Join 
    OrderDetails as od On o.OrderID = od.OrderID 
Where 
    od.UnitPrice * od.Quantity * (1 + od.Discount) > 5000 
    AND c.Country IN ('Austria', 'Denmark', 'Germany', 'Ireland', 'Sweden') 
Order By 
    o.OrderDate desc 
+0

Welches ist der Fehler? – M84

+0

@gurV Es ist ein Fehler mit 'cast'. Ich kann aber nicht herausfinden warum. –

Antwort

1

Sie kippe Verwendung CAST in Access ... versuchen diese Möglichkeiten:

Cint - cast auf ganzzahlige

Clng - lange

Cdbl - Doppel

Csng - Einzel

Cstr - String

CBool ​​ - boolean

CDec - Dezimal

Beispiel: SELECT clng(fieldName) FROM tableName

In Ihrem Fall:

Select TOP 5 
    c.CompanyName as 'Company Name', 
    CDec(od.UnitPrice * od.Quantity * (1 + od.Discount)) 'Order Total' 
From 
    Customers as c 
Join 
    Orders as o On c.CustomerID = o.CustomerID 
Join 
    OrderDetails as od On o.OrderID = od.OrderID 
Where 
    od.UnitPrice * od.Quantity * (1 + od.Discount) > 5000 
    AND c.Country IN ('Austria', 'Denmark', 'Germany', 'Ireland', 'Sweden') 
Order By 
    o.OrderDate desc 

Hope this Hilfe!

+2

... und vergessen Sie nicht, dass CDec in Dezimal umgewandelt wird, was der Datentyp ist, nach dem das OP sucht – Joe

0

Die Spaltenfunktionen CAST und CONVERT scheinen in MS Access nicht zu funktionieren.

Probieren Sie die CInt- oder CLng-Funktion aus, je nachdem, ob Sie eine ganze Zahl (16 Bit) oder eine lange ganze Zahl (32 Bit) möchten.

Verwandte Themen