Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Accessiv am Januar 24, 2013, 20:56:15

Titel: Eingabe für eine Zeitdauer in Tabelle richtig formatieren.
Beitrag von: Accessiv am Januar 24, 2013, 20:56:15
Hallo,

in eine Tabelle soll eine Zeitdauer in Minuten und Sekunden im Format 5:23 eingegeben werden (hier z. B. die Laufzeit eines Musiktitels von 5 Minuten und 23 Sekunden). Was muss ich in die Format-Eigenschaft des Feldes eintragen, damit dass richtige Format angezeigt wird. Das Format n:s funktioniert nicht, sondern führt bei Eingabe von 5:23 nach dem verlassen des Feldes in der Datenblattansicht zur Ausgabe von 23:0. Wenn mann dann noch einmal in das betreffende Feld klickt, steht dort der Wert 05:23:00. Beides nicht das was ich eigentlich will.

Bin für jede Hilfe zu diesem Formatierungsproblem dankbar.
Titel: Re: Eingabe für eine Zeitdauer in Tabelle richtig formatieren.
Beitrag von: database am Januar 24, 2013, 21:08:29
Hallo,

Zeitfelder kannst du nur mit hh:mm:ss nutzen also mit Format Zeit lang ... 00:00:00.

Du kannst aber schummeln ...  sieh' da mal rein

http://computer.wer-weiss-was.de/access/access_format_00_00-3392736.html (http://computer.wer-weiss-was.de/access/access_format_00_00-3392736.html)

HTH
Titel: Re: Eingabe für eine Zeitdauer in Tabelle richtig formatieren.
Beitrag von: ebs17 am Januar 24, 2013, 22:53:32
Es könnte aber auch ein Weg sein, sich statt mit Format-Tricksereien mit Werten zu beschäftigen. Dazu sollte man den Datentyp DateTime verstehen. DateTime-Werte sind intern Zahlen vom Typ Double. Das sieht man z.B. mit folgendem Test im Direktbereich, der für JETZT das Standarddatum und den internen Wert ausgibt:
?now, now*1
24.01.2013 22:27:09          41298,9355208333


Statt des Standarddatums kann man sehr viele andere Formate (Ansichten) ein und des selben Wertes ausgeben lassen: Datum, Uhrzeit, Wochentag in Worten, Quartal, Kalenderwoche, Monat in Worten, Tag, Jahr, Monat u.a.

Der interne Wert stellt folgendes dar:
- Die Ganzzahl ist die Anzahl der Tage, die seit dem 30.12.1899 vergangen sind. Datum + 1 ergibt den Folgetag!
- Der Dezimalanteil stellt den Bruchteil eines Tages dar. Folglich ist eine Stunde = 1/24, eine Minute 1/(24*60), eine Sekunde 1/(24*60*60).
- Zahlen kann man addieren.

Somit könntest Du eine Eingabe in ein Formular über zwei Textfelder organisieren, wo Du in eines die Minuten und in eines die Sekunden einträgst. In einem dritten Feld (ggf. auch unsichtbar) rechnest Du die Angaben zusammen, und dieses Feld übergibt dann auch den Wert in das Tabellenfeld.
Die beiden ersten Felder könntest Du optisch so gestalten, dass der Eindruck von nur einem Feld entsteht. Je nach Eingabequalität fügst Du noch ein paar Gültigkeitsprüfungen hinzu, so dass nicht gerade eine Zeit von 71:96 entstehen kann.

MfGA
ebs
Titel: Re: Eingabe für eine Zeitdauer in Tabelle richtig formatieren.
Beitrag von: Accessiv am Januar 24, 2013, 23:05:17
Hallo Database und ebs17,

vielen Dank für eure Tipps. Ohne "Trickserei" geht es wohl nicht, aber jetzt habe ich ja zwei mögliche Lösungswege.

Gruß Helmut
Titel: Re: Eingabe für eine Zeitdauer in Tabelle richtig formatieren.
Beitrag von: database am Januar 25, 2013, 11:59:50
Hallo,

ZitatEs könnte aber auch ein Weg sein, sich statt mit Format-Tricksereien mit Werten zu beschäftigen
Daher auch mein Hinweis darauf dass Zeiten als solche zu erfassen sind ....   00:00:00

Für die Speicherung eines rein anzuzeigenden Wertes von 5 Minuten 23 Sekunden ist es m.E. nicht UNBEDINGT erforderlich ein Datums-/Zeitfeld zu verwenden,
wodurch ich dabei durchaus KEINE Trickserei sehe

ZitatSomit könntest Du eine Eingabe ...
Sollte der Bedarf bestehen die Werte auch einer Berechnung zu unterziehen ist es der einfachere Weg beim entsprechenden Felddatentyp zu bleiben.
Die Eingabe in ein Textfeld in der Form 00:05:23 bringt den gewünschten Effekt ohne Trickserei - die Anzeige / Ausgabe in Berichten etc. kann ja beliebig formatiert werden