Volker Heggemann schrieb:
Der Fehler in Berichten tritt nicht wie ich zunächst dachte nur mit
MySql auf!
Folgendes:
Ich erstelle eine Datenbank.
Diese enthält ein Zeit-Feld (Format ZEIT [TIME] )
Im Datenbankexplorer und unter der Formular-Ein- und Ausgabe
erscheint die Zeit korrekt im 24Std. Format.
Wenn man mittels des Berichtsassistenten aber einen Bericht
erstellt, wird die Zeitangabe einfach nur als 12Std. Wert angezeigt!
Aus 20:00 Uhr wird also 08:00 Uhr. Gibts da schon einen Workaround?
Ich habe mir jetzt selbst geholfen. Da es im Internet viele Fragen zu
genau diesem Sachverhalt - aber keine Lösungen gibt.
Folgendes:
Da das Fehlerhafte Verhalten nur in den Berichten auftritt, habe ich
diesen nicht mehr von der Tabelle erstellt, sondern von einer Abfrage.
Angenommen, die Tabelle (Termin) ist folgender Maßen definiert:
Feld Datenformat
----------------------------------------------
TerminID Int (Autowert & Primärschlüssel)
Datum Date
Startzeit Zeit
Bemerkung Text
Dann kann man in einem Formular alles wunderbar eingeben und auch
dastellenlassen. Zeiten haben das richtige Format (hier in Deutschland 24h)
In einem Bericht, den man mit dem Assistenten oder von Hand erstellt ist
das Zeitfeld immer ein 12h Feld.
Daher wird aus der Tabelle von oben eine Abfrage generiert die folgenden
Inhalt hat:
Feld Inhalt
-------------------------------------------------------------
TerminID Termin.TerminID
Datum Termin.Datum
StartZeit CONCAT( CONCAT( EXTRACT( HOUR FROM "Termin.Startzeit"
), CHAR( 58 ) ), EXTRACT( MINUTE FROM "Termin.Startzeit" ) )
Bemerkung Termin.Bemerkung
Damit ist das Feld StartZeit der Abfrage ein Textfeld im Format Std:Min.
Jetzt kann aus der Abfrage ein Bericht gemacht werden.
(Wenn noch jemand eine Lösung hat, wie man den Doppelpunkt in die SQL
Syntax rein bekommt? Schreibe er das bitte. Ich bekomme immer eine
Fehlermeldung, wenn ich anstatt CHAR(58) einfach ':' oder ":" schreibe)
Dieses Konstrukt hat noch einen kleinen Markel! Es gibt keine führenden
Nullen.
D.h. eine Zeit von 07:00 Uhr wird als 7:0 formatiert ausgegeben.
Um das zu umgehen, kann man die Werte für Stunde und Minute (ggf. auch
Sekunde und was sonst noch) einzeln in der Abfrage machen.
Das sähe dann so aus:
Feld
Inhalt
alias
------------------------------------------------------------------------------------
TerminID Termin.TerminID
Datum Termin.Datum
StartStunde EXTRACT( HOUR FROM "Termin.Startzeit" ) startstd
StartMinute EXTRACT( Minute FROM "Termin.Startzeit" ) startmin
Bemerkung Termin.Bemerkung
Dabei muß man dann im Bericht die Felder für Stunde und Minute eng
zusammensetzen und als Zahlenformat 00 wählen. Jetzt kann dazwischen ein
Label-Feld als Trenner mit Doppelpunkt gesetzt werden.
Ich hoffe es ist verständlich was ich hier beschreibe?!
Ansonsten einfach ne email schicken. Ich schicke nen Beispiel zurück!
Auf bald
Volker
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]