Zoho Creator : Deluge :  récupérer une valeur dans une liste à choix multiple

par | 4 Juil 2018 | Technologies de l'information, Zoho Creator

C’est une question qui m’est fréquemment posée.

Dans Deluge il est aisé de récupérer la valeur d’un champ il suffit d’écrire :


NomVariable = input.NomDuChamp


Et dans la variable sera stockée la valeur saisie dans le champ NomDuChamp.


Exemple : Enregistrement seul

Si j’ai un champ “Quantité” et que je veux récupérer cette valeur dans une variable que je nomme “VarQte” : il suffit d’écrire :


VarQte = input.Quantité


Exemple : Enregistrements multiples


Imaginons maintenant que je souhaite faire la même opération mais pour tout un ensemble d’enregistrement. Autrement dit je souhaite récupérer la valeur du champ “Quantité” mais pour tous les enregistrements et non pas seulement l’enregistrement en cours.


Cas d’usages :

  • calculer la somme des quantités

  • ajouter un pourcentage

  • ajouter un condition de remise suivant la quantité


Il faut donc que j’écrive une boucle avec la syntaxe suivante:


For each Variable dans NomDuFormulaire

{

Variable.NomDuChamp = Variable.NomDuChamp et calcul voulu.

}


Donc si je veux calculer le total des quantités


For each VarTotal dans DetailDevis

{

VarTotal.TotalQuantité = VarTotal.TotalQuantité+ VarTotal.Quantité

}

Ce qui permet d’ajouter la quantité en cours dans la boucle à la quantité déjà existante.


Deuxième exemple :

Au lieu de faire un total,  je souhaite concaténer des informations provenant de multiples champs.


Par exemple j’ai le formulaire suivant :

Dans ce formulaire j’ai un champ “tout” à la fin du formulaire qui concatène des informations provenant de plusieurs champs.


Cas d’usage :

J’ai besoin de ce champ pour pouvoir faire des recherches avec le critère “Contient” .


Les premiers champs dont j’ai besoin de concaténer les données sont les champs N° et Gamme.


Le code est donc :


for each  op in liste_des_op_rations

{

op.tout=op.N +  »  » + op.Gamme +  » « ;

}


Ce code me donne le résultat suivant dans le champ “tout” et ceci pour tous les enregistrements du formulaire.



1 étant le numéro et E17425 la Gamme.


Exemple : récupération liste de choix unique


Il me faut maintenant faut ajouter dans la concaténation le prochain champ voulu  : La machine.


Ce champ Machine est une liste déroulante à choix unique. Je ne peux pas me contenter d’ajouter “op.Machine “. Si je fait cela, Zoho Creator me donnera que l’identifiant de l’enregistrement choisi dans la liste autrement dit un numéro interne unique de Zoho Creator de type “813622000000761268”.


Exemple si j’en reste là avec le code :


op.tout=op.tout +  »  » + op.machine;


Voici ce que j’obtiens

Il me faut aller chercher pour l’identifiant de la valeur choisie dans la liste la correspondance dans le formulaire Machine du nom de la machine et je fais cela avec le code suivant  :


mach = machine[ID == op.machine];

En écrivant cette ligne de code je dis à Deluge de prendre le numéro ID de la liste de choix unique (le fameux identifiant) dans le formulaire “Liste des opérations” et de faire correspondre l’enregistrement du formulaire “machine”. Ainsi tous les champs du formulaire “machine” peuvent maintenant être joignables en appelant la collection “mach”.

J’appelle donc le champ “Nom_machine” dans la collection “mach” et je le rajoute au champ tout.


op.tout=op.tout +  »  » + mach.Nom_machine;


Voici le résultat :


Le code complet est maintenant :


void ListeOpeTout()

{

for each  op in liste_des_op_rations

{

op.tout=op.N +  »  » + op.Gamme +  » « ;

mach = machine[ID == op.machine];

op.tout=op.tout +  »  » + mach.Nom_machine;

}

}

Pour faire propre, je teste si il y a une valeur choisie dans le champ de choix de la machine afin de :

  • ne pas demander du travail inutile à Zoho Creator

  • éviter les messages d’erreur éventuel

Je rajoute donc la boucle suivante, boucle car il faut tester la valeur pour chaque itération de valeur :


if(!isnull(op.machine))

{

code à effectuer si pas null

}


Donc le nouveau code complet est :


void ListeOpeTout()

{

for each  op in liste_des_op_rations

{

op.tout=op.N +  »  » + op.Gamme +  » « ;

if(!isnull(op.machine))

{

mach = machine[ID == op.machine];

op.tout=op.tout +  »  » + mach.Nom_machine;

}


Exemple : récupération liste de choix multiple


Le prochain champ à concaténer est le champ “Consommable”. Ce champ est un champ liste à choix multiple. Il me faut donc rajouter une boucle qui va chercher les multiples choix de l’utilisateur.


if(!isnull(op.Consommable))

{

conso = Consommable[ID == op.Consommable];

for each  con in conso

{

op.tout=op.tout +  »  » + con.nom_conso;

}

}

Voici le code à rajouter.

Je teste d’abord pour la valeur nulle, puis je vais chercher dans la collection “conso” les champs correspondant à l’ID de la sélection en cours. Enfin, je rajoute une boucle pour prendre en compte toutes les occurrences.


Voilà, vous pouvez adapter ce code à quantité de situations.


Nos Services et prestations

Support

Audit

Webinaires

Youtube

0 commentaires