Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Seltsames Verhalten der bedingten Formatierung

Begonnen von Xoar, August 05, 2021, 06:48:44

⏪ vorheriges - nächstes ⏩

Xoar

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(). Sie dürfen in diesem Board keine Dateianhänge sehen.
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.Sie dürfen in diesem Board keine Dateianhänge sehen.

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



Xoar

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

MzKlMu

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

Gruß Klaus

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Xoar

@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 😁

PhilS

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) )
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

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.
Gruß Klaus

Xoar

Super danke euch beiden. Wieder was gelernt 👍🏻