Seite 1 von 1

Brechnung in Formular durchführen

Verfasst: Mi 21. Apr 2021, 15:56
von Helles58
Hallo zusammen,

ich brauche etwas Hilfe bei Base.
Im Hauptformular in dem ein Unterformular (Tabellen-Steuerelement) eingebettet ist soll eine Berechnung durchgeführt und der Wert angezeigt werden.
Im Unterformular stehen Projektnr, Datum, Beginn und Ende im Zeitformat (HH:MM), hieraus soll die Arbeitszeit berechnet werden. Die DS im Unterformular sollen noch nach Datum gefiltert werden können.

Ich bin dankbar für jeden Tip.

Gruß Helles58

Re: Brechnung in Formular durchführen

Verfasst: Mi 21. Apr 2021, 16:31
von RobertG
Hallo Helles58,

die normalen Lösung dafür ist, dies nicht im Hauptformular sondern im Unterformular zu erledigen. Schließlich liegen die dazu zugehörigen Daten im Unterformular. Im Hauptformular reicht es nicht aus, das Formular mit einer Abfrage auszustatten. Du muss dabei dann auch noch beständig die Abfrage aktualisieren und das Formular aktualisieren und wieder auf den entsprechenden Datensatz springen - geht nicht ohne Makros.

Du baust das Unterformular auf einer Abfrage auf. Du nimmst alle Felder der betreffenden Tabelle in diese Abfrage auf. Wichtig sind hier der Primärschlüssel (da sonst die Abfrage nicht zur Eingabe genutzt werden kann) und der Fremdschlüssel zum Hauptformular (da sonst das Abfrageergebnis nicht zum Hauptformular passt.)

So ein Code für die Abfrage könnte z.B. sein:

Code: Alles auswählen

SELECT "Tabelle".*, DATEDIFF('hour',"Beginn", "Ende") AS "Stunden" FROM "Tabelle"
Bei der HSQLDB muss 'hour' in einfachen Anführungszeichen stehen, bei Firebird hast Du jetzt bereits das erste Problem: die Anführungszeichen müssen weg, das Ding funktioniert dann nur in direktem SQL und damit ist die Abfrage nicht mehr für Eingaben funktionstüchtig.

Also: Erst einmal ein paar mehr Informationen und dann nachschauen, wie da überhaupt mit wenig Aufwand etwas möglich ist.

Gruß

Robert

Re: Brechnung in Formular durchführen

Verfasst: Mi 21. Apr 2021, 17:36
von Helles58
Hallo Robert,
danke für die schnelle Beantwortung.
Ich probier das mal aus.
Wenn es noch klemmt melde ich mich wieder.

Gruß Helles58

Re: Brechnung in Formular durchführen

Verfasst: Do 22. Apr 2021, 13:47
von Helles58
Hallo Robert,

hab den SQl-Code in eine abfrage eingebaut. Funktioniert soweit, nur der Wert wird nicht richtig berechnet.
Es werden nur die vollen Stunden berücksichtigt.
Würde passen wenn die Stunden im UF angezeigt werden und im HF die Summe der angezeigten Daten aus dem UF.
Im HF ist ein Kontrollfeld für die Datumsauswahl daneben ein Textfeld für die Summenanzeige.

Im Anhang ist die DB mit ein paar Daten.

Gruß Helles58
Stundenabrechnung.rar
Testdatei
(19.8 KiB) 144-mal heruntergeladen

Re: Brechnung in Formular durchführen

Verfasst: Do 22. Apr 2021, 16:37
von RobertG
Bei den Zeiten kommt es darauf an, wie Du sie am besten präsentiert haben willst.

Code: Alles auswählen

… DATEDIFF( 'mi', "Beginn", "Ende" )/60.00 AS "Stunden" …
Gibt Dir die Stundenb und die Minuten als Stundenbruchteile an. Die Anzahl der Nachkommastellen kannst Du über die Zusätzlichen Nullen im Nachkommabereich der '60' regulieren.

Für die Abfrage der Summe benutze so etwas wie

Code: Alles auswählen

SELECT "ID", "ProjektNr.", "Datum", "Beginn", "Ende", "Tätigkeit", DATEDIFF( 'mi', "Beginn", "Ende" )/60.00 AS "Stunden", (SELECT SUM(DATEDIFF( 'mi', "Beginn", "Ende" )/60.0000) FROM "T-Zeiterfassung" WHERE "ProjektNr." = "a"."ProjektNr.") AS "Stunden_Projekt" FROM "T-Zeiterfassung" AS "a" ORDER BY "ProjektNr." ASC, "Datum" ASC, "Beginn" ASC
als komplette Abfrage.

Das mit dem Hauptformular hatte ich Dir vorher schon geschrieben: Änderungen, die Du im Unterformular machst, kannst Du nur mit vielen Klimmzügen auch im Hauptformular sehen. Viel einfacher ist es, die im Unterformular mit anzuzeigen. Das hat mit der Position des Feldes aber nichts zu tun. Du kannst das Feld also auch einfach über den Formularnavigator ins Unterformular verschieben und dann mit "Stunden_Projekt" verbinden. Nur zeigt das Feld nur dann etwas an, wenn auch im Unterformular bereits die Berechnung erfolgt ist. Bei Neueingaben steht da dann grundsätzlich nichts. Schließlich wird die Berechnung nach der Eingabe gemacht.

Gruß

Robert

Re: Brechnung in Formular durchführen

Verfasst: Do 22. Apr 2021, 17:29
von Helles58
Hallo Robert,

Danke für deine Hilfe.
Ich denke ich komme jetzt zurecht.
Zumindest mit diesem Problem.

Gruß
Helles58

Re: Brechnung in Formular durchführen

Verfasst: Fr 23. Apr 2021, 14:21
von F3K Total
Moin,
ich hätte da noch folgende Idee: Wenn man

Code: Alles auswählen

DATEDIFF( 'mi', "Beginn", "Ende" )/(60.00000*24) AS "Stunden"
nimmt, kann man im Formular ein "Zeitfeld" oder ein zur Zeit formatiertes "formatiertes Feld" verwenden, das zeigt dann die Zeit z.B als 7:20 an.

Gruß R