Au cas ou...Sinon...Fin de cas

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 6.0


La syntaxe de la structure conditionnelle Au cas ou...Sinon...Fin de cas est la suivante :

   Au cas ou
      : (Expression_booléenne)
         instruction(s)
      : (Expression_booléenne)
         instruction(s)
      .
      .
      .

      : (Expression_booléenne)
         instruction(s)
   Sinon
      instruction(s)
   Fin de cas

A noter que l'élément Sinon est optionnel, vous pouvez donc écrire :

   Au cas ou
      : (Expression_booléenne)
         instruction(s)
      : (Expression_booléenne)
         instruction(s)
      .
      .
      .

      : (Expression_booléenne)
         instruction(s)
   Fin de cas

Tout comme la structure Si...Sinon...Fin de si, la structure Au cas ou...Sinon...Fin de cas permet également à votre méthode de choisir parmi plusieurs séquences d'instructions. A la différence de la structure précédente, le Au cas ou...Sinon...Fin de cas peut tester un nombre illimité d'expressions booléennes et exécuter la séquence d'instructions correspondant à la valeur VRAI.

Chaque expression booléenne débute par le caractère deux points (:). La combinaison de deux points et d'une expression booléenne est appelé un cas. Par exemple, la ligne suivante est un cas :

   : (bValider=1)

Seules les instructions suivant le premier cas VRAI (et ce, jusqu'au cas suivant) seront exécutées. Si aucun des cas n'est VRAI, aucune instruction n'est exécutée (s'il n'y a pas d'élément Sinon).

Vous pouvez placer une instruction Sinon après le dernier cas. Si tous les cas sont FAUX, les instructions suivant le Sinon seront exécutées.

Exemple

Cet exemple teste une variable numérique et affiche une boîte de dialogue d'alerte comportant un simple mot :

   Au cas ou
      : (vRésult = 1)   ` Test si le numéro est 1
         ALERTE("Un.")   ` Si c'est 1, afficher une alerte
      : (vRésult = 2)   ` Test si le numéro est 2
         ALERTE("Deux.")   ` Si c'est 2, afficher une alerte
      : (vRésult = 3) ` Test si le numéro est 3
         ALERTE("Trois.")   ` Si c'est 3, afficher une alerte
   Sinon   ` Si ce n'est ni 1 ni 2 ni 3, afficher une alerte
      ALERTE("Ce n'est ni un, ni deux, ni trois.")
   Fin de cas

A titre de comparaison, voici la version avec Si...Sinon...Fin de si de la même méthode :

   Si (vRésult = 1)    ` Test si le numéro est 1
      ALERTE ("Un.")    ` Si c'est 1, afficher une alerte
   Sinon
      Si (vRésult = 2)    ` Test si le numéro est 2
         ALERTE ("Deux.")    ` Si c'est 2, afficher une alerte
      Sinon
         Si (vRésult = 3)    ` Test si le numéro est 3
            ALERTE ("Trois.")    ` Si c'est 3, afficher une alerte
         Sinon    ` Si ce n'est ni 1, 2 ni 3, afficher l'alerte
            ALERTE ("Ce n'est ni un, ni deux, ni trois.")
         Fin de si
      Fin de si
   Fin de si

Rappelez-vous qu'avec une structure de type Au cas ou...Sinon...Fin de cas, seul le premier cas VRAI rencontré est exécuté. Même si d'autres cas sont VRAIS, seules les instructions suivant le premier cas VRAI seront prises en compte.

Par conséquent, lorsque vous testez dans la même méthode des cas simples et des cas complexes, vous devez placer les cas complexes avant les cas simples, sinon ils ne seront jamais exécutés. Par exemple, si vous souhaitez traiter le cas simple (vRésult=1) et le cas complexe (vRésult=1) & (vDemande#2) et que vous structurez la méthode de la manière suivante :

   Au cas ou
      : (vRésult = 1)
         ...   `instruction(s)
      : ((vRésult = 1) & (vDemande#2))   ` Les instructions suivant ce cas ne seront JAMAIS exécutées
         ...   `instruction(s)
   Fin de cas

... les instructions associées au cas complexe ne seront jamais exécutées. En effet, pour que ce cas soit VRAI, ses deux conditions booléennes doivent l'être. Or, la première condition est celle du cas simple situé précédemment. Lorsqu'elle est VRAIE, le cas simple est exécuté et 4D sort de la structure conditionnelle, sans évaluer le cas complexe. Pour que ce type de méthode fonctionne, vous devez écrire :

   Au cas ou
      : (vRésult = 1) & (vDemande#2)   ` Les cas complexes doivent toujours être placés en premier
         ...   `Instruction(s)
      : (vRésult = 1)
         ...   `Instruction(s)
   Fin de cas

Astuce

Il n'est pas obligatoire que des instructions soient exécutées dans toutes les alternatives. Lorsque vous développez un algorithme, ou lorsque vous poursuivez un but particulier, rien ne vous empêche d'écrire :

   Au cas ou
      : (Expression_booléenne)
      : (Expression_booléenne)

      .
      .
      .

      : (Expression_booléenne)
         instruction(s)
   Sinon
      instruction(s)
   Fin de cas

ou :

   Au cas ou
      : (Expression_booléenne)
      : (Expression_booléenne)
         instruction(s)
      .
      .
      .

      : (Expression_booléenne)
         instruction(s)
   Sinon
   Fin de cas

ou :

   Au cas ou
   Sinon
      instruction(s)
   Fin de cas

Référence

Boucle...Fin de boucle, Conditions et boucles, Repeter...Jusque, Si...Sinon...Fin de si, Tant que...Fin tant que.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant