Meine Software kann wahlweise mit Datenbanken aus Access oder SQL arbeiten. Wenn man nun ein Dataset für Drucken in LL erstellt, dann speichert Acces für Datumfelder einen Datentyp “Datum”, SQL-Server jedoch seltsamerweise ein Textfeld in das Dataset.
Wie kann man in ListLabel prüfen ob ein Datenfeld nun ein Datum oder Text enthält um den Bericht für beide Varianten verwenden zu können?
Habe noch ein paar Tests gemacht. Das Problem liegt in ToString$. Die Funktion wandelt ein DateTime-Feld immer nur auf Datum um und läßt die Zeit weg. Die Logik dahinter ist nicht ersichtlich.
Eine Abfrage des Datenfeldtyps würde auch nicht helfen, weil LL beim Start alle Formeln überprüft und eine wäre dann ja immer falsch…
Ich würde versuchen, das Problem bei der Wurzel zu packen und herauszufinden, warum der SQL-Server das Feld als “Zeichen”-Feld liefert, das scheint mit die allerbeste Lösung.
Ansonsten können Sie (verwenden Sie .NET?) auch den AutoDefineField-Event verwenden um den Datentypen umzubiegen. Hier ist ein älterer Thread mit einem Codesnippet dazu, in Ihrem Fall wäre es nicht “HTML” sondern eben Datum. Eventuell - je nachdem, welcher Inhalt im Feld ist - sollten Sie z.B. LlFieldType.Date_Localized verwenden, oder eine der anderen Konstanten aus der LlFieldType-Enumeration.
Danke für die Info. Ich verwende .net und Visual Studio. Der Link funktioniert bei mir leider nicht.
Habe inzwischen auch eine Lösung gefunden. Ich habe meine Abfragen für das erforderliche Dataset umgeändert und Datumfelder so abgefragt: FORMAT(Tabelle.Datum,’’) AS Datum. Das funktioniert in Access und SQL-Server und ich erhalte als Ergebnis immer ein Textfeld mit Datum und Uhrzeit. Das kann ich dann mit LocDateTime zurückrechnen und formatieren wie ich will. Ist nicht optimal, aber funktioniert.