FileMaker 18 è arrivato sul mercato a maggio 2019.

Sicuramente una delle novità più interessanti (e attese dagli sviluppatori) di FileMaker 18 è la nuovissima funzione While ()

Cos’è While?

In sostanza è una funzione ricorsiva, ovvero che richiama se stessa e esegue lo stesso calcolo fino a che non avviene una certa condizione.

Potente, completa, permette di bypassare buona parte delle funzioni personalizzate e anche pezzi di script e relazioni…

...l’unico problema è che non è esattamente immediata da capire. 

Come funziona While?

Questa è la sintassi:

While ( [ variabileIniziale ] ; condizione ; [ logica ] ; risultato )

Vediamo in dettaglio i differenti parametri (in caso di  valori multipli, vanno racchiusi fra le due [ ] e separati dal separatore standard ( ; per la versione italiana - ,  per quella anglosassone):

variabileIniziale: dove si specificano i valori iniziali da cui la funzione parte.

condizione: si specifica la condizione per cui la funzione  continua a operare. Nel momento in cui la condizione restituisce un risultato (booleano) di falso o zero, la funzione termina e restituisce il risultato indicato nel quarto parametro.

logica: le operazioni che vengono effettuate a ogni valutazione della funzione (e che dovrebbero influire sulla condizione di uscita)

risultato: quello che viene restituito dalla funzione.

Ovviamente, “non esistono cose come un pasto gratis”, quindi padroneggiare una funzione potente e articolata come While() necessita un gran lavoro di astrazione.

Vediamo un esempio pratico

Dobbiamo ricavare un elenco dei giorni lavorativi dalla data di oggi a una data specifica (diciamo il 30 giugno).

Avendo FileMaker 18 possiamo operare in tre modi, principalmente: 

- via script

- mediante una funzione personalizzata

- utilizzando While ().

La funzione personalizzata e While utilizzano una logica simile, più vicina alla programmazione, vediamo quindi inizialmente come potremmo fare via script:

# imposto la data di arrivo
Imposta variabile
[ $dataa; Valore:Data(6;30;2019) ]  

#imposto la data di partenza
Imposta variabile [ $data; Valore:Get(DataCorrente) ] 

# inizia il loop
Loop

# faccio avanzare la data di un giorno
Imposta variabile
[ $data; Valore:$data+1 ]

# memorizzo in un’altra variabile le date elaborate fino adesso: ne approfitto per eliminare sabati e domeniche mediante la funzione GiornodiSettimana. È anche possibile avere una tabella con le festività dedicate e fare un ulteriore controllo
Imposta variabile [ $data_st; Valore:
If( GiornodiSettimana ( $data )=0 or GiornodiSettimana ( $data )=7; $data_st; $data_st & ¶ & $data)

#esco dal loop se sono arrivato alla data di arrivo
Exit Loop If [ $data>$dataa ]

End Loop

# da qui posso gestire la variabile $data_st secondo la mia procedura.
 

Abbastanza lineare, ma non esattamente immediato.

Inoltre, essendo uno script va lanciato appositamente ogni volta.

Vediamo ora come possiamo affrontare lo stesso problema utilizzando While ().

While

$data=get(datacorrente);

$dataa=data(6;30;2019)

//variabileIniziale  inizializzo le variabili su cui lavoro, esattamente come le prime due righe dello script

] ; 

$data  ≤  $dataa;  

//condizione esci se la variabile $data è maggiore di $dataa (ovvero, continua finché $data ≤ $dataa).

//NB: in questo caso la condizione è unica, quindi non serve la parentesi graffa. Questo parametro equivale all’istruzione Exit Loop If, con la differenza che la logica è opposta. L’istruzione di script esce dal loop quando la condizione inserita è vera, mentre in While() la condizione deve essere falsa per terminare la funzione.

[ $data=$data+1; 

  $data_st=
if(

  GiornodiSettimana ( $data )=7 or GiornodiSettimana ( $data )=0; $data_st; 

$data_st & ¶ & $data+1)
];

//logica: vale la logica dello script. in questo caso invece di avere due diverse istruzioni di impostazione variabile abbiamo due parametri nella logica, uno che aumenta di un giorno la data e l’altro che ricorda le date già passate.

$data_st

// risultato: quello che la funzione restituisce. In questo caso la variabile che abbiamo valorizzato all’interno del il parametro logica.

)

Curioso di scoprire di più?

Da oggi puoi vedere While() all'opera in un'ora di esempi reali in video nella sessione dedicata del nostro Laboratorio di scripting FileMaker, finalmente disponibile come puntata singola e - ovviamente - ad un prezzo straordinario per festeggiare la mia Certificazione FileMaker 18!

Articolo precedenteFileMaker 18 è disponibile
Articolo successivoBentornata Claris!
Utilizza FileMaker dalla versione 2 (A.D. 1993), per sviluppare idee e soluzioni, e risolvere problemi. Membro della Filemaker Business Alliance, sviluppatore Certificato FileMaker 17, 16, 15, 14, 13, 12, 11, FileMaker Certified Trainer, si occupa di formazione, consulenza, sviluppo di soluzioni, con qualche incursione nell’editoria. Oltre a “Sviluppo FileMaker consapevole”, è autore di “FileMaker Pro 9 La Grande Guida” e di “FileMaker Pro 10 La Grande Guida”, entrambi editi da Mondadori Informatica, di articoli e di recensioni sulle principali riviste italiane del settore. Utilizza – con sentimenti ambivalenti – anche PHP, JavaScript, CSS/HTML, MySQL. Feroce capacità di analisi e problem solving.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here