Zeitberechnung / SunReportBuilder 1.1.0

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von geimist »

Hallo,

in einem SunReportBuilder-Bericht habe ich ein Zeitfeld mit einer einfachen Funktion: [Uhrzeit-Beginn]+[Dauer1] (sind 2 Datenbankfelder)
Das funktioniert eingentlich auch ganz gut. Seit der Umstellung auf OpenOffice 3.1 und damit auch auf den SunReportBuilder 1.1.0 zeigt dieses Feld im Ergebnis nur noch 00:00 an.

Hat sich die Syntax zur Berechnung geändert, oder hat jemand einen anderen Tip?
Zuletzt geändert von geimist am Mi, 27.05.2009 11:28, insgesamt 2-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von eBayer »

Hallo Stephan,
mir fällt auf, daß Du [Uhrzeit-Beginn]+[Dauer1] schreibst.
Wenn Uhrzeit oder Beginn Datenbankfelder sind, müsstest Du das anders codieren.
Datenbankfelder müssen in eckige Klammern gesetzt werden (jedes Feld), wenn sie in einer Formel eingesetzt werden: (([Uhrzeit]-[Beginn])+[Dauer1])
Möglicherweise hat das die Version 1.06 toleriert. Bis jetzt konnte ich jedenfalls keinen Fehler in 1.10 feststellen, habe aber erst gestern vorsichtshalber nur auf meinem Laptop umgestellt. Ich glaube aber, daß die Reports schneller laufen (subjectiver Eindruck).
Gruss eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von geimist »

Es ist eine einfache Addition aus dem Feld "Uhrzeit-Beginn" und "Dauer1" (dem Sinn nach: 12:00 Uhr + 45 min. soll die Schlußzeit von 12:45 Uhr ausgeben)

Ich habe auch nochmal wie in deinem Beispiel alles in eine gesamte Klammer gesetzt: ([Uhrzeit-Beginn]+[Dauer1]), aber so erfolgt gar keine Ausgabe.

Gibt es noch eine andere Idee?
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von eBayer »

Ich hatte vorgeschlagen, jedes in einer Formel verwendete Feld in eckige Klammern zu setzen, was auch irgendwo dokumentiert ist.
Ich verwende beispielsweise zur Darstellung von Nachname + Vorname die folgende Syntax: [Nachname] & ", " & [Vorname]
Deshalb würde ich sowohl Uhrzeit, wie auch Beginn in eckige Klammern setzen, wenn es sich dabei um Datenbankfelder handelt.
so: [Uhrzeit]-[Beginn]
Einen Versuch sollte es wert sein.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von geimist »

Der Bindestrich zwischen Uhrzeit und Beginn ist wirklich etwas iritierend, aber so ist nun einmal der Feldname in der Datenbank: "Uhrzeit-Beginn". Den soll ich doch nicht wirklich trennen, oder? In der Formel kommen nur 2 Felder vor: 1. Feld: "Uhrzeit-Beginn" 2. Feld: "Dauer1"
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von eBayer »

OK, das konnte ich wirklich so nicht erkennen.
Aber der Bindestrich im Feldnamen ist ein potenzieller Problemfall. Wenn Du so nicht weiterkommst, würde ich vorschlagen, den Feldnamen zumindest testweise mal zu ändern (Bindestrich in Unterstrich ändern) ...... nicht nur in der Tabelle, sondern natürlich auch im Report :?
Gruss eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0

Beitrag von geimist »

Deinem Vorschlag entsprechend habe ich einmal den Ausgabefeldnamen in der zugrundeliegenden Abfrage entsprechende Aliase vergeben. Das Ergebnis bleibt allerdings unverändert.

Anbei habe ich mal schnell ein Beispieldatenbank zusammengestellt. Ich habe keinerlei Zeitberechnungen hinbekommen. :(
Dateianhänge
TEST_Zeitberechnung.odb
Beispieldatenbank für Zeitberechnungen mit SunReportBuilder 1.1.0
(14.14 KiB) 99-mal heruntergeladen
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

Beitrag von geimist »

Bisher habe ich die Formeln immer von Hand eingegeben. Ab Version 1.1.0 des Reportbuilders steht ja nun auch der Formeleditor zur Verfügung (Release-Notes: 1.1.0: formula editor and support of the ODF formula syntax). Damit habe ich es auf folgende Weise versucht: SUM([Uhrezeit];[Dauer]) - leider ohne Erfolg :(

Kennt sich jemand mit dem Formeleditor aus? Welche Funktionen muss ich für eine Zeitberechnung verwenden?
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

Beitrag von eBayer »

Hallo Stephan,
schau doch mal hier nach..... (da geht es um SRB und Formel Editor)
http://www.mail-archive.com/dev@dba.ope ... 01928.html

Alternative: die Zeit selbst berechnen und das Ergebnis dem Report zur Verfügung stellen.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

Beitrag von geimist »

Hallo eBayer,

Danke für den Tipp! Auf die einfachsten Sachen kommt man manchmal nicht :lol:

Aber so einfach, wie gedacht, ging es dann noch wieder nicht.
Fehler: SQL-Status: 37000
Fehler-Code: -16
Wrong data type: java.lang.NumberFormatException in statement [SELECT "Uhrezeit" + "Dauer" FROM "Tabelle1" AS "Tabelle1"]


Gibt es einen Tipp vom Fachmann?

Danke
Dateianhänge
TEST_Zeitberechnung.odb
mit Abfrage zum berechnen der Zeit
(14.18 KiB) 64-mal heruntergeladen
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

Beitrag von Barlee »

Hallo geimist,
Gibt es einen Tipp...
Benutze für solche Berechnungen nicht HSQLDB, sondern eine richtige DB. ;-)
Im Ernst. HSQLDB unterstützt derzeit keine Berechnung von Zeiten, wie man es von anderen DB Systemen gewohnt ist. Insofern sollte es eine Überlegung wert sein.
Trotzdem habe ich einmal versucht, das Problem mit der Base internen DB zu lösen.
("SQL direkt ausführen" muss aktiviert sein)

Code: Alles auswählen

SELECT 
"Start", "Dauer", "STD_NEU","MIN_NEU","SEK_NEU",
CAST("STD_NEU"||':'||"MIN_NEU"||':'||"SEK_NEU" AS TIME)as "ZEIT_NEU"

FROM
(
SELECT
"Start", "Dauer", "std","min","sek",
(CASE 
WHEN "sek" >= 60 THEN 
	CASE 
	WHEN "min"+1 >=60 THEN
		CASE 
		WHEN "std"+1 >=24 THEN "std"+1-24
		ELSE "std"+1
		END
	ELSE --min <60
		CASE 
		WHEN "std" >=24 THEN "std"-24
		ELSE "std"
		END
	END
ELSE --sekunden <60
	CASE 
	WHEN "min" >=60 THEN
		CASE 
		WHEN "std"+1 >=24 THEN "std"+1-24
		ELSE "std"+1
		END
	ELSE --min <60
		CASE 
		WHEN "std" >=24 THEN "std"-24
		ELSE "std"
		END
	END

END) as "STD_NEU",

(
CASE 
WHEN "sek" >= 60 THEN 
	CASE 
	WHEN "min"+1 >=60 THEN "min"+1-60		
	ELSE "min"+1
	END
ELSE --sek <60
	CASE 
	WHEN "min" >=60 THEN "min"-60		
	ELSE "min"
	END
END
) as "MIN_NEU",

(
CASE 
WHEN "sek" >= 60 
THEN "sek"-60 
ELSE "sek"
END
)

as "SEK_NEU"

FROM
(
SELECT
"Uhrezeit" as "Start", 
"Dauer" as "Dauer",
EXTRACT(HOUR from "Uhrezeit")+EXTRACT(HOUR from "Dauer") as "std",
EXTRACT(MINUTE from "Uhrezeit")+EXTRACT(MINUTE from "Dauer") as "min",
EXTRACT(SECOND from "Uhrezeit")+EXTRACT(SECOND from "Dauer") as "sek"
from "Tabelle1"
)
as "Zeit"
)
as "Zeit1"
mit folgendem Ergebnis:
zeit1.png
zeit1.png (5.76 KiB) 2171 mal betrachtet
Gruß Barlee
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

Beitrag von geimist »

Hallo Barlee,

erst einmal vielen Dank für deine Mühe. Ich werde noch ein wenig Zeit benötigen, bis ich deinen Vorschlag in meine Datenbank implementieren kann. Ich melde mich dann noch mal. Danke.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten