1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Verknüpfte Sicht hat in Access falsche Werte

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von wgrie, 15 April 2019.

  1. wgrie

    wgrie Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    Welches Format hat die Spalte der Access-Werte? Sind das Zeichenketten oder wirklich numerische Werte?
     
  3. wgrie

    wgrie Neuer Benutzer

    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
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
  5. wgrie

    wgrie Neuer Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden