Freigeben über

Access: Datumformat wird in eingebundenen Tabellen falsch übernommen

Anonym
2020-04-21T13:44:16+00:00

Hallo Zusammen

System Lokal:  Access 365, SQL Server Express 14.0.1000, SQL Server Management Studio 15.0.18206.0, SQL Server Migration Assistant for Access 8.7.0

System Server:  Access 365, SQL Server 13.0.5102, SQL Server Management Studio 14.0.17285.0 SQL Server Migration Assistant for Access 8.8.0

Ich habe mein Access 2003 Frontend auf Access 365 und das Backend auf SQL Server übertragen und auf meiner lokalen Installation läuft auch alles und in den Formularen und Berichten werden die Datum gemäss Ländereinstellung angezeigt.

Nun kopierte ich das FE auf den Server, liess mir auf dem SQL Server von der EDV eine neue Instanz eröffnen und importierte mit dem SQL Server Migration Assistant für Access die Access-Tabellen in eine neue SQL Server Datenbank. Das einbinden der Tabellen aus der SQL Server DB in das FE klappte.

Mein Problem auf dem Server (nicht aber auf der lokalen Installation) :

In den Formularen und Berichten werden die Datum-Felder nicht in der eingestellten Länderdefinition angezeigt.

In den Tabellen auf dem SQL Server wurden die Datum-Felder bei der Migration mit dem Datentyp "datetime2" definiert. Wenn ich im FE im Entwurfsmodus in den eingebundenen Tabellen die Felddefinitionen der Datum-Felder nachsehe steht da jetzt "Text kurz" und 

In den Formularen und Berichten kann ich das Datum-Format auch nicht korrigieren was bei Text ja auch nicht logisch währe.

Weiss jemand den Grund für diese Aenderung des Datentyps durch das Einbinden und wie ich in meinen Formularen und Berichten das Datum wieder der Ländereinstellung entsprechend angezeigt bekomme ? 

Bin für jede Hilfe dankbar.

Herzliche Grüsse

Reiner Berger

Microsoft 365 und Office | Access | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare

Antwort, die vom Frageautor angenommen wurde

Anonym
2020-04-26T09:35:06+00:00

Hallo,

Das ist keine "gangbare", sondern die korrekte Lösung. :-)

SSMA erlaubt, das Mapping für jeden einzelnen Feldtyp individuell pro Projekt zu bestimmen, auch als Standard für alle weiteren Migrationsprojekte. Insofern wäre es für dich wahrscheinlich weniger Arbeit gewesen, die Migration mit dem korrekten Mapping zu wiederholen.

Für Datumsfelder gilt:

  • Type DateTime in Access entspricht weitgehend dem Typ DateTime (ohne 2) auf SQL Server.
  • Das niedrigst mögliche Datum in Access ist der 01.01.100, das auf SQL Server für DateTime: 01.01.1753. Wichtig ist diese Erkenntnis bei Eingabefehlern. Wenn statt Jahr 2020 z.B. 202 eingegeben wurde, führt das bei der Migration zu Fehlern.
  • Um DateTime2 in Access einbinden zu können, müssen neuere Treiber eingesetzt werden. Der Treiber "SQL Server" stammt aus Zeiten von SQL Server 2000, als es DateTime2 noch nicht gab, und beim Verknüpfen in Access werden alle unbekannten Datentypen als Text eingebunden. Mindestens seit "SQL Server Native Client 10.0" ist DateTime2 bekannt. Aktuellster Treiber ist ODBC Driver 17 for SQL Server, der alle Versionen von SQL Server seit 2008 bis einschl. SQL Azure unterstützt.
  • Der einzige Vorteil des Treibers "SQL Server" gegenüber den neueren ist, dass er im Windows-Setup enthalten ist, während die neueren selbst installiert werden müssen.

HTH - Peter

War diese Antwort hilfreich?

0 Kommentare Keine Kommentare

2 zusätzliche Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2020-04-26T17:44:16+00:00

    Hallo Peter

    Besten Dank für Deine Antwort und schön, dass meine "gangbare" zufälligerweise auch die korrekte Lösung entpuppt.

    Ich fragte mich auch ob es Einstellungen für die Uebernahme des Datumformates gibt, suchte dann aber nicht weiter weil ich mir als SQL Server-Anfänger ausrechnete das ich mit Suche und Ausprobieren letztlich etwa gleich viel oder noch mehr Zeit brauchen werde wie mit dem Anpassen des Datumtyps  "datetime2" zu "datetime" (ohne die 2).

    Auf den installierten Treiber habe ich leider keinen Einfluss das gehört zum Bereich der EDV die auch den SQL Server nicht auf die neuste Version updaten will da der Requlifizierungsaufwand den die QS vorschreibt wirklich gross ist.

    Ja so ist das Leben heute eben :-(

    Gruss

    Reiner

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  2. Anonym
    2020-04-23T19:54:46+00:00

    Ich habe eine für mich gangbare Lösung gefunden:

    Der SQL Server Migration Assistant for Access 8.8.0 weist bei der Uebername von Access-Tabellen in eine SQL-Server DB Datumfeldern den Datentyp "datetime2" zu. Werden die SQL Server Tabellen in ein Access FE eingebunden ist der "datetime2" Datentyp für Datumfelder in Access zu lang und Access weist dem Feld automatisch den Datentyp "Text kurz" zu.

    Beim Ausprobieren merkte ich dass der SQL Server Datentyp "datetime" (ohne die 2) in Access korrekt in ein Datumformat umgesetzt wird das mir in den Formularen und auf den Berichten das Datum wie gewünscht anzeigt.

    Der Rest war dann, bei knapp 100 Tabellen, nur noch Fleissarbeit. In Access darf dann aber nicht vergessen werden die Links der eingebundenen Tabellen zu aktualisieren.

    Die Views waren etwas aufwendiger da das Aktualisieren mit dem SSMS 17.9 und dem dbForge Studio Express 5.8.107 nicht funktionierte.

    View im Design-Modus öffnen, alle Datum-Felder löschen, View speichern und schliessen.

    View im Design-Modus öffnen, alle Datum-Felder wieder einfügen, View speichern und schliessen.In Access die Links der eingebundenen Views aktualisieren.

    Ich hoffe das hilft irgendwann jemandem.

    Herzliche Grüsse

    Reiner

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare