Définition :
Cette nouvelle instruction permet de parcourir chaque ligne contenue dans un texte multi-ligne sous la forme d’une boucle qui exécutera les instructions inscrites pour chacune d’entre elles.
Syntaxe :
[POURCHAQUE]
[EXTRAIRE]
Variable pour contenir la ligne : variable qui contient le texte
[FINEXTRAIRE]
Instructions à exécuter pour chaque ligne lue du texte …
[FINPOURCHAQUE]
Exemples 1 : Cas d'une zone de texte dans un masque
Soit les deux variables déclarées par paramétrage :
SDVA(‘’Lines’’, ‘’variable qui contiendra le texte multi-ligne’’) SDVA(‘’Line’’, ‘’variable qui contiendra une ligne du texte’’)
Soit le masque suivant qui permet de saisir du texte multi-ligne dans la variable Lines et un bouton qui permet de parcourir les lignes du texte.
Instructions positionnées sur une action de zone du bouton ‘POUR CHAQUE’
[POURCHAQUE] [EXTRAIRE] Line : Lines [FINEXTRAIRE] SAM("line", Line) // Chaque ligne du texte sera affichée à l’écran sous forme d’un message [FINPOURCHAQUE]
Résultat : Un SAM affiche le contenu de chaque ligne lue.
Exemple 2 : Cas d'un fichier texte
//Soit les deux variables déclarées par paramétrage : SDVA("ComptesClients$", "variable qui contiendra le contenu du fichier") SDVA("Line","variable qui contiendra une ligne du fichier texte") //Lecture du fichier texte dans une variable: vu(1) = FileReadAllText("c:\compte.txt","ComptesClients$") [SI] vu(1)=0 [FINSI] [ALORS] // début de la boucle pour chaque ligne de texte [POURCHAQUE] [EXTRAIRE] Line : ComptesClients$ [FINEXTRAIRE] SAM("line", Line) // Chaque ligne du texte sera affichée à l’écran sous forme d’un message [FINPOURCHAQUE] [FINALORS] [SINON] SAM("", SilGetLastError(vu(1)),0) // Affichage de l'erreur si le fichier est n'est pas lu [FINSINON]
Résultat : Un SAM affiche le contenu de chaque ligne lue.
Exemple 3 : Duplication d'une ligne d'AOC depuis l'application "Proposition commerciale"
//Soit deux variables dans lesquelles on mémorise le "codeclient" et le "numéro d'appel d'offre" sur lequel on se trouve.: vu$(0)="C.C.M" vu$(1)="3091502" //Insertion des données des lignes de la table "MACRO_AOCC" après l'avoir vidée. SER(""," DELETE FROM MACRO_AOCC","") SER(""," INSERT INTO MACRO_AOCC (CodeClient,NoAppelOffres,NumeroLigneDemande) SELECT CodeClient,NoAppelOffres,NumeroLigneDemande FROM AOCC WHERE CodeClient=@vu$(0) AND NoAppelOffres=@vu$(1)","") //Pour chaque ligne insérée on utilise la fonction "aoc_duplication_ligne()" [POURCHAQUE] [EXTRAIRE] vu$(2);vu$(3);vu(1) : SQL=SELECT CodeClient,NoAppelOffres,NumeroLigneDemande FROM MACRO_AOCC [FINEXTRAIRE] aoc_duplication_ligne(vu$(2), vu$(3), vu(1)) [FINPOURCHAQUE]