Une nouvelle option pour la commande « Formula from string » (« Formule sur chaine ») !

Traduit automatiquement de Deepl

En tant que développeur 4D, vous avez probablement déjà créé et utilisé des formules. Elles peuvent être créées via deux commandes, Formula et Formula from string. Cette dernière vient d’être améliorée dans 4D V20 R3 pour pouvoir être utilisée sans limite à partir des composants !

 

Formules et contexte d’exécution

 

Les formules, quel que soit leur contenus, sont intimement liées à la base de données à partir de laquelle elles sont créées. Lorsqu’elles sont appelées, elles sont toujours exécutées dans le contexte dans lequel elles ont été créées.

Ceci est vrai pour les commandes 4D et les fonctions comme Structure file, mais aussi pour les formules basées sur des appels de méthodes.

Un exemple simple

Imaginons une méthode FormatedCurrentDate qui renvoie une chaîne formatée.

#DECLARE($format : Integer)->$formatedDate : Text
$formatedDate:=String(Current date; $format)

Cette méthode peut être utilisée dans une formule, qui peut être créée de cette manière :

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)")

Dans ce cas, la formule renvoie la date formatée comme prévu.

$date:=$formula.call()

Lorsque la méthode et la formule se trouvent dans le même environnement, tout va bien… mais si cette méthode non partagée se trouve dans la base de données hôte et que la formule qui tente d’utiliser cette méthode est créée dans un composant, elle ne pourra pas s’exécuter.

Un nouveau paramètre est désormais disponible

Un nouveau paramètre a été ajouté à la fonction Formula from string pour vous donner le choix et vous permettre de décider dans quel contexte la formule sera exécutée.

#1) SK EXECUTE IN HOST DATABASE

Si nous revenons à l’exemple précédent, où la méthode non partagée FormatedCurrentDate appartient à la base de données hôte, il sera possible de l’exécuter quand même à partir d’un composant en créant la formule comme suit :

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)";sk execute in host database)
#2) sk execute in current database

Si la valeur sk execute in current database est passée (ou est simplement omise), alors la formule sera exécutée dans la base de données qui a créé la formule ».

Conclusion

Cette nouvelle option vous permettra de créer facilement vos propres composants d’interface (pour 4D Write Pro, par exemple) en utilisant des méthodes ou des variables de la base de données hôte.

Plus de liberté et plus de puissance, c’est aussi plus de responsabilité, mais cette ouverture reste très pratique et permet aux composants d’accéder aux fonctions de leurs bases de données hôtes de manière extrêmement simple.

N’hésitez pas à nous faire part de vos impressions sur le forum !

 

 

 

 

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.