……Marco Valli's Blog……

Internet, Tecnologia e SharePoint!!!

Calcolare i giorni di differenza tra una data e oggi in Infopath


Altro giro altra implementazione, questa volta ho elaborato un metodo per calcolare la differenza tra la data odierna ed una data selezionata da un controllo date picker

Creare il primo campo data chiamandolo "Scadenza", creare il secondo campo che dovrà ospitare il valore espresso in giorni e, nel campo Valore Predefinito, inserire questa funzione (naturalmente abilitando l0opzione Modifica XPath (utenti esperti)):

(number(substring(/my:Gestione/my:Scadenza, 9, 2)) + floor((153 * (number(substring(/my:Gestione/my:Scadenza, 6, 2)) + 12 * (floor((14 – number(substring(/my:Gestione/my:Scadenza, 6, 2))) div 12)) – 3) + 2) div 5) + (number(substring(/my:Gestione/my:Scadenza, 1, 4)) + 4800 – (floor((14 – number(substring(/my:Gestione/my:Scadenza, 6, 2))) div 12))) * 365 + floor((number(substring(/my:Gestione/my:Scadenza, 1, 4)) + 4800 – (floor((14 – number(substring(/my:Gestione/my:Scadenza, 6, 2))) div 12))) div 4) – floor((number(substring(/my:Gestione/my:Scadenza, 1, 4)) + 4800 – (floor((14 – number(substring(/my:Gestione/my:Scadenza, 6, 2))) div 12))) div 100) + floor((number(substring(/my:Gestione/my:Scadenza, 1, 4)) + 4800 – (floor((14 – number(substring(/my:Gestione/my:Scadenza, 6, 2))) div 12))) div 400) – 32045) – (number(substring(xdDate:Today(), 9, 2)) + floor((153 * (number(substring(xdDate:Today(), 6, 2)) + 12 * (floor((14 – number(substring(xdDate:Today(), 6, 2))) div 12)) – 3) + 2) div 5) + (number(substring(xdDate:Today(), 1, 4)) + 4800 – (floor((14 – number(substring(xdDate:Today(), 6, 2))) div 12))) * 365 + floor((number(substring(xdDate:Today(), 1, 4)) + 4800 – (floor((14 – number(substring(xdDate:Today(), 6, 2))) div 12))) div 4) – floor((number(substring(xdDate:Today(), 1, 4)) + 4800 – (floor((14 – number(substring(xdDate:Today(), 6, 2))) div 12))) div 100) + floor((number(substring(xdDate:Today(), 1, 4)) + 4800 – (floor((14 – number(substring(xdDate:Today(), 6, 2))) div 12))) div 400) – 32045)

Sostituite eventualmente /my:Gestione/my:Scadenza con il percorso XPath del vostro campo… Così come è impostata la formula, le date successive a quella odierna verranno considerate come positive mentre quelle passate come negative, per invertire la positività/negatività scambiare di posto i valori xdDate:Today() e /my:Gestione/my:Scadenza

Naturalmente è anche possibile integrare questa formula in un’altra ed avere in un unico campo una formula con concatenamento per notificare i giorni alla scadenza senza bisogno di ulteriori campi di appoggio… Il risultato è senz’altro utile!!

image

Enjoy!!
🙂

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: