Wenn - Dann Funktion

Die Möglichkeiten und Tücken von Formularen
Antworten
answer
Beiträge: 2
Registriert: 20.02.2020, 17:16

Wenn - Dann Funktion

Beitrag von answer » 20.02.2020, 17:29

Hallo Liebe Acronauten,

ich habe folgendes Problem!

Ich habe eine PDF Formular erstellt, dort sollen die Nutzer Ihre Arbeitszeiten eintragen.

1. Feld - Arbeitszeit Beginn
2. Feld - Arbeitszeit Ende
3. Feld - Arbeitszeit Gesamt
4. Feld - abzuziehende Pausenzeit (0:30h oder 0:45h)

Wenn als im Feld 3 (Arbeitszeit Gesamt) kleiner gleich "9:30h" steht, soll im Feld 4 "0:30h" stehen und wenn im Feld 3 gößergleich "9:31h" steht, soll im Feld 4 "0:45h" stehen.

Ich hoffe mir kann geholfen werden :)

Vielen Dank um Voraus!

Mario

answer
Beiträge: 2
Registriert: 20.02.2020, 17:16

Re: Wenn - Dann Funktion

Beitrag von answer » 27.02.2020, 09:05

Hallo,

bisher habe ich folgendes und es funktioniert.

Code: Alles auswählen

var dauer = this.getField("mo-dauer").value;

dtdauer = dauer.toString();
dtdauer = dtdauer.split(":");
var dtStartH = Number(dtdauer[0]);
var dtStartM = Number(dtdauer[1]);

var zeitdauer = dtStartH * 60 + dtStartM;

var pause = this.getField("mo-pause").value;

dtpause = pause.toString();
dtpause = dtpause.split(":");
var dtStartH = Number(dtpause[0]);
var dtStartM = Number(dtpause[1]);

//Umrechnen der Minuten in Stunden
var zeitpause = dtStartH * 60 + dtStartM;

//Ausgabe der Berechneten Zeit als hh:mm
this.getField("wo-aznetto").value=((zeitdauer-zeitpause)-(zeitdauer-zeitpause)%(60))/60 +":"+ (zeitdauer-zeitpause)%(60)
Hat jemand noch Verbesserungsvorschläge?

Danke Mario
Zuletzt geändert von answer am 27.02.2020, 09:07, insgesamt 1-mal geändert.

Benutzeravatar
Menni
Beiträge: 65
Registriert: 18.12.2019, 14:47

Re: Wenn - Dann Funktion

Beitrag von Menni » 27.02.2020, 11:06

Hi Mario,

mit Zeiten zu rechnen ist leider nicht so einfach. Man muss die Zeitwerte erst in Zahlenwerte umwandeln, um dann Berechnungen anzustellen.
Du könntest es z.B. so realisieren:
2020-02-27_10h40_54.png
Alle Felder haben das Format Zeit (HH:MM).
In den Eigenschaften des Feldes "tGesamt" fügst du bei Berechnung folgendes Script ein:

Code: Alles auswählen

var tS = this.getField("tStart").value;
var tE = this.getField("tEnd").value;

var numStartZ = startZeit();
var numEndZ = endZeit();

function startZeit(){						
	var sZeit = new Date(),			//erzeugt ein Datum von heute, mit vorgegebener Zeit (Stunden und Minuten aus Startzeit)
		sH = sZeit.setHours(tS.substring(0, 2)),
		sM = sZeit.setMinutes(tS.substring(3, 5)),
		sS = sZeit.setSeconds(00);
	var numsZeit = Date.parse(sZeit);	//gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC bis zu unserem Datum zurück
	return numsZeit;
}

function endZeit(){
	var eZeit = new Date(),
		eH = eZeit.setHours(tE.substring(0, 2)),
		eM = eZeit.setMinutes(tE.substring(3, 5)),
		eS = eZeit.setSeconds(00);
	var numeZeit = Date.parse(eZeit);
	return numeZeit;
}
//mit den Zahlenwerten in Millisekunden können wir jetzt rechnen
var tDifferenz = (numEndZ - numStartZ);
var tDiffMin = (tDifferenz / 60000);
var tGesH = Math.floor(tDiffMin / 60);
var tGesM = (tDiffMin - (tGesH * 60));
var gesamtZeit = tGesH + ":" + tGesM;

event.value = gesamtZeit;
Für die Berechnung der Pause gibst du dem Feld "tPause" folgendes mit:

Code: Alles auswählen

var tS = this.getField("tStart").value;
var tE = this.getField("tEnd").value;
var tP = this.getField("tPause").value;

var numStartZ = startZeit();
var numEndZ = endZeit();

function startZeit(){
	var sZeit = new Date(),
		sH = sZeit.setHours(tS.substring(0, 2)),
		sM = sZeit.setMinutes(tS.substring(3, 5)),
		sS = sZeit.setSeconds(00);
	var numsZeit = Date.parse(sZeit);
	return numsZeit;
}

function endZeit(){
	var eZeit = new Date(),
		eH = eZeit.setHours(tE.substring(0, 2)),
		eM = eZeit.setMinutes(tE.substring(3, 5)),
		eS = eZeit.setSeconds(00);
	var numeZeit = Date.parse(eZeit);
	return numeZeit;
}

var tDifferenz = (numEndZ - numStartZ);
var tDiffMin = (tDifferenz / 60000);
var tGesH = Math.floor(tDiffMin / 60);
var tGesM = (tDiffMin - (tGesH * 60));

var pausenZeit = (00 + ":" + tPause());

function tPause(){
	if(tDiffMin <= 570){
		return 30;
	}else if(tDiffMin >= 571){
		return 45;
	}
}

event.value = pausenZeit;
Entspricht das in etwa dem was du haben wolltest?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten