Come sviluppatore 4D, probabilmente avete già creato e utilizzato delle formule. Esse possono essere create tramite due comandi, Formula e Formula from string. Quest’ultimo è stato appena migliorato in 4D V20 R3 in modo da poter essere utilizzato senza limiti dai componenti!
Formule e contesto di esecuzione
Le formule, qualunque sia il loro contenuto, sono intimamente legate al database da cui vengono create. Quando vengono richiamate, vengono sempre eseguite nel contesto in cui sono state create.
Questo vale per i comandi 4D e le funzioni come Structure file, ma anche per le formule basate su chiamate di metodi.
Un semplice esempio
Immaginiamo un metodo FormatedCurrentDate che restituisce una stringa formattata.
#DECLARE($format : Integer)->$formatedDate : Text
$formatedDate:=String(Current date; $format)
Questo metodo può essere utilizzato all’interno di una formula, che può essere creata in questo modo:
$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)")
In questo caso, la formula restituirà la data formattata come previsto.
$date:=$formula.call()
Quando il metodo e la formula si trovano nello stesso ambiente, tutto va bene… ma se questo metodo non condiviso si trova nel database host e la formula che tenta di usare questo metodo è creata all’interno di un componente, non potrà essere eseguita.
È disponibile un nuovo parametro
È stato aggiunto un nuovo parametro alla funzione Formula from string per dare la possibilità di scegliere in quale contesto verrà eseguita la formula.
#1) Esecuzione nel database host
Se torniamo all’esempio precedente, in cui il metodo non condiviso FormatedCurrentDate appartiene al database host, sarà possibile eseguirlo comunque da un componente creando la formula come segue:
$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)";sk execute in host database)
#2) sk execute in current database
Se viene passato il valore sk execute in current database (o semplicemente omesso), la formula verrà eseguita nel database che ha creato la formula”.
Conclusione
Questa nuova opzione vi consentirà di creare facilmente i vostri componenti di interfaccia (per 4D Write Pro, ad esempio) utilizzando metodi o variabili del database host.
Più libertà e più potere significano anche più responsabilità, ma questa apertura è comunque molto pratica e permette ai componenti di accedere alle funzioni dei database ospitanti in modo estremamente semplice.
Non esitate a condividere le vostre impressioni sul forum!