Nuova opzione per le formule da stringa!

Tradotto automaticamente da Deepl

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!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.