Hallo alle zusammen,
habe ein komisches Verhalten mit der Bedingten Formatierung von Access.
Zum Hintergrund: MS-SQL Server, gespeicherte Prozedur welche ein Datumsfeld (als Date deklariert) ausgiebt.
Habe im SQL Server das Datum nach tt.mm.jjjj formatiert convert(varchar, naechsteUntersuchungAM, 104) as naechsteUntersuchungAM
Wenn ich nun in Access eine bedingte Formatierung auf das Feld nutze, klappt das nicht.
Feldwert <= Datum(). 2.png
Normalerweise sollte er nun alle Datumsfelder, die kleiner als das heutige Datum sind farblich verändern. Tut er aber nicht. Nur sporadisch und auch Datumswerte in der Zukunft.1.png
Kann mir einer erklären woran das liegt? Initial hatte ich im SQL Server keine Formatierung des Datums vorgenommen, weil ich dachte das es am Datumsformat vom SQL liegt.
Kann mir wer einen Tipp geben, woran das liegen könnte?
Grüße
Ok habs lösen können, warum verstehe ich zwar nicht. Evt. könnt ihr da etwas Licht in die Sache bringen.
Für die bedingte Formatierung habe ich nun folgenden Ausdruck benutzt: DatWert([naechsteUntersuchungAM])<=Datum(). Hab also explizit den Datumsteil aus dem Feld genommen.
Grüße
Hallo,
eine Formatierung macht aus einem Datum (=Zahl) einen Text und mit Text funkionieren die Operatoren < und > nicht mehr wunschgemäß. DatWert macht wieder eine Zahl (=Datum) aus dem Text und dann geht es wieder.
Zitat von: Xoar am August 05, 2021, 06:48:44Zum Hintergrund: MS-SQL Server, gespeicherte Prozedur welche ein Datumsfeld (als Date deklariert) ausgiebt.
Zitat von: Xoar am August 05, 2021, 07:07:04Ok habs lösen können, warum verstehe ich zwar nicht. Evt. könnt ihr da etwas Licht in die Sache bringen.
Der Datentyp
Date ist relativ neu (nur ca. 15 Jahre alt ;-) ) und wird von dem alten "SQL Server" ODBC Treiber nicht richtig unterstützt. Wenn du mit diesem Treiber eine
Date Spalte einbindest, wird diese in Access zu
(Short) Text.
Entweder verwendest du auf dem SQL Server den Datentyp
DateTime und ignorierst die Zeit, oder du verwendest einen neueren ODBC-Treiber.
@klaus ahh danke, das macht Sinn
@PhilS vorher war es DateTime2, habs dann auf Date umgeändert, da ich gelesen hatte, dass dieser ohne Zeitanteil agiert. Aber brachte ja nichts(siehe Post von Klaus).
Danke euch allen 😁
Zitat von: Xoar am August 05, 2021, 06:48:44Habe im SQL Server das Datum nach tt.mm.jjjj formatiert
Das hatte ich komplett übersehen. - So wird aus deinem Datumsdatentyp natürlich auch Text.
Datumswerte als Text zu behandeln ist ausser in der finalen Darstellung für den Benutzer grundsätzlich keine gute Idee. Mit Text funktionieren datumsbezogene Funktionen nicht mehr, wie du hier gemerkt hast.
Wenn du Uhrzeiten eliminieren willst, funktioniert das Folgende und das Ergebnis ist trotzdem noch ein Datumswert:
convert(datetime, convert(date,naechsteUntersuchungAM) )
Hallo,
nur noch als Hinweis:
Eine Formatierung des Datums mit tt.mm.jjjj würde einen ggf. vorhanden Zeitanteil nicht entfernen, sondern nur nicht anzeigen. Vorhanden wäre die Zeit immer noch.
Super danke euch beiden. Wieder was gelernt 👍🏻