|
|
|
|
|
- Equivalence
- Filtre (syntaxe 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
Instruction POUR TOUT / POUR TOUS (parcours de fichiers de données) En anglais : FOR EACH / FOR ALL
Non disponible avec ce type de connexion
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.
POUR TOUT Client
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT Client SUR NumClient
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT Client AVEC "VilleClient = 'Montpellier'"
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
Ville = "Lyon"
POUR TOUT Client AVEC "VilleClient = '" + Ville + "' et AgeClient >= 21"
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT Client AVEC "VilleClient = 'Montpellier'" SUR NumClient
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
Ville = "Lyon"
POUR TOUT Client AVEC "VilleClient = '" + Ville + "' ET " + ...
"AgeClient >= 21" SUR NumClient
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT Client AVEC NomClient = "Dupont"
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT Commande AVEC DateCommande = "20031231"
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN
POUR TOUT Commande AVEC DateCommande = "20030101" À "20031231"
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN
POUR TOUT Commande AVEC "20030101" <= DateCommande <= "20031231"
ListeAjoute(LISTE_ListeCommande, Commande.NumCommande)
FIN
POUR TOUT Client AVEC VilleClient [= "Mont" DEPUISFIN
ListeAjoute(LISTE_ListeClient, Client.NumClient)
FIN
POUR TOUT FicContact AVEC CCDepartement = ["Prospect", 69]
ListeAjoute(LISTE_ListeContact, FicContact.NumContact)
FIN
POUR TOUT FicContact AVEC CCodePostal [= ["Prospect", 69]
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 de données dans l'analyse (ajout d'une rubrique clé par exemple) peut modifier la clé de parcours utilisée. POUR TOUT <Fichier de données> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN 2. Parcours complet selon la clé passée en paramètre POUR TOUT <Fichier de données> SUR <Rubrique clé> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : 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. <SANSSAUVEPOSITION> : Mot-clé optionnel. Désactive la sauvegarde et la restauration de la position effectuée lors du parcours. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. <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. | DepuisFin | Parcours 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 de données dans l'analyse (ajout d'une rubrique clé par exemple) peut modifier la clé de parcours utilisée. POUR TOUT <Fichier de données> AVEC "<1ère Condition> [ET/OU/PAS <2ème Condition> [ET/OU/PAS...<Nième Condition>]]" [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN 2. Parcours avec filtre selon la clé spécifiée POUR TOUT <Fichier de données> AVEC "<1ère Condition> [ET/OU/PAS <2ème Condition> [ET/OU/PAS...<Nième Condition>]]" [[SANSSAUVEPOSITION,] [<Sens>]] ... SUR <Rubrique Clé> FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : 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 Remarques. <ET/OU/PAS> : Opérateur logique (optionnel) délimitant les différentes conditions du filtre à appliquer. <SANSSAUVEPOSITION> : Mot-clé optionnel. Désactive la sauvegarde et la restauration de la position effectuée lors du parcours. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. <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. | DepuisFin | Parcours 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 de données> AVEC <Rubrique Clé> [ = / <= / >= ] <Valeur> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN 2. Filtre de comparaison par rapport à un intervalle de valeurs POUR TOUT <Fichier de données> AVEC <Rubrique Clé> = <Valeur minimale> A <Valeur maximale> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN
POUR TOUT <Fichier de données> AVEC <Valeur minimale> <= <Rubrique Clé> <= <Valeur maximale> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : 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é. <SANSSAUVEPOSITION> : Mot-clé optionnel. Désactive la sauvegarde et la restauration de la position effectuée lors du parcours. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. <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. | DepuisFin | Parcours 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 de données> AVEC <Rubrique Clé> [= <Début de la valeur recherchée> [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : 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é. <SANSSAUVEPOSITION> : Mot-clé optionnel. Désactive la sauvegarde et la restauration de la position effectuée lors du parcours. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. <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. | DepuisFin | Parcours 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 de données> AVEC <Clé composée> = [<Valeur composante 1>, ..., <Valeur composante N>] [[SANSSAUVEPOSITION,] [<Sens>]] ... FIN 2. Recherche générique (de type "Commence par") POUR TOUT <Fichier de données> AVEC <Clé composée> [= [<Valeur composante 1>, ..., <Valeur composante N>] [[SANSSAUVEPOSITION,] [<Sens>]]
... FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : 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. <SANSSAUVEPOSITION> : Mot-clé optionnel. Désactive la sauvegarde et la restauration de la position effectuée lors du parcours. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. <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. | DepuisFin | Parcours le fichier de données du dernier élément au premier. |
<FIN> : Signale la fin du bloc d'instructions.
6 - Parcours d'un fichier de données avec une condition sur un index spatial Masquer les détails
POUR TOUT <Fichier de données> AVEC Fonction_WLangage(Fichier_de_données.RubriqueSpatiale, variable_spatiale) ... FIN
<POUR TOUT> : Signale le début du bloc d'instructions. <Fichier de données> : Nom du fichier de données, de la vue ou de la requête HFSQL à parcourir (contenant un index spatial). <AVEC> : Définit le type du parcours. <Fonction_WLangage> : Nom d'une fonction WLangage de manipulation des géométries. Les fonctions disponibles pour une conditions sur un index spatial sont les suivantes : GéométrieChevauche, GéométrieContient, GéométrieCouvre, GéométrieCroise, GéométrieDistance, GéométrieEgale, GéométrieEstContenu, GéométrieEstCouvert, GéométrieIntersecte. <RubriqueSpatiale> : Rubrique spatiale du fichier de données. Cette rubrique doit :- être de type "Données géographiques" ou de type "Données géométriques".
- être définie comme une "Clé spatiale".
<Variable_spatiale> : Variable spatiale utilisée pour la comparaison avec la rubrique spatiale. Cette variable est par exemple, une variable de type PolygoneGéo, Polygone2D, etc. <FIN> : Signale la fin du bloc d'instructions. Remarques Equivalence - La syntaxe POUR TOUT <Fichier de données> 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.
remarque : Les enregistrements rayés sont pris en compte lors du parcours. - La syntaxe POUR TOUT <Fichier de données> 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 (syntaxe 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érent | Valable pour tous les types | > | Plus grand | Valable pour tous les types | >= | Plus grand ou égal | Valable pour tous les types | < | Plus petit | Valable pour tous les types | <= | Plus petit ou égal | Valable pour tous les types | = | Strictement égal | Valable pour tous les types | ~= | Environ égal | Valable pour les types "chaîne" uniquement | ] | Contient | Valable pour les types "chaîne" uniquement | ]= | Commence par | Valable 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, etc.) :
- 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).
Si le mot-clé SANSSAUVEPOSITION a été utilisé, la sauvegarde et la restauration de la position effectuée lors du parcours sont désactivées. En effet, l'instruction POUR TOUT sauve automatiquement la position au début de la boucle et restaure cette position en cas de sortie "normale" de la boucle (la position n'est pas restaurée en cas d'interruption de la boucle par les mot-clé SORTIR, RETOUR ou RENVOYER). Ces sauvegardes et restaurations de position peuvent être coûteuses (notamment en temps), en particulier si le code utilisant l'instruction POUR TOUT est lui-même appelé dans une boucle. 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 :
POUR TOUT NomFichier SUR RubriqueClé
...
SI Condition = Vrai ALORS CONTINUER
...
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 de données. 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.
POUR TOUT NomFichier SUR RubriqueClé
...
SI Condition = Vrai ALORS
NomFichier.RubriqueClé = "Nouvelle valeur"
HModifie(NomFichier)
FIN
...
FIN
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|