Zeitberechnung / SunReportBuilder 1.1.0

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zeitberechnung / SunReportBuilder 1.1.0

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

von geimist » Mi, 27.05.2009 11:27

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.

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

von Barlee » Di, 26.05.2009 22:05

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) 2179 mal betrachtet
Gruß Barlee

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

von geimist » Mo, 25.05.2009 18:08

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

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

von eBayer » So, 24.05.2009 16:58

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

Re: Zeitberechnung / SunReportBuilder 1.1.0 UNGELÖST

von geimist » So, 24.05.2009 14:58

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?

Re: Zeitberechnung / SunReportBuilder 1.1.0

von geimist » Fr, 08.05.2009 18:08

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

Re: Zeitberechnung / SunReportBuilder 1.1.0

von eBayer » Fr, 08.05.2009 17:21

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

Re: Zeitberechnung / SunReportBuilder 1.1.0

von geimist » Fr, 08.05.2009 17:14

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"

Re: Zeitberechnung / SunReportBuilder 1.1.0

von eBayer » Fr, 08.05.2009 17:09

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

Re: Zeitberechnung / SunReportBuilder 1.1.0

von geimist » Fr, 08.05.2009 16:59

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?

Re: Zeitberechnung / SunReportBuilder 1.1.0

von eBayer » Fr, 08.05.2009 16:33

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

Zeitberechnung / SunReportBuilder 1.1.0

von geimist » Fr, 08.05.2009 14:28

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?

Nach oben