Zeitberechnung bei Termineingabe

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Dr. Duhn
Beiträge: 4
Registriert: So, 07.02.2021 20:05

Zeitberechnung bei Termineingabe

Beitrag von Dr. Duhn »

Moin zusammen,

ich habe jetzt aufgegeben und bitte um Eure Hilfe!
AOO417m1(Build:9800)


Folgende Situation:

Ich erstelle eine Datenbank in der ich gerne erst einmal Termine für Massagen festhalten möchte.

Jetzt habe ich mehrere Tabellen erstellt, wie z.B.: Kundenname – Mitarbeitername – Startzeit – Dauer und so weiter........
Die Daten aus den Tabellen wähle ich über ein Formular in aufklappbaren Listenfeldern aus und erstelle so einen Termin mit den oben beschriebenen Daten.

Und nun geht’s los!

Das Problem liegt bei der „Startzeit“ und bei der „Dauer“.

Die Startzeiten sind fix in der Tabelle in Viertelstunden vorgegeben (Feldtyp: Zeit; Format: 00:00).
Beispiel: 07:15; 07:30; 07:45; 08:00;..........bis 22:00
Eingabe über das Listenfeld Startzeiten.

Die Dauer (in Std.) ist ebenfalls fix in der Tabelle in Halbestunden vorgegeben, aber eben als Feldtyp Dezimal mit 2 Nachkommastellen.
Beispiel: 0,50; 1,00; 1,50; 2,00;..........bis 5,00
Eingabe über das Listenfeld Dauer.

Jetzt erstelle ich in dem Eingabeformular ein Unterformular in Form eines Tabellenkontrollfelds, wo die eingegebenen Daten mittels einer Abfrage angezeigt werden sollen.
Beispiel: Kundenname – Mitarbeitername – von – bis........
Also, die Startzeit bleibt gleich (nur eine andere Bezeichnung [von]), aber das -bis- bereitet mir Probleme. Das -bis- soll natürlich wieder als Uhrzeit angezeigt werden.

07:15 Uhr + 2,50 Std. = 09:45 Uhr

Frage 1: Wie muss die Abfrage lauten damit ich eine Uhrzeit erhalte?

Frage 2: Das Listenfeld Startzeiten zeigt leider immer nur im Format 07:15:00 an. Wie bekomme ich die Sekunden weg?


Ich hoffe, ich habe mich verständlich ausgedrückt und danke Euch schon mal!!!

Gruß
Dr. Duhn

RobertG
*******
Beiträge: 1949
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Zeitberechnung bei Termineingabe

Beitrag von RobertG »

Du arbeitest mit AOO und der eingebauten HSQLDB. Damit hast Du dann natürlich Probleme. Die eingebaute HSQLDB kennt die Funktion DATEADD nicht. Wenn Du mit LibreOffice arbeiten würdest, dann hätte ich die interne Firebird-Datenbank vorgeschlagen. Die kann zu Datumswerten und Zeitwerten Zahlen addieren und dann wieder Datumswerte und Zeitwerte ausgeben.

Du kannst zu einem Trick greifen, der Dir die Uhrzeiten dann anzeigt, aber in Wirklichkeit mit Dezimalzahlen arbeitet, Voraussetzung ist, dass Du aus dem Gemenge nicht nachher die Zeit an einem bestimmten Tag auslesen willst. Der Tag sollte durch ein separates Datum bestimmt werden.

Definiere das Feld, dass Deine Uhrzeit beinhalten soll, als Dezimalzahl-Feld. 0,5 in einem Dezimalzahlfeld wird bei der Formatierung als Uhrzeit dann 12:00:00 Uhr. Du brauchst aber mindestens 6 Nachkommastellen. Du brauchst auch nicht die Genauigkeit eines Dezimalzahlfeldes. Vielleicht reicht ein DOUBLE-Feld ja aus.

Deine Auswahlfelder bestückst Du jetzt mit Listenfeldern. Die Listenfelder zeigen zeigen etwas anderes an als sie abspeichern. Steht da 1/4 Std, so speichern sie 0,010416666666667. Die Werte, die gespeichert werden sollen, ermittelst Du einfach in Calc. 1 Tag ist 1, 1 Std 1/24, 1/4 Std = 1/(24*4).

Wie gesagt, das Ganze ist eine Krücke. Für Zeiten benutzt Du besser eine Datenbank, die Befehle wie DateAdd kennt.

Gruß

Robert

Dr. Duhn
Beiträge: 4
Registriert: So, 07.02.2021 20:05

Re: Zeitberechnung bei Termineingabe

Beitrag von Dr. Duhn »

Moin,
danke erstmal für die schnelle Antwort!

So einen ähnlichen Ansatz habe ich schon einmal mit einem Float-Feld versucht (auch hier im Forum beschrieben).
Nur da ist das selbe Problem wie mit dem Dezimalfeld jetzt.
Wenn ich im Formular ein Listenfeld erstelle zeigt mir die Auswahlliste nicht 12:00 sondern 0,5 an.

Vielleicht habe ich Dich aber auch nur nicht richtig verstanden?!?!

Es muss nicht zwingend mit Zeiten gerechnet werden, es soll im Formular nur als Zeit dargestellt (12:00) werden.

Gruß
Dr. Duhn

RobertG
*******
Beiträge: 1949
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Zeitberechnung bei Termineingabe

Beitrag von RobertG »

Das Listenfeld hat in der Dateneingabe an erster Position 0,5 stehen. Diesen Wert speichert es ab.
In der Liste des Reiters "Allgemein" schreibst Du an erster Position 12:00. Das ist nur ein Text. Dieser Text wird angezeigt.

Dr. Duhn
Beiträge: 4
Registriert: So, 07.02.2021 20:05

Re: Zeitberechnung bei Termineingabe

Beitrag von Dr. Duhn »

Jetzt habe ich es verstanden, danke!

Ich muss aber gestehen, um es einfach zu gestalten habe ich Anfangs nicht alles erwähnt.
Schande über mein Haupt!

In der Tabelle "Startzeit", von der die Daten genommen werden, habe ich noch eine BOOLEAN-Spalte eingefügt. Hier wird mit dem Haken ausgewählt welche Startzeiten Aktiv sind und somit auch im Listenfeld zur Auswahl angezeigt werden.
Im Formular realisiere ich das im Listenfeld unter dem Reiter "Daten" mit einer SQL Abfrage in der dann eben nur die Zeiten mit "WAHR" angezeigt werden.
Daher kann ich auch die besagten Einträge nicht tätigen. Ich möchte auf diese "Aktivierung" auch nicht verzichten.
Gibt es nicht irgendeine andere Möglichkeit unter AOO das zu realisieren.
Wie schon gesagt, es muss nicht zwingend mit dem Typ Zeit gerechnet werden.
Ich versuche mich gerade an CASEWHEN-Varianten, es mangelt aber auch hier an Wissen.

Hab mir mittlerweile sogar das komplette Handbuch ausgedruckt. Für Laien einfacher nachzulesen, finde ich.

RobertG
*******
Beiträge: 1949
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Zeitberechnung bei Termineingabe

Beitrag von RobertG »

Vielleicht hilft Dir ein Blick auf die erste Datenbank aus dem Buch für Beispieldatenbanken. Da geht es dann aber um Zeitmessung direkt mit dem Rechner. Das, was der HSQLDB da auf dei Sprünge helfen kann, ist leider nur entsprechender Makroaufwand. Da gibt es dann auch die Funktion DateAdd.

F3K Total
********
Beiträge: 3543
Registriert: Mo, 28.02.2011 17:49

Re: Zeitberechnung bei Termineingabe

Beitrag von F3K Total »

Moin,
ich wollte es ausprobieren, mit entsprechendem SQL-Code, Zeiten als Integer funktioniert es auch ohne Makro, siehe Beispiel anbei.

Gruß R
Dateianhänge
DrDuhn.odb
(17.19 KiB) 3-mal heruntergeladen

Dr. Duhn
Beiträge: 4
Registriert: So, 07.02.2021 20:05

Re: Zeitberechnung bei Termineingabe

Beitrag von Dr. Duhn »

Moin R,
das sieht schon sehr genial aus.
Ich komme leider erst zum WE dazu es in meiner Datenbank umzusetzen.

Vorweg auf jeden Fall schon mal ein riesiges Dankeschön an euch Beide!!!
Ich melde mich zum WE hin wieder.

Gruß
Dr. Duhn

Antworten