Verknüpfte Sicht hat in Access falsche Werte

wgrie

Neuer Benutzer
Beiträge
3
Hallo,
SQL Server 2012 / Access 2016.
Ich - SQL Server Anfänger. Ich habe am SQL Server eine Sicht aus mehreren Sichten erstellt.
Die Werte am SQL Server sind OK, aber in der verknüpften ODBC 32 Bit Access Tabelle sind die Werte seltsam falsch.
Einige Wert werden durch 1000 dividiert und manche aber mit multipliziert? Verknüpft als Währung?

Ergebnis der Sicht Ergebnis der verknüpften
am SQL Server Tabelle in Access
IDFZ Wert IDFZ Wert
1 1581,3 1 1,58130 € dividiert durch 1000?
2 746,74 2 74674,000 € multipliziert x 10?
3 1433,7 3 1,43370 € dividiert durch 1000?

Bitte um Hilfe.

LG
WGrie
 
Werbung:
Hallo,

Beim View am SQL Server werden 4 Money Werte zum "Strabag" wert zusammengerechnet und ergeben in der View Ansicht 1581,3000 (mit 4 Kommastellen) in Access wird 1,581 € angezeigt.
So schaut die SQL der View aus:
SELECT dbo.Fahrzeuge.IDFZ, ISNULL(dbo.Versicherung_last.Haftpflicht_pro_Jahr_inkl_11_Proz_VSt, 0) + ISNULL(dbo.Versicherung_last.Kasko, 0) + ISNULL(dbo.Versicherung_last.Motorbez_VSt_HAZET_mon_Zahlung, 0) + ISNULL(dbo.Fahrzeuge.Vignette, 0)
AS Strabag
FROM dbo.Fahrzeuge INNER JOIN
dbo.Versicherung_last ON dbo.Fahrzeuge.IDFZ = dbo.Versicherung_last.FSFZ

LG
 
Achso ich hatte das so verstanden das auch Werte aus einer Access Tabelle in MSSQL verknüpft werden aber es ist wohl anders herum, Access zeigt nur Werte aus der MSSQL sicht an, richtig?

Wenn die MSSQL Sicht Berechnungen durchführt ist nicht ganz eindeutig, welches Format die Spalte (in der Sicht) dann nachher hat. Wenn der erste Wert der Berechnung wirklich MONEY ist, würde ich vermuten das SQL auch alles mit MONEY berechnet. Ist aber der erste Wert in der ersten Spalte eventuell NULL könnte SQL auf die Idee kommen das Ergebnis 0 aus der isnull() Funktion als INT oder sonstwie zu interpretieren, im schlimmsten Fall sogar eine Zeichenkette.

Bitte guck mal im SQL Mamangement Studio welches Format für die berechnete Spalte der Sicht angezeigt wird. Um sicher zu gehen kannst du die Sicht abändern in
Code:
SELECT cast(
dbo.Fahrzeuge.IDFZ, ISNULL(dbo.Versicherung_last.Haftpflicht_pro_Jahr_inkl_11_Proz_VSt, 0) + ISNULL(dbo.Versicherung_last.Kasko, 0) + ISNULL(dbo.Versicherung_last.Motorbez_VSt_HAZET_mon_Zahlung, 0) + ISNULL(dbo.Fahrzeuge.Vignette, 0)
 AS MONEY) AS Strabag
Darauf aufbauend kann es sein das Access eine eigene "Interpretation" der Spalte vornimmt, vermutlich kennt Access gar kein MONEY. Du solltest eventuell auf DECIMAL wechseln und es damit probieren. Schaue auch mal hier:
Microsoft Access-Datentypen - SQL Server
Es wird natürlich nichts durch 1000 dividiert sondern einfach das Komma, im Englischen das 1000der Trennzeichen, als deutsches Komma interpretiert. Es kann also theoretisch auch noch eine Spracheinstellung in Access oder sonstwo dafür verantwortlich sein. Das wäre aber nur ein Folgeproblem da ja eigentlich das Format erhalten bleiben soll.
 
Werbung:
Hallo ukulele,

das Abändern in SELECT cast(..... hat nichts gebracht. Ich habe die migrierte Access Datenbank am SQL Server gelöscht, den Datentyp Währung in Zahl (Double) in der Access DB geändert. Neu migriert und siehe da jetzt stimmt die Werte der Verknüpfung zu View. Aber frustriert bin ich schon.
Danke für den Tipp mit der Umstellung des Datentyps :)).
Vielen Dank für die Hilfe.
LG
Wgrie
 
Zurück
Oben