![]() |
Datenbank mehr als 24h
Hallo
In Excel habe ich einige Daten, welche das Format [h]:mm aufweisen. (Anz Std. : Anz. Minuten, keine Uhrzeit) Nun sollen die Daten in eine Access DB übertragen werden. Das Format [h]:mm kann aber nicht eingestellt werden, es wird immer in ein DateTime Format umgewandelt. Zudem sollen diese Felder auch über ein Formular editierbar sein. D.h eine Umwandlung in Sek. wäre evtl. nicht optimal, da im Formular auch [h]:mm angezeigt werden soll. Hat jemand eine Lösung hierfür? |
Re: Datenbank mehr als 24h
Nimm einen Float-Wert und definiere
1 = 1 Tag (24 Stunden) 2 = 2 Tage (48 Stunden) .... |
Re: Datenbank mehr als 24h
Zitat:
Warum soll ich Tage definieren, es sollen doch nur hh:mm angezeigt werden. Un wo / wie sollte dies definiert werden? |
Re: Datenbank mehr als 24h
Hallo,
ich verstehe dein Problem nicht ganz. Access ist eine Datenbank (huch, habe ich das gesagt ;) ). Das Format DateTime ist doch richtig. Es kann in einem Access-Form auch schön bearbeitet werden (Form entweder vom Assistenten erzeugt oder DateTimePicker). Heiko |
Re: Datenbank mehr als 24h
Zitat:
|
Re: Datenbank mehr als 24h
Hallo,
kommt drauf an ... intern wird DateTime als Sekunden (?) ab dem 30.12.1899 (oder der 31.) gespeichert. DateTime ist ein Float, vor dem Komma stehen die Tage, nach dem Komma die Stunden des Tages / 24, also ist 12:00 gleich 0.5 (halber Tag) z.B 34:12 ist also 24 + 10 + 0:12 (=0.2 Stunden) 24 ist 1.0 als Tag, die Stunden sind dann 1.0 (die 24) + 10.2/24 = 1,425 Inwiefern du das mit einem DateTimePicker abbilden kannst, weiss ich jetzt nicht. Zur Not muss ein normaler Editor her, und du formst das selber um (so mache ich es in Delphi). Heiko |
Re: Datenbank mehr als 24h
Zitat:
|
Re: Datenbank mehr als 24h
Der Typ nimmt auch Zeitpunkte und nich Zeitspannen auf
|
Re: Datenbank mehr als 24h
Zitat:
|
Re: Datenbank mehr als 24h
Hallo,
ist das ein Access- oder Delphi-Programm ? In Delphi kannst du ja TMaskEdit benutzen zur Eingabe. Das Umformen (hin- und zurück) musst du aber selber machen. Heiko |
Re: Datenbank mehr als 24h
Zitat:
|
Re: Datenbank mehr als 24h
Was spricht denn gegen ein Integerfeld, in dem die Minuten abgelegt werden? Das bisschen Rechenaufwand mit mod und div fällt ja nicht so sehr ins Gewicht.
|
Re: Datenbank mehr als 24h
Zitat:
In Access gibt es ja keine DisplayFormat Eigenschaft wie in Delphi--- |
Re: Datenbank mehr als 24h
Selber Rechnen: Zeit DIV 60 -> Stunden Zeit MOD 60 -> Minuten
|
Re: Datenbank mehr als 24h
Zitat:
Zitat:
|
Re: Datenbank mehr als 24h
Delphi-Quellcode:
s := Format('%2d:%2d', [Zeit DIV 60, Zeit MOD 60]);
|
Re: Datenbank mehr als 24h
Oder halt eine VBA-Entsprechung in Access.
|
Re: Datenbank mehr als 24h
Zitat:
Ich suche eine Möglichkeit, das Format zu ändern, so wie es angezeigt wird. Gespeichert wird ein Integer Wert, angezeigt werden soll ein Format Stunden:Minuten. Kann das im AfterUpdate() gemacht werden und wie? |
Re: Datenbank mehr als 24h
Das Beispiel zeigt doch wie aus dem Integer ein String erzeugt wird, den kannst du dann anzeigen lassen ( Label, Edit, ...)
|
Re: Datenbank mehr als 24h
Du kannst auch noch auf dein TDataset aufbauen ein calculated Field anlegen (String), und dort die von mkinzler gegebene Umwandlung vornehmen. Anzeigen kannst du dann einfach dieses Calculated Field in deinen visuellen Datenkomponenten.
Aendern kannst du ein Calculated Field jedoch nicht. |
Re: Datenbank mehr als 24h
Wie wäre es mit den OnGetText/OnSetText-Ereignissen des Feldes? Schaut mal in der Delphi-OH, wie das geht (total simpel)
|
Re: Datenbank mehr als 24h
Hallo, danke für die Antworten.
Diese gehen jedoch nicht auf meine Frage ein. Die Frage hat nichts mit Delphi zu tun. Nur mit M$ Access. |
Re: Datenbank mehr als 24h
Dann musst du das dort entsprechend machen
|
Re: Datenbank mehr als 24h
Zitat:
|
Re: Datenbank mehr als 24h
Versuch mal
SQL-Code:
select (zeit div 60) & ':' & (zeit mod 60) from <tabelle>;
|
Re: Datenbank mehr als 24h
Hallo,
wenn ich das Problem richtig verstehe, dann geht es darum ein eigenes Ein-Ausgabe-Format für ein Access Formularfeld zu definieren. Dazu würde ich ein ungebundenes Textfeld mit Eingabemaske 9990:00 verwenden. Dann würde ich beim Ereignis BeforeUpdate des Feldes den String in das interne Zeitformat umrechnen. Die Rechenschritte dürften nicht das Problem sein, aber es muss noch das Ereignis identifiziert werden, bei dem der interne Wert in die Darstellungsform gewandelt wird - evtl. beim AfterUpdate der Form. Habe leider kein Access im Zugriff, nur die Online Hilfe. Grüße vom marabu |
Re: Datenbank mehr als 24h
Zitat:
Hallo marabu, danke für die Antwort - scheint mir die erste sehr brauchbare zu sein, welche auch auf die Fragestellung eingeht. |
Re: Datenbank mehr als 24h
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz