BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Brechnung in Formular durchführen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Helles58
Beiträge: 82
Registriert: Mo 17. Jul 2017, 19:51

Brechnung in Formular durchführen

Beitrag von Helles58 » Mi 21. Apr 2021, 15:56

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

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Brechnung in Formular durchführen

Beitrag von RobertG » Mi 21. Apr 2021, 16:31

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Helles58
Beiträge: 82
Registriert: Mo 17. Jul 2017, 19:51

Re: Brechnung in Formular durchführen

Beitrag von Helles58 » Mi 21. Apr 2021, 17:36

Hallo Robert,
danke für die schnelle Beantwortung.
Ich probier das mal aus.
Wenn es noch klemmt melde ich mich wieder.

Gruß Helles58

Helles58
Beiträge: 82
Registriert: Mo 17. Jul 2017, 19:51

Re: Brechnung in Formular durchführen

Beitrag von Helles58 » Do 22. Apr 2021, 13:47

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) 100-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Brechnung in Formular durchführen

Beitrag von RobertG » Do 22. Apr 2021, 16:37

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Helles58
Beiträge: 82
Registriert: Mo 17. Jul 2017, 19:51

Re: Brechnung in Formular durchführen

Beitrag von Helles58 » Do 22. Apr 2021, 17:29

Hallo Robert,

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

Gruß
Helles58

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Brechnung in Formular durchführen

Beitrag von F3K Total » Fr 23. Apr 2021, 14:21

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
Windows 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten