Bericht für einen bestimmten Zeitraum erstellen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

Hallo,
ich habe eine Tabelle, in der Arbeitszeiten notiert sind, jetzt möchte ich einen Bericht für einen bestimmten Zeitraum definieren.
Bei der Datenbankabfrage habe ich das hinbekommen, aber wo definiere ich das?
(ich bin gerade erst dabei, mit in die Datenbank einzuarbeiten, also Newbie, habe das schon gegoogelt, aber nix gefunden...)
Danke!
Robert170
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Hi,
anbei ein kleines Beispiel. So mache ich es meist. Du nimmst eine kleine, einzeilige Tabelle Filter hinzu.
Die Felder von und bis kannst Du im Formular DatumsFilter eintragen.
Wenn Du dann filtern drückst, werden sie in die Tabelle Filter geschrieben.
Da die Abfrage qGefilterteDaten nur die Datensätze anzeigt, die zwischen von und bis liegen, und diese Abfrage auch der Dateninhalt des Unterformulares Datenformular ist, siehst du nur noch die gefilterten Datensätze im Formular.
Machst Du die Abfrage qGefilterteDaten zur Grundlage deines Berichtes, kannst du den Zeitraum im Formular DatumsFilter einstellen und dann den Bericht öffnen.
Gruß und viel Erfolg R
Dateianhänge
Arbeitszeiten_Bericht.odb
(24.47 KiB) 189-mal heruntergeladen
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

Ah, super, danke, jetzt verstehe ich die Logik so langsam, man führt _erst_ eine Abfrage aus und nimmt diese dann als Grundlage des Berichts....
Das war mir vorher nicht so klar, ich habe nur immer versucht im Bericht zu filtern....
Jetzt versuche ich gerade noch in den Bericht die Summe der Arbeitszeit, die Summe der Fahrtzeit und die Summe AZ + FZ/2 hinzubekommen, da die Fahrtzeit nur halb gerechnet wird.
Die Abfragen als Summe habe ich sogar hinbekommen :D
Allerdings frage ich mich
- wie ich die Summe AZ + FZ/2 hinbekomme
- wie ich das unten in den Bericht einbaue, denn der Bericht scheint nur auf eine Abfrage zugreifen zu können
Datei ist im Anhang
Dateianhänge
Arbeitszeiten_Bericht-v2.odb
(66.87 KiB) 98-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Hi,
eigentlich sollte man die Summen nicht in einer Abfrage berechnen müssen, der Reportbuilder müsste es selbst können, allein ich habe es nicht hinbekommen.
Darum gibt es eine weitere Abfrage, in der ich jeder Zeile die Summen zugefügt habe, die im Bericht dann in den Detailfuß, der erst eingeschaltet werden musste, gelegt sind.
In der Abfrage sind zwei IFNULL Spalten, sonst klappt der Bericht nicht.

Gruß R
Dateianhänge
Arbeitszeiten_Bericht-v2.odb
(79.05 KiB) 112-mal heruntergeladen
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

ah danke, das beruhigt mich, ich hatte es nämlich im Reportbuilder auch versucht.
Es klappt immerhin, dass ich die Summe aus Arbeits- und Fahrtzeit mit Hilfe der Summenfunktion hinbekomme, ich habe es noch etwas angepasst.
Jetzt hänge ich noch an zwei Sachen, die Syntax ist echt immer so ne Sache
- Ich will verschiedene Arten von Berichten machen, je nach Tätigkeitsart, da habe ich jetzt auch ein Feld eingefügt und im Eingabeformular eine Combobox vorgehsehen, die Daten dazu stehen in einer Extra-Tabelle. Ich bekomme es aber nicht genau hin, danach zu filtern... Das sollen dann drei oder vier verschiedene Berichte sein, je nach Tätigkeitsart
- Ähnliches gilt für den Bericht für die Reiseabrechnung und den Steuerberater, da sollen dann natürlich nur die Datensätue auftauchen, bei denen das Feld markiert ist. (Aber natürlich alles im anfangs gewählten Zeitraum).
Ich verzweifel da manchmal echt an der Syntax, ich weiß zwar ziemlich genau, was ich will, aber das Umsetzen ist dann echt so ne Sache..
Datei in der Dropbox, leider etwas größer als die erlaubten 250 kB
https://dl.dropboxusercontent.com/u/281 ... ht-v2a.odb
PS: Wohin darf ich den Bierkasten schicken :D
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

Ich bin jetzt schon ein Stück weiter, allerdings werden bei Eingabeformular die Daten aus dem Kombo-Feld "Verfpflegungspauschale" nicht in die Tabelle übernommen, ich habe einfach das "Art"-Feld übernommen und die SQL-Abfrage abgeändert, angezeigt wird es.
Bei der Summenfunktion im Abrechnungsbericht ging das mit der Summe nur mit der SUMA-Funktion, vielleicht, weil es Währungen sind, davon hatten wir es ja gestern, dass die Summenfunktion da scheinbar nicht richtig funktioniert...
Dateianhänge
Arbeitszeiten_Bericht-v2b.odb
(124.17 KiB) 110-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Hi,
da hast du bei der Übernahme des Art-Feldes vergessen das Datenfeld auf Verpflegungspauschale umzustellen, momentan überschreibst Du mit dem Listenfeld gerade die Tätigkeitsart. Siehe Bild.
Datenfeld_Listbox.png
Datenfeld_Listbox.png (24.38 KiB) 4765 mal betrachtet
Gruß R
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Naja,
trage doch die tatsächliche Pauschale ein, indem du den SQL-Befehl des Listenfeldes vereinfachst

Code: Alles auswählen

SELECT "Verpflegungspauschale" FROM "Verpflegungspauschalen"
und das gebundene Feld auf 0 setzt.
EDIT: Das klappt nicht, wieso auch immer. Ist mir ein Rätsel.
EDIT 2 Mit diesem SQL-Befehl geht es:

Code: Alles auswählen

SELECT "Verpflegungspauschale", "Verpflegungspauschale "FROM "Verpflegungspauschalen"
EDIT 3: Komisch, ein Listenfeld innerhalb eines Tabellenkontrollfeldes, oder eines, was Text schreibt, benötigt nur eine Spalte im SQL-Befehl, so wie ich es oben geschrieben hatte, mit dem Schreiben von Dezimalzahlen sieht es komischerweise anders aus. EDIT 4: Nur mit AOO geht es nicht mit einer Spalte, siehe unten ...
Gruß R
Zuletzt geändert von F3K Total am So, 29.12.2013 22:39, insgesamt 1-mal geändert.
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

ja komisch, ich hatte es nämlich auch erst mal so versucht wie du und eine Fehlermeldung erhalten.
Dummerweise liefert mir Libreoffice auf den zweiten SQL-Befehl auch eine Fehlermeldung:
EDIT: Sorry, der erste Befehl funktioniert bei mir doch, hatte einen Kopierfehler, aber der zweite nicht (LibreOffice 4.1.4.2)
Dateianhänge
Bildschirmfoto 2013-12-29 um 22.24.26.png
Bildschirmfoto 2013-12-29 um 22.24.26.png (39.11 KiB) 4747 mal betrachtet
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Jetzt werd ich noch ganz verrückt, mit LO geht's, AOO geht nicht, scheint ein Bug zu sein.
EDIT Und jetzt der Oberknaller: Eine mit LO geändertes Listenfeld funktioniert dann auch wieder in AOO mit einer Spalte.
Gruß R
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

Willkommen im Club :D
Ich habe jetzt im Bericht "Abrechnung" noch zwei Sachen, die ich nicht kapiere:
1. Die Zeilensumme wird nur in der ersten Zeile gebildet??? Warum nicht in den weiteren Zeilen
2. Die Spaltensumme wird zwar bei der Verpflegungspauschale gebildet, bei der Übernachtungspauschale und beim Parken aber nicht, die Felder sind aber exakt gleich, außer dass halt der Bezug zum Datenfeld anders ist??
Dateianhänge
Arbeitszeiten_Bericht-v2b.odb
(134.87 KiB) 107-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

Tja,
1.) Darum verwende ich möglichst wenige Berichtsfunktionen, rechne stattdessen in der Abfrage, siehe Anhang.
2.) Es gibt einen Unterschied zwischen der Zahl 0.0 und einem leeren Datenbankfeld (is null).
Während die Berechnung von 10 * 0 = 0 ist, ergibt die Berechnung von 10 * nix (is Null) eben nix. Oder anders ausgedrückt, mit einem leeren Feld kann man nicht rechnen. Darum gibt es die SQL-Funktion IFNULL oder auch COALESCE, die, wenn ein Feld leer ist, einen Alternativwert erzeugen, der kann z.B. als 0.0 gesetzt werden. Mit leeren Feldern muss man wirklich aufpassen.

Gruß R
Dateianhänge
Arbeitszeiten_Bericht-v2c.odb
(168.25 KiB) 110-mal heruntergeladen
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

ok, wieder nen Schritt weiter und um eine Erkenntnis reicher. Jetzt hängts daran, dass ich die Reiselänge berechnen will, als Differenz von Reiseende – Reisebeginn.
Geht aber wieder mal nicht so einfach: Die Funktion Datedif liefert in ihrer höchsten Auflösung Tage, ich brauche aber Stunden.. Wenn ich ein neues Feld definiere bleibt das mal wieder leer, siehe Anhang, ich habe es auch mit verschiedenen Formaten versucht.
Vermutlich sollte man es auch in die Abfrage einbauen, siehe deinen letzen Post, aber dann habe ich vermutlich auch wieder das Formatproblem...
Dateianhänge
Arbeitszeiten_Bericht-v2d.odb
(190.4 KiB) 108-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von F3K Total »

jut,
Datediff kann viel mehr. z.B. 'mi'-> Minuten
Mit

Code: Alles auswählen

Datediff('mi',"Reisebeginn", "Reiseende")/1440.0000000 as "Reisedauer"
errechnest du die Zeit in "Dezimaltagen". Wenn Du dann das anzeigende Kontrollfeld mit

Code: Alles auswählen

[HH]:MM
formatierst, ist alles in Butter.
Gruß R

EDIT: Nicht das IFNULL vergessen

Code: Alles auswählen

IFNULL((DATEDIFF( 'mi', "Reisebeginn", "Reiseende" ) / 1440.0000000),0) AS "Reisedauer"
robert170
***
Beiträge: 55
Registriert: Do, 02.11.2006 16:37

Re: Bericht für einen bestimmten Zeitraum erstellen

Beitrag von robert170 »

ok, so langsam verstehe ich die Logik, hat gut funktioniert, thx.
So langsam komme ich zur letzten Frage, damit ich das Thema noch in diesem Jahr abschließen kann...
Die eben berechnete Reisedauer sollte schon im Eingabeformular angezeigt werden, damit sie entscheiden kann, welche Verpflegungspauschale gewählt werden sollte (sie will das mit den Pauschalen mit der Hand machen, daher werden die nicht automatisch berechnet).
Ich habe es gerade versucht, allerdings sollte es ja direkt nach Verlassen des Reiseende-Feldes berechnet und angezeigt werden, da hänge ich im Moment...
Antworten