PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Equivalence
  • Filtre (syntaxes 2)
  • Sortir d'une boucle de type POUR TOUT
  • Influence du mode de sortie de la boucle sur le parcours automatique des fichiers de données
  • Exécution de l'itération suivante
  • Modification de la clé utilisée pour le parcours automatique des fichiers de données ou des requêtes
Produits
WINDEVWEBDEV - Code ServeurWEBDEV - Code NavigateurWINDEV MobileEtats et Requêtes
Plateformes
WindowsLinuxWindows MobileUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPadApple Watch
Langages
JavaPHPAjaxCode Utilisateur (MCU)Langage Externe
Bases de données
HFSQLHFSQL Client/ServeurProcédures stockéesOLE DBODBCAccès Natifs
L'instruction POUR TOUT permet d'effectuer différents types de parcours HFSQL :
  • Parcours complet (selon une clé spécifiée ou non)
  • Parcours avec filtre (filtre simple, filtre selon une clé ou filtre sur la clé de parcours). Les filtres acceptent alors les opérateurs de la fonction HFiltre.
Les parcours peuvent être réalisés sur un fichier de données, une vue, une requête ou une source de données. Les enregistrements bloqués en lecture/écriture ne sont pas lus.
Remarques :
  • Si la clé donnée au POUR TOUT est la clé renvoyée précédemment par la fonction HFiltre, le filtre sera respecté.
  • Les instructions POUR TOUT, POUR TOUS, POUR CHAQUE sont acceptées. Dans cette documentation, seule l'instruction POUR TOUT est utilisée et peut être remplacée par POUR TOUS ou POUR CHAQUE.
Versions 17 et supérieures
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Nouveauté 17
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
Nouveauté 18
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
Versions 21 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
Nouveauté 21
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
Exemple
// Syntaxe 1
POUR TOUT Client
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
// Syntaxe 1
POUR TOUT Client sur NumClient
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
// Syntaxe 2
// Parcours avec filtre
POUR TOUT Client AVEC "VilleClient = 'Montpellier'"
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN

Ville = "Lyon"
POUR TOUT Client AVEC "VilleClient = '"+Ville+"' et AgeClient >= 21"
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
// Syntaxe 2
// Parcours avec filtre sur une clé spécifique
POUR TOUT Client AVEC "VilleClient = 'Montpellier'" sur NumClient
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN

Ville = "Lyon"
POUR TOUT Client AVEC "VilleClient = '" + Ville + "' ET " + ...
 "AgeClient >= 21" sur NumClient
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
// Syntaxe 3
// Comparaison par rapport à une valeur
POUR TOUT Client AVEC NomClient = "Dupont"
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN

// Comparaison par rapport à une valeur
POUR TOUT Commande AVEC DateCommande = "20031231"
// Ajout des commandes dans le champ Liste
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN
// Syntaxe 3
// Comparaison par rapport à un intervalle de valeurs
POUR TOUT Commande AVEC DateCommande = "20030101" A "20031231"
// Ajout des commandes dans le champ Liste
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN

// Comparaison par rapport à un intervalle de valeurs
POUR TOUT Commande AVEC "20030101" <= DateCommande <= "20031231"
// Ajout des commandes dans le champ Liste
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN
// Syntaxe 4
// Parcours avec filtre sur une clé spécifique
POUR TOUT Client AVEC VilleClient [= "Mont" DEPUISFIN
// Ajout des clients dans le champ Liste
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
// Syntaxe 5
// Parcours avec filtre sur une clé composée
POUR TOUT FicContact AVEC CCDepartement = ["Prospect", 69]
// Ajout des contacts dans le champ Liste
ListeAjoute(LISTE_ListeContact, FicContact.NumContact)
FIN

// Parcours avec filtre sur une clé composée
POUR TOUT FicContact AVEC CCodePostal [= ["Prospect", 69]
// Ajout des contacts dans le champ Liste
ListeAjoute(LISTE_ListeContact, FicContact.NumContact)
FIN
Syntaxe

1 - Parcours complet Masquer les détails

1. Parcours complet selon la meilleure clé de parcours

Attention : Une modification du fichier dans l'analyse (ajout d'une rubrique clé par exemple) peut modifier la clé de parcours utilisée.

POUR TOUT <Fichier> [<Sens>]
...
FIN

2. Parcours complet selon la clé passée en paramètre

POUR TOUT <Fichier> SUR <Rubrique clé> [<Sens>]
...
FIN
<POUR TOUT> :
Signale le début du bloc d'instructions.
<Fichier> :
Nom du fichier de données, de la vue ou de la requête HFSQL à parcourir.
<SUR> :
Définit le type du parcours.
<Rubrique clé> :
Nom de la rubrique clé utilisée pour parcourir le fichier de données (la vue ou la requête) HFSQL.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours le fichier de données du premier élément au dernier.
DepuisFinParcours le fichier de données du dernier élément au premier.
<FIN> :
Signale la fin du bloc d'instructions.

2 - Parcours avec filtre Masquer les détails

1. Parcours avec filtre (la meilleure clé de parcours est automatiquement déterminée)

Attention : Une modification du fichier dans l'analyse (ajout d'une rubrique clé par exemple) peut modifier la clé de parcours utilisée.

POUR TOUT <Fichier> AVEC "<1ère Condition>
               [ET/OU/PAS <2ème Condition>
               [ET/OU/PAS...<Nième Condition>]]" [<Sens>]
...
FIN

2. Parcours avec filtre selon la clé spécifiée

POUR TOUT <Fichier> AVEC "<1ère Condition>
               [ET/OU/PAS <2ème Condition>
               [ET/OU/PAS...<Nième Condition>]]" [<Sens>]
...
SUR <Rubrique Clé>
FIN
<POUR TOUT> :
Signale le début du bloc d'instructions.
<Fichier> :
Nom du fichier de données, de la vue ou de la requête HFSQL à parcourir.
<AVEC> :
Définit le type du parcours.
<Nième condition> :
Nième condition du filtre de parcours HFSQL. Pour plus de détails, consultez les notes.
<ET/OU/PAS> :
Opérateur logique (optionnel) délimitant les différentes conditions du filtre à appliquer.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours le fichier de données du premier élément au dernier.
DepuisFinParcours le fichier de données du dernier élément au premier.
<Rubrique clé> :
Rubrique correspondant à une clé du fichier de données. Le filtre sera effectué sur cette clé.
<FIN> :
Signale la fin du bloc d'instructions.

3 - Parcours avec filtre de sélection sur la clé de parcours Masquer les détails

1. Filtre de comparaison par rapport à une valeur

POUR TOUT <Fichier> AVEC <Rubrique Clé> [ = / <= / >= ] <Valeur> [<Sens>]
...
FIN

2. Filtre de comparaison par rapport à un intervalle de valeurs

POUR TOUT <Fichier> AVEC <Rubrique Clé> = <Valeur minimale> A <Valeur maximale> [<Sens>]
...
FIN

POUR TOUT <Fichier> AVEC <Valeur minimale> <= <Rubrique Clé> <= <Valeur maximale> [<Sens>]
...
FIN
<POUR TOUT> :
Signale le début du bloc d'instructions.
<Fichier> :
Nom du fichier de données, de la vue ou de la requête HFSQL à parcourir.
<AVEC> :
Définit le type du parcours.
<Rubrique clé> :
Rubrique de type clé du fichier de données à parcourir.
<Valeur> :
Valeur de comparaison de la rubrique clé.
<Valeur minimale>, <Valeur maximale> :
Valeur de comparaison de la rubrique clé.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours le fichier de données du premier élément au dernier.
DepuisFinParcours le fichier de données du dernier élément au premier.
<FIN> :
Signale la fin du bloc d'instructions.

4 - Parcours avec recherche générique "Commence par", ascendante ou descendante Masquer les détails

POUR TOUT <Fichier> AVEC <Rubrique Clé> [= <Début de la valeur recherchée> [<Sens>]
...
FIN
<POUR TOUT> :
Signale le début du bloc d'instructions.
<Fichier> :
Nom du fichier de données, de la vue ou de la requête HFSQL à parcourir.
<AVEC> :
Définit le type du parcours.
<Rubrique clé> :
Rubrique de type clé du fichier de données à parcourir.
<Début de la valeur recherchée> :
Valeur de comparaison de la rubrique clé.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours le fichier de données du premier élément au dernier.
DepuisFinParcours le fichier de données du dernier élément au premier.
<FIN> :
Signale la fin du bloc d'instructions.

5 - Parcours avec filtre sur une clé composée Masquer les détails

1. Recherche à l'identique

POUR TOUT <Fichier> AVEC <Clé composée> = [<Valeur composante 1>, ..., <Valeur composante N>] [<Sens>]
...
FIN

2. Recherche générique (de type "Commence par")

POUR TOUT <Fichier> AVEC <Clé composée> [= [<Valeur composante 1>, ..., <Valeur composante N>] [<Sens>]

...
FIN
<POUR TOUT> :
Signale le début du bloc d'instructions.
<Fichier> :
Nom du fichier de données ou de la vue HFSQL à parcourir.
<AVEC> :
Définit le type du parcours.
<Clé composée> :
Clé composée du fichier de données à parcourir.
<Valeur composante N> :
Valeur de la composante.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours le fichier de données du premier élément au dernier.
DepuisFinParcours le fichier de données du dernier élément au premier.
<FIN> :
Signale la fin du bloc d'instructions.
Remarques

Equivalence

  • La syntaxe POUR TOUT <Fichier> AVEC <Rubrique> = <Valeur> est équivalente à un parcours du fichier de données avec la fonction HLitRecherche. Ce parcours tient compte des filtres précédemment effectués sur le fichier de données.
  • La syntaxe POUR TOUT <Fichier> AVEC <Condition> permet de définir un filtre puis réalise un parcours du fichier de données. Ce parcours ne tient pas compte des autres filtres précédemment effectués.
  • Lors de l'utilisation des requêtes, la syntaxe "POUR TOUT" peut être plus lente que la syntaxe "TANTQUE PAS HEndehors". En effet, lors de l'utilisation de POUR TOUT, une sauvegarde/restauration de contexte est automatiquement réalisée (équivalent aux fonctions HSauvePosition/HRetourPosition).

Filtre (syntaxes 2)

La syntaxe générale d'un filtre a la forme suivante :
"<Nom de la rubrique> <Opérateurs> <Valeur de la rubrique>"
Par exemple :
"NomClient > 'Dupont' et CodePos = 34 ou AgeClient >= 32"
Les opérateurs acceptés sont variables en fonction du type des rubriques utilisées dans la condition :
<>DifférentValable pour tous les types
>Plus grandValable pour tous les types
>=Plus grand ou égalValable pour tous les types
<Plus petitValable pour tous les types
<=Plus petit ou égalValable pour tous les types
=Strictement égalValable pour tous les types
~=Environ égalValable pour les types "chaîne" uniquement
]ContientValable pour les types "chaîne" uniquement
]=Commence parValable pour les types "chaîne" uniquement
Remarques :
  • Les chaînes constantes doivent être encadrées de simples quotes. Par exemple : "NomClient = '"+Client+"'"
  • Le <Nom de la rubrique> ne doit comporter que des lettres, des chiffres et des caractères soulignés ("_"). Si le <Nom de la rubrique> contient d'autres caractères (apostrophe, ...), le nom de la rubrique doit être entouré de doubles quotes. Par exemple : "e_mail@"]'fr'
  • Les comparaisons entre chaînes se font en fonction de la valeur ASCII des caractères et non pas d'une façon lexicographique ('a' > 'Z').
  • Les mémos binaires et les clés composées ne peuvent pas faire partie d'une <Valeur de la rubrique>.
  • Si une <Valeur de la rubrique> contient une simple quote (ou une double quote), il faut faire précéder cette simple quote (ou double quote) par un anti-slash.

Sortir d'une boucle de type POUR TOUT

Plusieurs instructions sont possibles :
  • RETOUR : Sortie de la boucle POUR TOUT et sortie du traitement (ou de la procédure) en cours.
  • RENVOYER : Renvoi d'un compte-rendu au traitement appelant. Sortie de la boucle POUR TOUT et sortie du traitement (ou de la procédure) en cours.
  • SORTIR : Sortie de la boucle POUR TOUT et exécution de la suite du traitement en cours.
La fonction Ferme permet de sortir de la boucle POUR TOUT et de fermer la fenêtre en cours.
Attention : Il n'est pas possible d'utiliser les instructions RETOUR et RENVOYER dans un même traitement.

Influence du mode de sortie de la boucle sur le parcours automatique des fichiers de données

  • Si le parcours se termine automatiquement :
    • La position dans le fichier de données avant le parcours est restaurée.
    • L'éventuel filtre nécessaire au parcours est désactivé.
  • Si le parcours est interrompu (instructions SORTIR, RETOUR, RENVOYER, Ferme, ...) :
    • La position dans le fichier de données avant le parcours n'est pas restaurée.
    • L'éventuel filtre nécessaire au parcours n'est pas désactivé. Il doit être désactivé manuellement (fonction HDésactiveFiltre).

Exécution de l'itération suivante

Pour exécuter directement l'itération suivante sans terminer le code de l'itération en cours, utilisez l'instruction Continuer :
// Parcours de NomFichier dans l'ordre de la rubrique RubriqueClé
POUR TOUT NomFichier sur RubriqueClé
...
SI Condition = Vrai ALORS CONTINUER   // Retour au mot-clé POUR TOUT
// et passage à l'enregistrement suivant
...
FIN

Modification de la clé utilisée pour le parcours automatique des fichiers de données ou des requêtes

Lors du parcours d'un fichier de données (ou d'une requête), si la valeur de la rubrique de parcours est modifiée, certains enregistrements peuvent être parcourus plusieurs fois.
En effet, la modification de la rubrique de parcours met à jour la clé d'index du fichier. Lors de la lecture automatique des enregistrements suivants, cette modification est prise en compte.
Cette remarque est également valable pour un parcours automatique d'une requête triée (ORDER BY) sans clé de parcours.
// Parcours de NomFichier sur la rubrique RubriqueClé
POUR TOUT NomFichier sur RubriqueClé
...
SI Condition = Vrai ALORS
// Modification de la valeur de la clé de parcours
NomFichier.RubriqueClé = "Nouvelle valeur"
HModifie(NomFichier)

FIN
// Si la nouvelle valeur de la clé de parcours
// positionne sur l'enregistrement après dans l'ordre de parcours
// l'enregistrement sera relu durant le parcours.
...
FIN
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
I'll show you how to read a table

Nessa aula de hoje
Vou mostrar como ler uma tabela
e pegar a descrição e jogar para dentro
de uma string

In this class today
I'll show you how to read a table
And pick up the description and play inside
Of a string

//Blog com video e exemplo


https://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/2233-aula-1105-windev-tabela-53-ler-tabelapegar-descricaocolocar/read.awp

http://windevdesenvolvimento.blogspot.com.br/2017/03/aula-1105-windev-tabela-53-ler.html

https://www.youtube.com/watch?v=CL5SsK_t8Wk
De matos
29 mar. 2017
I'll show you how to get an edt text And separate each row with cr
Nessa aula de hoje
vou mostrar como pegar um edt texto
e separar cada linha com cr
e adicionar numa tabela

In this class today
I'll show you how to get an edt text
And separate each row with cr
And add in a table

// Comandos

TableDeleteAll(TABLE_Texto)
// Limpando dados da tabela antes de preenche-la
// Clearing Table Data Before Filling It

FOR EACH STRING s_LINHA OF EDT_Texto SEPARATED BY CR
// Vou percorrer a string edt texto separando por Enter=Cr
// I'll go through the edt text string separating by Enter = Cr

TableAddLine(TABLE_Texto,s_LINHA)
// Estou adicionando a tabela, a linha encontrada
// I am adding the table, the row found

END

// Blog com video e exemplo

http://windevdesenvolvimento.blogspot.com.br/2017/03/aula-1104-windev-string-37-separar.html

https://www.youtube.com/watch?v=JOYmP_8OEUE

De matos
28 mar. 2017