WebBlocks, Script d'exécution

 Préambule
L'utilisation de ces fonctionnalités demande un minimum de pratique de la programmation de base. Si vous n'êtes pas familier du tout et n'avez jamais pratiqué, votre site Web, par nature vitrine de votre savoir faire, n'est pas l'endroit idéal pour vous initier, rapprochez vous d'un de nos Centres d'Expertise Internet qui vous aidera dans la réalisation globale de votre projet.
 
 Introduction
Le script d'exécution associé au WebBlock vous permet de définir du code VBScript à exécuter lors de la soumission du formulaire. Vous pouvez utiliser les opérations de base du langage VBScript comme :
- les opérations de calcul numérique (+, -, *, etc.)
- les opérations de concaténation de chaînes de charactères.
- les fonctions de base du langage comme Len(), Trim(), etc.
- les instructions algorithmiques tel If/Else/End If, etc.

IMPORTANT : Pour que le code soit exécuté lors de la soumission du formulaire, vous devez impérativement utiliser un bouton de soumission de type "Soumission et exécution du script".

Notez aussi que vous ne pouvez pas conduire d'opérations sur les contrôles Date-Heure (récupérer leurs valeurs, définir leur valeurs, etc.).

Pour manipuler les valeurs associées aux contrôles de vos formulaires vous disposez de deux fonctions GetItemValue() et SetItemValue().

Remarque générale : Le nom des contrôles n'est pas sensible aux majuscules minuscules (Case insensitive) et ils correspondent aux noms spécifiés dans les pages d'édition des propriétés.
 
 Function GetItemValue( ByVal strItemName )
Description :
Cette fonction retourne la valeur courante associée à un contrôle ou un objet.

Argument
strItemName : le nom du contrôle dont la valeur doit être retournée.

Remarques
Cette fonction est compatible avec tous les éléments de formulaire. Si le contrôle est une liste déroulante (Combo), la valeur retournée sera la valeur de l'élément sélectionné. Si le contrôle est une case à cocher, la valeur associée sera retournée (1 si la valeur n'a pas été précisée) si la case est cochée.
 
 Sub SetItemValue( ByVal strItemName, ByVal varValue )
Description
Cette procédure permet de modifier la valeur d'un contrôle donné.

Argument
strItemName : le nom du contrôle dont la valeur doit être modifié.
varValue : la nouvelle valeur à associer au contrôle.

Remarques
Cette fonction étant une procédure au sens VBScript (pas de retour de valeur), elle nécessite l'utilisation du préfixe "Call".
Cette procédure est compatible avec tous les éléments de formulaire. Si le contrôle est une liste déroulante (Combo), la valeur sélectionnée correspondra à la valeur passée en paramètre si elle est trouvée dans la liste. Si le contrôle est une case à cocher, la case sera cochée si la valeur passée est différente de zéro.
 
 Exemple simple
Supposons un formulaire contenant 3 objets "Formulaire - Zone de texte", nommées "A", "B", et "C".
L'utilisateur entrera des valeurs numériques dans "A" et "B' et le script suivant assignera le résultat du calcul A+B dans la zone C :

Dim nResult
nResult = GetItemValue("A") + GetItemValue("B")
Call SetItemValue( "C", nResult )

Notez l'utilisation du préfixe "Call" lors de l'appel de la procédure SetItemValue().
 
 Evolution de l'exemple avec une liste déroulante
Reprenez l'exemple précédant et ajoutez dans votre WebBlock une liste déroulante pour choisir l'opérateur de calcul. Nommez cette liste "Operator" et utilisez la liste de valeurs suivante :

1##Addition
2##Soustraction
3##Multiplication
4##Division

Ensuite utilisez le code suivant pour le script d'exécution :

Dim nOperator, nValue1, nValue2, nResult
nOperator = GetItemValue("Operator")
nValue1 = GetItemValue("A")
nValue2 = GetItemValue("B")
If ( nOperator = 2 ) Then
    '*** Soustraction
    nResult = nValue1 - nValue2
ElseIf ( nOperator = 3 ) Then
    '*** Multiplication
    nResult = nValue1 * nValue2
ElseIf ( nOperator = 4 ) Then
    '*** Division
    nResult = nValue1 / nValue2
Else
    '*** Addition
    nResult = nValue1 + nValue2
End If
Call SetItemValue( "C", nResult )
 
 Evolution de l'exemple avec un objet Texte
L'objet Texte (à ne pas confondre avec l'objet "Formulaire - Zone de Texte") reste invisible si aucun texte n'est renseigné dans ses propriétés. Vous pouvez lui assigner un nom comme à un élément de formulaire. Si une action de navigation est associée à l'objet, celle-ci n'est visible et exploitable que si un texte est assigné à l'objet.

Reprenez le WebBlock de l'exemple précédent, ajoutez-y un objet Texte que vous nommerez "Result". N'assignez pas de texte à cet objet, laissez la zone de saisie vierge de tout caractère.
Ensuite, modifiez le code du script d'exécution et rajouter-y la ligne suivante à la fin :

Call SetItemValue( "Result", nResult )

Exécutez à nouveau ce WebBlock, vous noterez que le résultat du calcul est affiché dans la Zone de Texte "C" mais aussi dans votre objet Texte !
 
 Avec un peu d'imagination !
Supposons que vous vendiez des radiateurs et que les différents modèles (6) à proposer dépendent du résultat d'un calcul fonction de la surface de la pièce, de sa hauteur, du niveau d'isolation et du climat.

Dans votre formulaire, après quelques textes explicatifs, vous placez :
    - 2 objets "Formulaire - Zone de texte" pour saisir la surface de la pièce et sa hauteur (profitez en pour borner les saisies par exemple surface entre 10 et 70m2, hauteur entre 2 et 3 mètres).
    - 2 objets "Formulaire - Liste déroulante" pour sélectionner un type d'isolation "Excellent/Moyen/Faible" et une Région "Montagne/Tempérée/Ensoleillée"

Dans une cellule vous créez 6 objets textes (Nommés Radiateur1 - - - Radiateur6) dont le texte est au départ vierge et vous sélectionnez comme action de navigation "Ouvrir le composant Panier-Catalogue", "Proposer un élément" , "Radiateur 1" (puis Radiateur 2 pour la seconde zone de texte, et ainsi de suite). Comme les textes sont vierges, rien n'est affiché.

Bien entendu vous placez un bouton de soumission de type "Soumission et exécution du script"

Au départ le WebBlock s'affiche, avec votre texte explicatif, les zones de saisies vierges, les listes de choix et le bouton de soumission que vous aurez nommé "Déterminez le radiateur approprié".

Lorsque l'utilisateur a entré ses valeurs, sélectionné dans les listes et pressé le bouton, vous effectuez un calcul qui conduit à proposer le radiateur correspondant à la puissance nécessaire.

Si c'est l'appareil 1 qui est approprié, vous utilisez Call SetItemValue( "Radiateur1", "Nous vous conseillons notre radiateur type 1, cliquez ici" ), et ainsi de suite pour les autres résultats.

Comme vous aviez au préalable associé la bonne action de navigation à l'élément texte "Radiateur1" qui était auparavant invisible, le visiteur se verra proposé de se rendre directement sur la page permettant l'achat d'un radiateur correspondant exactement à son besoin !
 
 Quelques conseils importants pour vos formulaires utilisant des scripts d'exécution
1) N'utilisez pas le même nom pour plusieurs contrôles.

2) Utilisez des noms de contrôles simples et significatifs.

3) Pensez à mettre en place une validation aussi stricte que possible sur les champs de votre formulaire pour limiter les risques d'erreur de votre script.

4) Testez systématiquement votre script après chaque modification.

5) Ne testez pas avec "vos valeurs", mettez vous dans la peau d'un utilisateur qui pourrait saisir n'importe quelles valeurs.

6) Construisez votre script petit à petit et testez-le au fur et à mesure de son développement. Cela vous permettra de détecter les éventuelles erreurs beaucoup plus facilement.

7) Si vous rencontrez une erreur lors de l'exécution et que vous ne trouvez pas la cause, revenez en arrière dans votre développement et mettez les lignes de code en commentaire. Pour cela démarrez la ligne par un simple guillemet.
Une autre technique plus avancée est de rajouter un objet Texte (que vous pouvez nommer "Debug" par exemple) à votre formulaire et de lui assigner un indicateur d'avancement au fur et à mesure de l'exécution du script comme ceci :

Call SetItemValue( "Debug", "Etape 1" )
...
Call SetItemValue( "Debug", "Etape 2" )
...

La valeur affichée vous indiquera après quelle étape votre script s'est interrompu.
 

Ajouter aux favoris : http://www.oxatis.com/Help/HelpCenterContent.asp?ActionID=512&TID=1244&MID=12000&LangID=0
© 2001-2014 Oxatis. Tous droits réservés.