Seite 1 von 1

Rechnen mit Datum: Ablaufdatum erreicht für Medikamentenverordnung Feld einfärben

Verfasst: 25.05.2023, 21:16
von schuh
Hallo Leute,

Erst einmal vielen Dank für dieses tolle Forum und die wirklich sehr kompetenten Berater*innen.

Mein Problem ist folgendes: Eine Liste enthält das Datum der Medikamentenverordnung des Arztes (nennen wir das Feld "ausst_dat")
Beim Laden des Formulars soll bei allen Eintragungen eines dynamischen Formulars geschaut werden, ob ausst_dat älter (bis zum Wert 329) oder gleich als 300 Tage ist verglichen mit dem aktuellen Datum... Wenn das so ist, dann soll der Feldhintergrund von ausst_dat Gelb gefärbt werden und bei einem Wert von 330 oder älter Rot und die Schrift in Weiß.

Kann da jemand helfen? Link zu einem schon existierenden Beitrag würde es auch tun. Meine Suche brachte kein Ergebnis. Vielen Dank schon einmal im voraus.

Euer Thórralf

Re: Rechnen mit Datum: Ablaufdatum erreicht für Medikamentenverordnung Feld einfärben

Verfasst: 26.05.2023, 09:14
von landei2003
Hallo,

Häng doch mal ein Beispiel Formular an, macht es einfacher.




LG, Stephan

Re: Rechnen mit Datum: Ablaufdatum erreicht für Medikamentenverordnung Feld einfärben

Verfasst: 07.06.2023, 13:45
von schuh
Hier war die fragliche Datei. Da das Problem gelöst ist, habe ich die ursprünglich unvollständige Datei gelöscht... :idea:

GELÖST: Rechnen mit Datum: Ablaufdatum erreicht für Medikamentenverordnung Feld einfärben

Verfasst: 12.01.2024, 10:01
von schuh
Guten Morgen,

Gerade habe ich die Lösung gefunden! HEUREKA...

Die Funktion zum Bewerten des Ablaufdatums und die Funktion des resultierenden Einfärben wird im Feld ausst_dat in die Ereignisse "Initialize" und "Exit" geschrieben. Hier die Funktionen, die ich im Bereich Skripte hinterlegt habe:

Code: Alles auswählen

// Ablaufdatum berechnen

function expiringDate(Objekt) {

var sDate = util.scand("yyyy-mm-dd", xfa.resolveNode("ausst_dat[0]").rawValue);
var hDate = util.scand("yyyy-mm-dd", xfa.resolveNode("heute").rawValue);
var diffDays = Math.round((Number(hDate) - Number(sDate))/1000/60/60/24);
var NewsDate = Number(sDate) + (24*60*60*1000*Number(365));
var nDate = util.printd("dd.mm.yy", new Date(NewsDate));   

if	(Objekt.rawValue != null)
{
	
	xfa.resolveNode("ablauf_dat[0]").rawValue = nDate;	
}
else
{
	xfa.resolveNode("ablauf_dat[0]").rawValue = "";
};

}

// Ablaufdatum einfärben

function colorField(Objekt) {

var sDate = util.scand("yyyy-mm-dd", xfa.resolveNode("ausst_dat[0]").rawValue);
var hDate = util.scand("yyyy-mm-dd", xfa.resolveNode("heute").rawValue);
var yellowDate = Number(sDate) + (24*60*60*1000*Number(335));
var redDate = Number(sDate) + (24*60*60*1000*Number(365));
var diffDays = Math.round((Number(hDate) - Number(sDate))/1000/60/60/24);

if (redDate <= Number(hDate)){
	xfa.resolveNode("ablauf_dat[0]").fillColor = "255,200,200";
	
} else {

		if (yellowDate <= Number(hDate)){
		
			xfa.resolveNode("ablauf_dat[0]").fillColor = "255,255,200";
			
			} else {
	
					xfa.resolveNode("ablauf_dat[0]").fillColor = "255,255,255";
	
			};
		
};

}
Code zum Einbinden in das Feld:

Code: Alles auswählen

// Formular1.tbl_übersicht.items.ausst_dat::initialize - (JavaScript, client)

Skripte.expiringDate(this);
Skripte.colorField(this);

// Formular1.tbl_übersicht.items.ausst_dat::exit - (JavaScript, client)

Skripte.expiringDate(this);
Skripte.colorField(this);