Seite 1 von 2

JavaSkript für zeitberechnung

Verfasst: 26.02.2018, 15:13
von mAdi_mAuS
Hallo,

ich möchte in einem Bericht Zeiten zusammen rechnen lassen.
Das ist auch möglich mit folgendem Befehl:

var cStundenRow1 = this.getField("StundenRow1").value;
var cStundenRow2 = this.getField("StundenRow2").value;

if ((cStundenRow1 != "-1") && (cStundenRow2 != "-1"))
{
var nStundenRow1=0,
nStundenRow2=0;
var aStundenRow1 = cStundenRow1.split(":");
nStundenRow1 = Number(aStundenRow1[0]) + Number(aStundenRow1[1])/60;

var aStundenRow2 = cStundenRow2.split(":");
nStundenRow2 = Number(aStundenRow2[0]) + Number(aStundenRow2[1])/60;

var nSumme1 = nStundenRow2 + nStundenRow1;
var nHours = Math.floor(nSumme1 );
var nMinutes = Math.floor((nSumme1 - nHours)*60 + 0.5);
event.value = util.printf("%02d:%02d",nHours, nMinutes);
}

else
event.value = "";

Bevor die Berechnung allerdings stattfindet, muss ich entweder aus zwei Dropdown-Menüs, die Uhrzeiten auswählen und zusammen rechnen lassen, oder ich trage händisch die Uhrzeit in der Spalte StundenRow1 ein.

Dies wurde mit einem Skript realiesiert, welches jetzt nicht mehr funktioniert.

Skript das nicht mehr funktioniert:

var cStartTime = this.getField("VonRow1").value;
var cEndTime = this.getField("BisRow1").value;
var cStunden = this.getField("StundenRow1").value;

if ((cStartTime < "1") && (cEndTime < "1"))
{
cStunden == "StundenRow1";
}
else if ((cStartTime > "0") && (cEndTime > "0"))
{
var nStartTime=0, nEndTime=0;
var aStartTime = cStartTime.split(":");
nStartTime = Number(aStartTime[0]) + Number(aStartTime[1])/60;
var aEndTime = cEndTime.split(":");
nEndTime = Number(aEndTime[0]) + Number(aEndTime[1])/60;
var nTimeDiff = nEndTime - nStartTime;
var nHours = Math.floor(nTimeDiff );
var nMinutes = Math.floor((nTimeDiff - nHours)*60 + 0.5);
event.value = util.printf("%02d:%02d",nHours, nMinutes);
}
else
{
event.value = "";
}

Hat jemand eine Idee wie ich das realisieren kann, die Zeit über die DropDown-Listen ausrechnen und die Zeit händisch in das Feld eintragen zu lassen?

Über Antworten und Hilfen wäre ich dankbar.

JavaSkript für zeitberechnung

Verfasst: 27.02.2018, 14:45
von armine
Ein nicht funktionierender Code bringt weniger Erkennnisse als ein hochgeladenes PDF.
Versuch mal:

if (this.getField("StundenRow1").value && this.getField("StundenRow2").value) {
var Minuten = (1440 + inMinuten(this.getField("StundenRow2").value) - inMinuten(this.getField("StundenRow1").value)) % 1440 ;
event.value = Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
} else {
event.value = ""
}

function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

Das klappt auch in der Nachtschicht.

P.S: Ich würde mich wundern, wenn du dein ganzes Problem beschrieben hättest.

JavaSkript für zeitberechnung

Verfasst: 27.02.2018, 16:23
von mAdi_mAuS
Danke schön für deine Hilfe armine.

Mit folgenden Skript kann ich nun die Zeiten von zwei DropDown-Listen ausrechnen lassen:

if (this.getField("VonRow1").value && this.getField("BisRow1").value) {
var Minuten = (1440 + inMinuten(this.getField("BisRow1").value) - inMinuten(this.getField("VonRow1").value)) % 1440 ;
event.value = Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
} else {
event.value = ""
}

function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

Aber mein Problem ist, dass ich manchmal auch Händisch die Zeiten in das Feld StundenRow1 eintragen muss. Beispielsweise schreibe ich dann "00:45" in das Feld rein. Und im Feld Summe rechnet es StundenRow1 und StundenRow2 zusammen.

Nur leider funktioniert, dass mit dem händisch eintragen bei dem Skript nicht.

Könntest du mir weiter helfen?

JavaSkript für zeitberechnung

Verfasst: 27.02.2018, 17:02
von armine
Auch ein funktionierender Code bringt weniger Erkennnisse als ein hochgeladenes PDF.

JavaSkript für zeitberechnung

Verfasst: 06.03.2018, 11:24
von mAdi_mAuS
Hallo,

ich habe jetzt ein PDF erstellt, welches den Servicebericht zeigt, mit dem ich entweder über die DropDowns die Zeit auswählen möchte, die ich beim Kunden war, oder es händisch bsp. 00:15 eintragen möchte. Wenn ich mit den DropDowns arbeite, soll es mir bei StundenRow die Zeit berechnen, die ich dort war.

Das Skript, welches hinterlegt ist bei StundenRow 1 und 2 hat auch mal funktioniert. Jetzt aber nicht mehr.

Über Hilfe würde ich mich freuen.

JavaSkript für zeitberechnung

Verfasst: 06.03.2018, 15:14
von armine
Also darum geht es.

Wenn du etwas eingeben willst, sollte das Feld das auch ermöglichen.
Wo hast du den deine Berechnungsformel her?

Re: JavaSkript für zeitberechnung

Verfasst: 09.03.2018, 14:56
von mAdi_mAuS
Hallo,

die Berechnung habe ich selbst schon vor einigen Jahren erstellt. Habt bisher auch alles reibungslos funktioniert.

Aber mein Problem ist immer noch nicht behoben, denn ich kann bei StdRow immer noch kein 0:15 eintragen.

Wäre schön wenn ich weiterhin Hilfe bekomme.

Re: JavaSkript für zeitberechnung

Verfasst: 09.03.2018, 15:40
von armine
In meinem PDF kannst du "0:15" und auch "00:15" eintragen, die Berechnung funktioniert.

Re: JavaSkript für zeitberechnung

Verfasst: 12.03.2018, 09:22
von mAdi_mAuS
Hallo,

vielen Dank für die Antwort, aber leider haben wir wohl missverstanden.

Bei der Eintragung in den Drop-Down Feldern funktionierte die Berechnung schon immer. Nur wenn die Eingabe nicht über die Drop-Down Felder, sondern direkt und nur in StdRow, gemacht wird, ist dies nicht möglich, auch bei Ihrer Vorlage nicht. Das Feld ist nicht beschreibbar.
Wir benötigen aber beide Funktionen.

Danke schon mal im Voraus für die weitere Hilfe.

Re: JavaSkript für zeitberechnung

Verfasst: 18.09.2022, 11:43
von schmitzkatze
Hallo, ich habe schon vor einiger Zeit ein PDF Formular für die Stundenberechnung erstellt, und möchte mich mal wieder daran wagen. Ich habe hier ein Script von mAdi_AuS bzw. Armine , welches soweit funktioniert.... aber hier werden nur wenige Row's zusammengerechnet,?

Ich habe ein Formular erstellt:

In der beigefügten PDF werden nur die Summen aus Feld VonFeld und BisFeld in Gesamtsumme addiert, die aus VonFeld3 - BisFeld5 eben nicht.
Leider bekomme ich es nicht hin, mangels "Java erfahr."

Auch würde ich noch gerne die 2 Felder mit einbringen. Pause und Zuschlag


Gruss Andreas


var Minuten = [0,0,0] ;
for (i = 1; i < 6; i++) {
if (this.getField("VonFeld" + i).value && this.getField("BisFeld" + i).value) {
Minuten = (1440 + inMinuten(this.getField("BisFeld" + i).value) - inMinuten(this.getField("VonFeld" + i).value)) % 1440 ;
this.getField("StundenFeld" + i).value = MinutenZuZeitstring(Minuten)
} else {
this.getField("StundenFeld" + i).value = ""
}
}
event.value = MinutenZuZeitstring(Minuten[1] + Minuten[2]) ;


function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

function MinutenZuZeitstring(Minuten) {
return Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
}