WinDev 18, WebDev 18, WinDev Mobile 18 Documentation version 18(1) - 1012 Visitez rgulirement le site www.pcsoft.fr, espace tlchargement, pour vrifier si des mises jour sont pro- poses. Adresse e-mail Support Technique Gratuit : supportgratuit@pcsoft.fr. Conseil : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation, abonnez- vous la LST (revue trimestrielle + DVD), en franais. Cette documentation nest pas contractuelle. Des modifications ont pu intervenir dans le logiciel depuis la parution de ce manuel. Veuillez consulter laide en ligne. Tous les noms de produits ou autres marques cits dans cet ouvrage sont des marques dposes par leurs propritaires respectifs. PC SOFT 2012 : Aucune reproduction intgrale ou partielle du prsent ouvrage sur quelque support que ce soit ne peut tre effectue sans lautorisation expresse de PC SOFT. WLangage.book Page 2 Mardi, 23. avril 2013 1:59 13 Sommaire 3 SOMMAIRE GNRAL PARTIE 1 : EDITEUR DE CODE 1. PRSENTATION 29 1.1 Lditeur de code ............................................................................................................... 29 1.2 Fonctionnalits lies la saisie du code ............................................................................31 1.2.1 Mise en couleur du code ........................................................................................................ 31 1.2.2 Compltion automatique ....................................................................................................... 31 1.2.3 Assistant de code .................................................................................................................. 31 1.2.4 Aide la saisie des fonctions ................................................................................................. 31 1.2.5 Aide ...................................................................................................................................... 32 1.2.6 Historique du code................................................................................................................. 32 1.2.7 Vrification du code ............................................................................................................... 32 1.2.8 Indentation automatique ....................................................................................................... 32 1.2.9 Traduction des messages....................................................................................................... 33 1.2.10 Gestion des points darrt .................................................................................................... 33 1.2.11 Insertion de traitements spcifiques..................................................................................... 33 1.2.12 Autres fonctionnalits.......................................................................................................... 33 PARTIE 2 : SYNTAXE DE BASE DU WLANGAGE 1. INTRODUCTION 37 1.1 Quelques caractristiques du WLangage ......................................................................... 37 1.2 La programmation en code serveur et navigateur ........................................................... 38 2. LES VARIABLES 39 2.1 Les types simples .............................................................................................................. 39 2.1.1 Principe................................................................................................................................. 39 2.1.2 Types de variables ................................................................................................................. 39 2.1.3 Dclarer un type simple.......................................................................................................... 40 2.1.4 Les diffrents types dentier.................................................................................................... 40 2.1.5 Le type montaire .................................................................................................................. 41 2.1.6 Le type numrique ................................................................................................................. 41 2.1.7 Le type rel ............................................................................................................................ 41 2.1.8 Le type Chane....................................................................................................................... 41 2.1.9 Le type Buffer ........................................................................................................................ 42 2.1.10 Le type date......................................................................................................................... 42 2.1.11 Le type heure....................................................................................................................... 43 2.1.12 Le type DateHeure ............................................................................................................... 43 2.1.13 Le type dure....................................................................................................................... 43 2.1.14 Le type variant ..................................................................................................................... 44 2.2 Oprations disponibles sur les dates, heures, dures, ... ................................................ 44 WLangage.book Page 3 Mardi, 23. avril 2013 1:59 13 4 Sommaire 2.3 La gestion du NULL ...........................................................................................................45 2.3.1 Null et les requtes.................................................................................................................45 2.3.2 Null et les variants..................................................................................................................46 2.3.3 Null et les valeurs numriques ................................................................................................46 2.3.4 Null et les fonctions du WLangage ..........................................................................................46 2.3.5 Null et les objets dynamiques .................................................................................................46 2.4 Les constantes .................................................................................................................. 46 2.5 Les types avancs ............................................................................................................ 47 2.5.1 Tableau simple.......................................................................................................................47 2.5.2 Tableau dynamique................................................................................................................48 2.5.3 Tableau fixe............................................................................................................................50 2.5.4 Tableau associatif ..................................................................................................................51 2.5.5 Variable compose ................................................................................................................51 2.5.6 Structure................................................................................................................................52 2.5.7 Structure dynamique..............................................................................................................54 2.5.8 Objet automation ...................................................................................................................54 2.5.9 Objet Automation Dynamique.................................................................................................55 2.5.10 Source de donnes ..............................................................................................................56 2.5.11 Description de fichier ...........................................................................................................57 2.5.12 Description de liaison...........................................................................................................58 2.5.13 Description de rubrique........................................................................................................59 2.5.14 Police..................................................................................................................................60 2.5.15 Connexion ...........................................................................................................................61 2.5.16 File......................................................................................................................................61 2.5.17 Liste ....................................................................................................................................62 2.5.18 Pile......................................................................................................................................63 2.6 Variables locales / variables globales .............................................................................64 2.6.1 Variables globales..................................................................................................................64 2.6.2 Variables locales....................................................................................................................65 2.7 Rgle de porte des variables ..........................................................................................66 3. OPRATEURS 67 3.1 Prsentation ...................................................................................................................... 67 3.2 Oprateurs logiques ......................................................................................................... 67 3.2.1 Prsentation ..........................................................................................................................67 3.2.2 Rgles ...................................................................................................................................67 3.2.3 Notes.....................................................................................................................................67 3.3 Oprateurs arithmtiques ................................................................................................ 68 3.3.1 Prsentation ..........................................................................................................................68 3.3.2 Rgles de calcul .....................................................................................................................68 3.3.3 Notes.....................................................................................................................................68 3.4 Oprateurs binaires ..........................................................................................................68 3.4.1 Oprateurs binaires................................................................................................................68 3.4.2 Oprateurs de dcalage .........................................................................................................69 3.4.3 Oprateur daccs direct.........................................................................................................69 3.5 Oprateurs de comparaison ............................................................................................ 70 3.5.1 Prsentation ..........................................................................................................................70 3.5.2 Dtail.....................................................................................................................................70 WLangage.book Page 4 Mardi, 23. avril 2013 1:59 13 Sommaire 5 3.6 Oprateurs sur chanes de caractres ..............................................................................71 3.6.1 galit souple et galit trs souple........................................................................................ 71 3.6.2 L'oprateur [[ et ]] ................................................................................................................. 72 3.6.3 Oprateurs sur les chanes de caractres et UNICODE............................................................. 72 3.6.4 Position dans une chane de caractres.................................................................................. 72 3.6.5 Fonctions du WLangage......................................................................................................... 72 3.7 Oprateur sur adresse ..................................................................................................... 73 3.8 Oprateurs d'indirection .................................................................................................. 73 3.9 Oprateurs divers ............................................................................................................. 74 3.9.1 Les parenthses .................................................................................................................... 74 3.9.2 Les crochets .......................................................................................................................... 75 3.9.3 La virgule............................................................................................................................... 75 3.9.4 Le point virgule ...................................................................................................................... 75 3.9.5 Deux points ........................................................................................................................... 75 3.9.6 Le point ................................................................................................................................. 75 3.9.7 Le double point...................................................................................................................... 75 3.9.8 Triple point ............................................................................................................................ 75 3.9.9 La double barre ..................................................................................................................... 75 4. LES INSTRUCTIONS DU WLANGAGE 76 4.1 Instructions composes ..................................................................................................... 76 4.1.1 Instruction BOUCLE................................................................................................................ 76 4.1.2 Instruction GOTO.................................................................................................................... 77 4.1.3 Instruction POUR ................................................................................................................... 77 4.1.4 Instruction POUR TOUT / POUR TOUS, parcours de fichiers de donnes.................................... 78 4.1.5 Instruction POUR TOUT / POUR TOUS, parcours de chanes ..................................................... 80 4.1.6 Instruction POUR TOUT / POUR TOUS, parcours de champs..................................................... 81 4.1.7 Instruction POUR TOUT / POUR TOUS, parcours de tableaux .................................................... 82 4.1.8 Instruction POUR TOUT / POUR TOUS, parcours de tableaux associatifs ................................... 83 4.1.9 Instruction SELON.................................................................................................................. 84 4.1.10 Instruction SI ....................................................................................................................... 85 4.1.11 Instruction TANTQUE ............................................................................................................ 85 4.2 Instructions simples .......................................................................................................... 86 4.2.1 Instruction CONTINUER .......................................................................................................... 87 4.2.2 Instruction RETOUR................................................................................................................ 87 4.2.3 Instruction RENVOYER............................................................................................................ 88 4.2.4 Instruction SORTIR................................................................................................................. 88 5. MOTS RSERVS 90 5.1 Externe .............................................................................................................................. 90 5.2 MaFentre .........................................................................................................................91 5.3 MaPage .............................................................................................................................91 5.4 MaSource ......................................................................................................................... 92 5.5 Modulo ............................................................................................................................. 92 5.6 MoiMme ......................................................................................................................... 92 5.7 MonChampPopup ............................................................................................................ 93 5.8 MonEtat ............................................................................................................................ 94 WLangage.book Page 5 Mardi, 23. avril 2013 1:59 13 6 Sommaire 5.9 MonFichier ........................................................................................................................94 5.10 MonParent ......................................................................................................................94 5.11 STOP (appel du dbogueur) ............................................................................................95 6. PROCDURE ET FONCTION 96 6.1 Prsentation ......................................................................................................................96 6.2 Procdure / fonction globale et locale .............................................................................96 6.2.1 Dfinition...............................................................................................................................96 6.2.2 Procdure globale..................................................................................................................96 6.2.3 Procdure locale ....................................................................................................................98 6.3 Collection de procdures ................................................................................................. 99 6.3.1 Dfinition...............................................................................................................................99 6.3.2 Cration d'une collection de procdures.................................................................................99 6.3.3 Importation d'une collection de procdures............................................................................99 6.4 Dclarer une procdure / une fonction ........................................................................... 99 6.4.1 Syntaxe..................................................................................................................................99 6.4.2 Sortie d'une procdure ..........................................................................................................99 6.4.3 Renvoi d'un rsultat .............................................................................................................100 6.5 Appeler une procdure / une fonction .......................................................................... 100 6.6 Paramtre d'une procdure / une fonction ................................................................... 100 6.6.1 Typage des paramtres ........................................................................................................100 6.6.2 Passage de paramtres........................................................................................................101 6.6.3 Paramtre optionnel.............................................................................................................102 6.6.4 Procdure nombre de paramtres variables .......................................................................102 6.7 Surcharger une fonction WLangage .............................................................................. 102 6.7.1 Dfinition.............................................................................................................................102 6.7.2 Comment le faire ?...............................................................................................................102 6.7.3 Diffrencier la fonction WLangage et la fonction personnalise..............................................102 6.8 Surcharge de prototype ................................................................................................. 103 6.8.1 Prsentation ........................................................................................................................103 6.8.2 Comment le faire ?...............................................................................................................103 6.8.3 Gestion du multisyntaxe en excution ...................................................................................103 7. GESTION DES EXCEPTIONS 105 7.1 Prsentation .................................................................................................................... 105 7.1.1 Affichage d'un message personnalis ..................................................................................105 7.1.2 Mcanisme des exceptions...................................................................................................105 7.2 Mcanisme des exceptions gnrales ........................................................................... 105 7.2.1 Prsentation ........................................................................................................................105 7.2.2 Syntaxes de dclaration .......................................................................................................106 7.2.3 Dclaration de plusieurs traitements d'exceptions gnrales ................................................106 7.2.4 Remarques gnrales...........................................................................................................106 7.2.5 Cas particulier......................................................................................................................107 7.3 Mcanisme des exceptions spcifiques ..........................................................................107 7.3.1 Prsentation ........................................................................................................................107 7.3.2 Syntaxes de dclaration .......................................................................................................107 WLangage.book Page 6 Mardi, 23. avril 2013 1:59 13 Sommaire 7 7.4 Mcanisme des exceptions automatises ......................................................................107 7.4.1 Mise en place ...................................................................................................................... 108 7.4.2 Excuter le traitement d'erreur ("CAS EXCEPTION:" dans le code) ........................................ 108 7.4.3 Excuter une procdure de traitement d'exception ............................................................... 108 7.5 Fonctions de gestion des exceptions ..............................................................................108 8. PROGRAMMATION ORIENTE OBJET (POO) 109 8.1 Prsentation de la POO (Programmation Oriente Objet) ..............................................109 8.2 Concepts de la POO ........................................................................................................109 8.2.1 Classe................................................................................................................................. 109 8.2.2 Objet ................................................................................................................................... 109 8.2.3 Constructeur et destructeur .................................................................................................. 110 8.2.4 Hritage .............................................................................................................................. 110 8.2.5 Encapsulation de donnes................................................................................................... 110 8.3 Classe, membres et mthodes ........................................................................................ 110 8.3.1 Dclaration de la classe....................................................................................................... 110 8.3.2 Dclaration des membres .................................................................................................... 111 8.3.3 Dclaration des constantes.................................................................................................. 111 8.3.4 Dclaration des mthodes ................................................................................................... 111 8.3.5 Cration et dclaration des proprits .................................................................................. 112 8.4 Constructeur et destructeur ............................................................................................. 113 8.4.1 Constructeur de la classe ..................................................................................................... 113 8.4.2 Constructeur des classes de base et des membres ............................................................... 113 8.4.3 Mthode Destructeur .......................................................................................................... 113 8.5 Objet ................................................................................................................................ 114 8.5.1 Dclaration d'un objet ......................................................................................................... 114 8.5.2 Les membres d'un objet ...................................................................................................... 114 8.5.3 Les mthodes d'un objet ..................................................................................................... 114 8.5.4 Dure de vie d'un objet........................................................................................................ 114 8.6 Instanciation dynamique d'un objet ............................................................................... 115 8.6.1 Dclaration d'un objet dynamique ....................................................................................... 115 8.6.2 Instancier un objet dynamique ............................................................................................. 115 8.6.3 Librer un objet dynamique.................................................................................................. 115 8.7 Hritage de classe ........................................................................................................... 115 8.7.1 Syntaxe ............................................................................................................................... 116 8.7.2 Redfinition de mthodes .................................................................................................... 116 PARTIE 3 : GESTION DES FENTRES, DES PAGES ET DES CHAMPS 1. GESTION DES FENTRES 119 1.1 Prsentation ...................................................................................................................... 119 1.2 Fonctions de gestion des fentres ................................................................................... 119 1.3 Fonctions MDI .................................................................................................................. 121 1.4 Fonctions de gestion des menus ..................................................................................... 121 WLangage.book Page 7 Mardi, 23. avril 2013 1:59 13 8 Sommaire 2. GESTION DES PAGES 123 2.1 Prsentation .................................................................................................................... 123 2.2 Fonctions de gestion des pages ..................................................................................... 123 2.3 Fonctions de gestion des menus .................................................................................... 124 3. GRER LE BOUTON "PRCDENT" DANS UNE PAGE 125 3.1 Prsentation .................................................................................................................... 125 3.1.1 Deux mthodes de gestion du bouton "Prcdent" du navigateur .........................................125 3.1.2 Exemple de dsynchronisation .............................................................................................125 3.2 Empcher lutilisation du bouton "Prcdent" ............................................................... 126 3.2.1 Fonctionnement ...................................................................................................................126 3.2.2 Mise en place.......................................................................................................................126 3.3 Gestion de la synchronisation ........................................................................................ 126 3.3.1 Prsentation ........................................................................................................................126 3.3.2 Synchronisation par dfaut...................................................................................................126 3.4 Synchronisation par programmation ..............................................................................127 4. DIALOGUER AVEC L'UTILISATEUR OU LINTERNAUTE 128 4.1 Prsentation .................................................................................................................... 128 4.2 Les botes de dialogue standard .................................................................................... 128 4.3 Les botes de dialogue avances ................................................................................... 129 4.3.1 Prsentation ........................................................................................................................129 4.3.2 Interrogation directive ..........................................................................................................129 4.3.3 Saisie immdiate .................................................................................................................129 4.3.4 Base de messages ...............................................................................................................129 4.4 Personnaliser les botes de dialogue ............................................................................. 129 4.4.1 Personnaliser les fentres dinformation systme ..................................................................130 4.4.2 Ne plus personnaliser les fentres dinformation systme......................................................130 4.4.3 Botes de dialogues multilingues ..........................................................................................130 4.5 Fermeture automatique des botes de dialogue ........................................................... 130 4.6 Dialogue avanc avec linternaute ................................................................................. 131 4.6.1 Prsentation ........................................................................................................................131 4.6.2 Les fonctions WLangage disponibles.....................................................................................131 4.6.3 Grer un dialogue avec des cellules ......................................................................................131 4.6.4 Grer un dialogue avec des pages ........................................................................................131 4.6.5 Grer un dialogue avec OuiNon et OKAnnuler ........................................................................132 4.7 Fonctions de gestion des botes de dialogue ................................................................. 132 5. GESTION DU DRAG AND DROP 133 5.1 Qu'est-ce que le "Drag and Drop" ? .............................................................................. 133 5.2 "Drag and Drop" automatique ...................................................................................... 133 5.2.1 WinDev : Champs concerns par le Drag and Drop automatique............................................133 5.2.2 WebDev : Champs concerns par le Drag and Drop automatique...........................................133 5.2.3 Configurer le "Drag and Drop" par dfaut .............................................................................134 WLangage.book Page 8 Mardi, 23. avril 2013 1:59 13 Sommaire 9 5.3 "Drag and Drop" programm .........................................................................................134 5.3.1 Principe............................................................................................................................... 134 5.3.2 Programmation.................................................................................................................... 134 5.4 "Drag and Drop" depuis l'explorateur ............................................................................135 5.4.1 Principe............................................................................................................................... 135 5.4.2 Fonctions spcifiques au "Drag and Drop" depuis l'explorateur ........................................... 135 5.4.3 Programmation.................................................................................................................... 135 5.5 Fonctions de gestion du "Drag and Drop" ......................................................................136 6. GESTION DES CHAMPS 137 6.1 Prsentation .....................................................................................................................137 6.2 Fonctions gnrales de manipulation des champs ........................................................137 7. PROPRITS DES FENTRES, DES PAGES ET DES CHAMPS 140 PARTIE 4 : FONCTIONS STANDARD 1. MANIPULER LES NUMRIQUES 151 1.1 Prsentation ...................................................................................................................... 151 1.2 Les matrices ..................................................................................................................... 151 1.2.1 Dfinition ............................................................................................................................ 151 1.2.2 Manipulations des matrices ................................................................................................. 151 1.3 Les statistiques .................................................................................................................152 1.4 Calculs financiers .............................................................................................................152 1.5 Fonction de gestion des numriques ...............................................................................152 1.5.1 Fonctions diverses ............................................................................................................... 152 1.5.2 Fonctions Binaire................................................................................................................. 153 1.5.3 Fonctions Matrice ................................................................................................................ 153 1.5.4 Fonctions Financires .......................................................................................................... 154 1.5.5 Fonctions Statistiques.......................................................................................................... 154 2. MANIPULER LES CHANES DE CARACTRES 155 2.1 Manipuler le contenu d'une chane .................................................................................155 2.2 WinDev et lUnicode ........................................................................................................155 2.2.1 Qu'est-ce que l'UNICODE.................................................................................................... 155 2.2.2 WinDev et l'unicode............................................................................................................. 155 2.3 Manipulation des chanes de caractres sous Pocket PC ..............................................156 2.4 Fonctions de gestion des chanes de caractres ............................................................156 WLangage.book Page 9 Mardi, 23. avril 2013 1:59 13 10 Sommaire 3. MANIPULER DES DATES ET DES HEURES 159 3.1 Prsentation .................................................................................................................... 159 3.2 Diffrentes faons de manipuler les dates et les heures ............................................... 159 3.3 Manipuler les dates / heures prsentes dans des champs de saisie ............................ 159 3.4 Fonctions de gestion des dates et des heures ............................................................... 159 4. MANIPULER LES GRAPHES 161 4.1 Prsentation ..................................................................................................................... 161 4.2 Les diffrents types de graphes ...................................................................................... 161 4.2.1 Les graphes de type "Secteur".............................................................................................161 4.2.2 Les graphes de type "Histogramme"....................................................................................161 4.2.3 Les graphes de type "Courbe" .............................................................................................162 4.2.4 Les graphes de type "Nuage de points"................................................................................162 4.2.5 Les graphes de type "Boursier"............................................................................................162 4.2.6 Les graphes en 3 dimensions ...............................................................................................162 4.3 Comment crer des graphes ? ....................................................................................... 163 4.3.1 Crer des graphes dans les diteurs......................................................................................163 4.3.2 Crer des graphes par programmation ..................................................................................163 4.3.3 Graphes et threads...............................................................................................................163 4.3.4 Valeurs par dfaut d'un graphe ............................................................................................163 4.4 Exemples livrs avec WinDev ......................................................................................... 164 4.5 Fonctions de gestion des graphes ................................................................................. 164 5. MANIPULER LES ZONES MMOIRE 166 6. MANIPULER DES FICHIERS EXTERNES 167 6.1 Prsentation .....................................................................................................................167 6.2 Manipulation du contenu des fichiers externes ..............................................................167 6.3 Manipulation de fichiers ..................................................................................................167 6.4 Manipulation de disques et de leurs rpertoires ........................................................... 168 6.5 Fonctions de gestion des fichiers externes .................................................................... 168 7. ZONES DE MEMOIRES PARTAGEES 171 7.1 Prsentation ..................................................................................................................... 171 7.2 Comment le faire ? .......................................................................................................... 171 7.2.1 Crer une zone de mmoire partage....................................................................................171 7.2.2 Savoir si une zone de mmoire partage existe dj ..............................................................171 7.2.3 Manipuler le contenu d'une zone de mmoire partage par programmation...........................171 7.2.4 Fonctions WLangage ............................................................................................................172 7.3 Dialogue entre plusieurs applications .............................................................................172 7.3.1 Notification automatique des modifications..........................................................................172 7.3.2 Synchronisation manuelle ....................................................................................................172 WLangage.book Page 10 Mardi, 23. avril 2013 1:59 13 Sommaire 11 7.4 Nommage des zones de mmoire partages ................................................................173 7.4.1 Gestion du mode de partage ................................................................................................ 173 7.4.2 Correspondance entre le nom fourni fMemOuvre et l'ouverture en C ................................... 173 7.5 Fonctions de gestion des zones mmoires partages ....................................................173 8. IMPRIMER EN WLANGAGE 174 8.1 Prsentation .....................................................................................................................174 8.2 Principe de l'impression en WLangage ...........................................................................174 8.2.1 Etape 1 : Configuration des paramtres d'impression........................................................... 174 8.2.2 Etape 2 : Cration des polices d'impression ......................................................................... 175 8.2.3 Etape 3 : Impression............................................................................................................ 176 8.3 Fonctions dimpression .................................................................................................... 177 8.4 Fonctions PDF ..................................................................................................................179 9. GRER WINDOWS 180 9.1 Prsentation .....................................................................................................................180 9.2 Fonctions de gestion de la base de registres ..................................................................180 9.3 Fonctions de gestion du presse-papiers .........................................................................180 9.4 Fonctions de gestion de la corbeille ........................................................................ 181 9.5 Fonctions de gestion de la souris .................................................................................... 181 9.6 Fonctions de vrification de l'orthographe .................................................................... 181 9.7 Fonctions Reconnaissance vocale ...................................................................................182 9.8 Fonctions de gestion des ports srie et parallle ............................................................182 9.9 Fonctions de gestion des priphriques Twain ...............................................................182 9.10 Fonctions USB ................................................................................................................183 9.11 Fonctions MCI .................................................................................................................183 9.12 Fonctions Service ...........................................................................................................184 9.13 Fonctions systme ..........................................................................................................185 9.14 Fonctions diverses Windows ..........................................................................................186 9.15 Evnement Windows .....................................................................................................187 9.16 Fonctions Java ...............................................................................................................188 9.17 Fonctions diverses WinDev / WebDev ...........................................................................188 9.18 Fonctions de gestion des excutables ...........................................................................192 9.19 Fonctions Hasp ..............................................................................................................192 9.20 Fonctions de gestion du DDE ........................................................................................193 9.21 Fonctions de gestion des applications avec "live update" ............................................193 9.22 Fonctions de gestion des rseaux .................................................................................194 9.23 Fonctions de gestion du protocole SNMP .....................................................................194 9.24 Fonctions de gestion des projets ...................................................................................195 9.25 Fonctions de gestion du planificateur ...........................................................................195 WLangage.book Page 11 Mardi, 23. avril 2013 1:59 13 12 Sommaire 10. ACTIVATION DUNE APPLICATION 196 10.1 Prsentation ................................................................................................................... 196 10.2 Comment le faire ? ....................................................................................................... 196 10.2.1 Principe.............................................................................................................................196 10.2.2 Mise en place dans l'application cliente.............................................................................196 10.2.3 Mise en place dans l'application du fournisseur..................................................................196 10.3 Fonctions de gestion des cls d'activation ................................................................... 196 11. MANIPULEZ VOS FICHIERS XLS 197 11.1 Prsentation .....................................................................................................................197 11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX ....................................197 11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par compatibilit) ........... 198 11.4 Fonctions WLangage ..................................................................................................... 198 11.5 Fonctions XLS ................................................................................................................. 199 12. LES ARCHIVES 200 12.1 Prsentation ...................................................................................................................200 12.2 Manipulations des archives ..........................................................................................200 12.3 Les archives mono-partie/multi-parties ....................................................................... 201 12.3.1 Prsentation ......................................................................................................................201 12.3.2 Principe d'utilisation..........................................................................................................201 12.3.3 Exemples...........................................................................................................................202 12.4 Fonctions d'archivage ...................................................................................................202 13. GRAVER UN CD OU UN DVD 204 13.1 Prsentation ...................................................................................................................204 13.2 Gravure dun CD / DVD .................................................................................................204 13.3 Fonctions de gravure ....................................................................................................205 14. FONCTIONS DACCS AU POCKET PC 206 15. FONCTIONS SPCIFIQUES WINDEV MOBILE 208 15.1 WinDev Mobile et les cartes SIM ...................................................................................208 15.1.1 Prsentation ......................................................................................................................208 15.1.2 Configuration ncessaire....................................................................................................208 15.1.3 Fonctionnement diffrent en mode GO et en utilisation relle ..............................................208 15.1.4 Fonctions WLangage..........................................................................................................208 15.2 Clavier du Pocket ..........................................................................................................208 15.2.1 Prsentation ......................................................................................................................208 15.2.2 Fonctions WLangage..........................................................................................................209 WLangage.book Page 12 Mardi, 23. avril 2013 1:59 13 Sommaire 13 PARTIE 5 : FONCTIONNALITS SPCIFIQUES AU WEB 1. UPLOAD DE FICHIERS 213 1.1 Prsentation ......................................................................................................................213 1.2 Mettre en place lupload dans un site WebDev ..............................................................213 1.2.1 Elments mis disposition................................................................................................... 213 1.2.2 Uploader un fichier dans une page ....................................................................................... 214 1.2.3 Afficher limage uploader................................................................................................... 214 2. DOWNLOAD DE FICHIERS 215 2.1 Prsentation .....................................................................................................................215 2.2 Mettre en place le tlchargement dun fichier dans un site WebDev ..........................215 2.2.1 Utilisation de la fentre de description des champs (bouton, lien, ...) .................................... 215 2.2.2 Programmation.................................................................................................................... 215 2.2.3 Forcer le tlchargement du fichier ....................................................................................... 215 3. COOKIES 216 3.1 Prsentation .....................................................................................................................216 3.2 Que contient un cookie ? ................................................................................................216 3.3 WebDev et la gestion des cookies ..................................................................................216 3.3.1 Elments mis disposition................................................................................................... 216 3.3.2 Ecrire un cookie sur le poste de linternaute .......................................................................... 217 3.3.3 Lire un cookie sur le poste de linternaute (code serveur et code navigateur) .......................... 217 3.4 Tester la gestion des cookies dans un site WebDev .......................................................217 4. VALIDIT DES PAGES DUN SITE 218 4.1 Prsentation .....................................................................................................................218 4.2 Comment le faire ? ..........................................................................................................218 4.2.1 Dfinir la date limite de validit des pages............................................................................ 218 4.2.2 Supprimer la date limite de validit ...................................................................................... 218 4.2.3 Configurer le serveur d'application Windows pour grer la date limite de validit ................... 218 4.2.4 Configurer le serveur d'application Linux pour grer la date limite de validit ......................... 219 5. INCLURE DES FICHIERS JAVASCRIPT OU UNE RESSOURCE WEB 220 5.1 Prsentation ....................................................................................................................220 5.2 Comment le faire ? ......................................................................................................... 220 5.2.1 Intgration de fichiers Javascript (.js).................................................................................... 220 5.2.2 Intgration de ressources externes au site............................................................................. 220 5.2.3 Dtection automatique de l'encodage ................................................................................. 221 5.3 Manipulation d'objets Javascript externes depuis le WLangage ...................................221 WLangage.book Page 13 Mardi, 23. avril 2013 1:59 13 14 Sommaire 6. AJAX 222 6.1 Prsentation ....................................................................................................................222 6.2 AJAX automatique et immdiat .....................................................................................222 6.2.1 Prsentation ........................................................................................................................222 6.2.2 Traitements permettant dutiliser automatiquement AJAX ......................................................223 6.2.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX ..................223 6.2.4 Spcificits..........................................................................................................................224 6.3 AJAX Programm ...........................................................................................................225 6.3.1 Prsentation ........................................................................................................................225 6.3.2 Fonctions de gestion AJAX ....................................................................................................225 6.3.3 Procdures pouvant tre appeles par AJAX..........................................................................226 6.3.4 Fonctions WLangage non utiles en AJAX................................................................................226 7. GADGETS VISTA 227 7.1 Prsentation ....................................................................................................................227 7.2 Cration du Gadget ........................................................................................................ 227 7.2.1 Les tapes ...........................................................................................................................227 7.2.2 Gnration du gadget...........................................................................................................228 7.3 Programmation des Gadgets Vista ................................................................................228 7.3.1 Prsentation ........................................................................................................................228 7.3.2 Les diffrents types de pages................................................................................................228 7.3.3 Les fonctions WLangage.......................................................................................................229 8. UTILISATION DE SITES DCONNECTS 230 8.1 Prsentation ....................................................................................................................230 8.2 Mise en place .................................................................................................................230 8.2.1 Dfinition des ressources mettre en cache .........................................................................230 8.2.2 Configuration du serveur.......................................................................................................230 8.2.3 Technique de programmation ...............................................................................................230 8.2.4 Test du site ..........................................................................................................................231 8.3 Accs en mode local une base de donnes (SQLite) .................................................. 231 8.3.1 Comment grer une base de donnes locale ?......................................................................231 8.3.2 Les fonctions SQL.................................................................................................................232 8.3.3 Enregistrer en local les donnes d'un site dconnect...........................................................232 9. STOCKAGE LOCAL 234 9.1 Prsentation ....................................................................................................................234 9.2 Les fonctions WLangage ................................................................................................234 10. SSL : TRANSACTIONS SCURISES 235 10.1 Prsentation ...................................................................................................................235 10.2 Mettre en place des transactions scurises avec le protocole SSL ............................235 10.3 Obtention dun certificat SSL pour IIS2 (2.0 ou +) .........................................................235 10.3.1 Etape 1 : Cration dun certificat .........................................................................................235 10.3.2 Etape 2 : Demande de certification.....................................................................................236 WLangage.book Page 14 Mardi, 23. avril 2013 1:59 13 Sommaire 15 10.3.3 Etape 3 : Certification du certificat sur le serveur ................................................................. 236 10.4 Insrer des transactions scurises par SSL dans un site WebDev .............................. 237 10.4.1 Principe............................................................................................................................. 237 10.4.2 Mise en place.................................................................................................................... 237 10.4.3 Revenir en mode normal (transaction non scurise) dans le navigateur en cours................ 237 11. JSON 238 11.1 Prsentation ...................................................................................................................238 11.2 Obtenir des informations au format JSON ....................................................................238 11.2.1 Fonctionnement ................................................................................................................ 238 11.2.2 Exemple dutilisation de la fonction JSONExcute ............................................................... 238 11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne.................................................... 238 11.3 Crer des pages renvoyant des donnes JSON ............................................................239 11.3.1 Cas d'une page appele par la fonction JSONExcute ........................................................ 239 11.3.2 Cas d'une page appele par la fonction JSONExcuteExterne ............................................. 239 PARTIE 6 : COMMUNICATION 1. LA COMMUNICATION 243 1.1 Communication avec WinDev / WebDev ........................................................................243 1.2 Communication avec WinDev Mobile ............................................................................244 2. COMMUNIQUEZ PAR EMAILS 245 2.1 Prsentation ....................................................................................................................245 2.2 La gestion des emails ..................................................................................................... 245 2.3 Mode synchrone / asynchrone (WebDev uniquement) .................................................245 2.4 Grez les emails avec les protocoles POP 3/SMTP .......................................................246 2.4.1 Prsentation des protocoles POP3 / SMTP............................................................................ 246 2.4.2 Principe d'utilisation............................................................................................................ 246 2.5 Grez les emails avec le protocole IMAP .......................................................................248 2.5.1 Prsentation du protocole IMAP ........................................................................................... 248 2.5.2 Utilisation du protocole IMAP ............................................................................................... 248 2.6 Grez les emails avec "Simple MAPI" (WinDev et WebDev) .........................................248 2.6.1 Principe d'utilisation............................................................................................................ 248 2.6.2 tape 1 : Crer un profil utilisateur ........................................................................................ 249 2.6.3 tape 2 : Ouverture d'une session de messages ................................................................... 249 2.6.4 tape 3 : Envoi d'emails ...................................................................................................... 249 2.6.5 tape 3bis : Lecture des emails............................................................................................ 250 2.6.6 tape 4 : Fermeture de la session de messages .................................................................... 251 2.7 Grer les emails avec CEMapi (WinDev Mobile uniquement) .........................................251 2.8 Lire et crire un email ......................................................................................................251 2.9 Fonctions de gestion des emails .....................................................................................251 WLangage.book Page 15 Mardi, 23. avril 2013 1:59 13 16 Sommaire 3. ACCDER LOTUS NOTES ET OUTLOOK 253 3.1 Accder Lotus Notes ....................................................................................................253 3.1.1 Prsentation ........................................................................................................................253 3.1.2 Mthode daccs Lotus Notes ............................................................................................253 3.1.3 Mthode d'accs concise si vous ne voulez pas accder aux documents ...............................253 3.1.4 Manipulation des donnes ...................................................................................................253 3.2 Accder Outlook ..........................................................................................................253 3.2.1 Prsentation ........................................................................................................................253 3.2.2 Mthode daccs Outlook ..................................................................................................253 3.2.3 Envoi et rception des emails ...............................................................................................254 3.2.4 Version de Outlook ...............................................................................................................254 3.2.5 Manipulation des donnes ...................................................................................................254 3.3 Fonctions Lotus Notes et Outlook ...................................................................................254 3.3.1 Fonctions emails pour Lotus Notes .......................................................................................254 3.3.2 Fonctions emails pour Outlook..............................................................................................255 3.3.3 Fonctions Tche...................................................................................................................256 3.3.4 Fonctions Rendezvous..........................................................................................................256 3.3.5 Fonctions Contact ................................................................................................................257 3.3.6 Fonctions Groupe.................................................................................................................257 3.3.7 Fonctions Notes ...................................................................................................................258 4. GOOGLE 259 4.1 Gestion des contacts Google ..........................................................................................259 4.1.1 Prsentation ........................................................................................................................259 4.1.2 Comment grer les contacts Google ?...................................................................................259 4.1.3 Comment rcuprer un contact Google ? ..............................................................................259 4.1.4 Comment modifier ou supprimer des contacts Google ?........................................................259 4.1.5 Fonctions de gestion des contacts Google.............................................................................260 4.2 Gestion des agendas Google .........................................................................................260 4.2.1 Prsentation ........................................................................................................................260 4.2.2 Comment grer un agenda Google ?.....................................................................................261 4.2.3 Comment rcuprer un agenda Google et ses lments ?......................................................261 4.2.4 Comment ajouter, modifier ou supprimer des vnements dans un agenda Google ?.............261 4.2.5 Fonctions de gestion des agendas Google.............................................................................262 4.3 Utiliser le service de gestion d'album photo Google Picasa ..........................................263 4.3.1 Prsentation ........................................................................................................................263 4.3.2 Comment le faire ?...............................................................................................................263 4.3.3 Fonctions de gestion des albums Picasa...............................................................................264 4.4 Gestion des documents Google .....................................................................................265 4.4.1 Prsentation ........................................................................................................................265 4.4.2 Comment grer les documents Google ?...............................................................................265 4.5 Utiliser le service de cartographie Google Maps ...........................................................265 4.5.1 Prsentation ........................................................................................................................265 4.5.2 Comment le faire ?...............................................................................................................266 4.5.3 Autres Services ....................................................................................................................266 4.5.4 Fonctions de gestion des cartes Google ................................................................................266 WLangage.book Page 16 Mardi, 23. avril 2013 1:59 13 Sommaire 17 5. SALESFORCE 267 5.1 Utiliser le service Salesforce ............................................................................................ 267 5.1.1 Prsentation........................................................................................................................ 267 5.1.2 Comment le faire ? .............................................................................................................. 267 5.2 Fonctions Salesforce ....................................................................................................... 267 6. FLUX RSS 269 6.1 Prsentation ....................................................................................................................269 6.2 Comment le faire ? ......................................................................................................... 269 6.3 Fonctions de gestion des flux RSS ..................................................................................269 7. SERVEUR LDAP 270 7.1 Prsentation .................................................................................................................... 270 8. WINDEV ET LA TLPHONIE 271 8.1 Prsentation ....................................................................................................................271 8.2 Grer les appels entrants ................................................................................................271 8.2.1 Les diffrentes tapes.......................................................................................................... 271 8.2.2 Exemple .............................................................................................................................. 272 8.3 Grer les appels sortants ............................................................................................... 273 8.3.1 Les diffrentes tapes.......................................................................................................... 273 8.3.2 Manipuler un appel sortant .................................................................................................. 274 8.4 Fonctions de tlphonie ................................................................................................. 274 9. GESTION DES SMS 276 9.1 Prsentation .................................................................................................................... 276 9.2 La structure SMS ............................................................................................................ 276 9.2.1 Prsentation........................................................................................................................ 276 9.2.2 Les diffrentes variables de la structure SMS ........................................................................ 276 9.2.3 Lecture et suppression de SMS sur un Smartphone............................................................... 277 9.2.4 Diffrents types de numros................................................................................................. 277 9.2.5 Fonctionnement diffrent en mode GO et en utilisation relle ................................................ 277 9.3 Fonctions WLangage ...................................................................................................... 277 10. ENVOYER DES FAX 278 10.1 Prsentation ................................................................................................................... 278 10.2 Configurer le poste "serveur de fax" ............................................................................ 278 10.2.1 Configuration du poste en cours......................................................................................... 278 10.2.2 Configuration du serveur de fax sous Windows 2000 .......................................................... 278 10.2.3 Configuration du serveur de fax sous Windows XP ............................................................... 278 10.3 Application ou site d'envoi de fax ................................................................................ 279 10.3.1 Envoyer un fax depuis une application ou un site ................................................................ 279 10.3.2 Envoyer un fax cr avec lditeur dtats............................................................................ 279 WLangage.book Page 17 Mardi, 23. avril 2013 1:59 13 18 Sommaire 10.4 Configurer le serveur de fax par programmation ........................................................279 10.4.1 Options du serveur de fax ...................................................................................................279 10.4.2 Astuces .............................................................................................................................280 10.5 Fonctions de gestion des fax ........................................................................................280 11. RCUPRER DES PAGES HTML 281 11.1 Prsentation .................................................................................................................... 281 11.2 Fonctions HTTP ............................................................................................................... 281 12. GESTION DE FICHIERS SUR INTERNET 282 12.1 Prsentation ...................................................................................................................282 12.1.1 Envoyer et recevoir des fichiers par FTP ou RPC WinDev : les rgles suivre..........................282 12.1.2 Autres fonctionnalits ........................................................................................................282 12.2 Utilisation dtaille du FTP / RPC WinDev ....................................................................282 12.2.1 tape 1 : Etablissement d'une connexion avec un serveur RPC / FTP WinDev.......................282 12.2.2 tape 2 : Transmission d'un fichier un serveur FTP WinDev ...............................................282 12.2.3 tape 3 : Rcupration d'un fichier depuis un serveur FTP WinDev.......................................283 12.2.4 Etape 4 : Fermeture d'une connexion avec un serveur RPC / FTP WinDev.............................283 12.3 Fonctions Net ................................................................................................................284 13. COMMUNIQUER AVEC UN SERVEUR FTP 285 13.1 Manipuler des fichiers sur un serveur RPC ....................................................................285 13.1.1 Prsentation ......................................................................................................................285 13.1.2 Le FTP................................................................................................................................285 13.1.3 Principe d'utilisation..........................................................................................................285 13.1.4 Chemin relatif / chemin absolu...........................................................................................285 13.1.5 Exemple ............................................................................................................................286 13.2 Fonctions FTP .................................................................................................................286 14. GESTION DES SOCKETS 287 14.1 Prsentation ...................................................................................................................287 14.1.1 Diffrentes possibilits.......................................................................................................287 14.1.2 Exemple ............................................................................................................................287 14.2 Application WinDev Cliente / Site WebDev Client ........................................................287 14.2.1 Principe dune application cliente ou dun site client............................................................287 14.2.2 Mode de transmission des informations..............................................................................288 14.3 Application WinDev "Serveur simplifi" ........................................................................288 14.3.1 Le serveur simplifi ............................................................................................................288 14.3.2 Mode de transmission des informations..............................................................................289 14.4 Serveur de socket standard ..........................................................................................289 14.4.1 Le serveur de socket standard ............................................................................................289 14.4.2 Mode de transmission des informations..............................................................................290 14.5 Fonctions Socket ........................................................................................................... 291 WLangage.book Page 18 Mardi, 23. avril 2013 1:59 13 Sommaire 19 15. GESTION DES CLS BLUETOOTH 292 15.1 Prsentation ...................................................................................................................292 15.2 Comment le faire ? .......................................................................................................292 15.3 Quelles cls utiliser ? .....................................................................................................292 15.4 Les fonctions Bluetooth et OBEX ...................................................................................293 15.4.1 Fonctions Bluetooth........................................................................................................... 293 15.4.2 Fonctions OBEX ................................................................................................................. 293 16. GESTION DES THREADS 294 16.1 Prsentation ...................................................................................................................294 16.1.1 D'une gestion simple des threads vers une gestion avance ............................................... 294 16.1.2 Exemple ............................................................................................................................ 294 16.2 Principe dutilisation des threads ..................................................................................294 16.2.1 Gestion simple des threads................................................................................................ 294 16.2.2 Caractristiques des threads.............................................................................................. 295 16.2.3 Accs aux lments existants et contexte HyperFileSQL ...................................................... 295 16.2.4 Limites des traitements raliss par le thread ..................................................................... 295 16.3 Grer les smaphores dans les threads .......................................................................296 16.3.1 Principe............................................................................................................................. 296 16.3.2 Mettre en place un smaphore........................................................................................... 296 16.3.3 Un smaphore limit : la section critique ............................................................................ 297 16.4 Grer les mutex dans les threads ................................................................................. 297 16.4.1 Principe............................................................................................................................. 297 16.4.2 Comment mettre en place un mutex ? ................................................................................ 298 16.4.3 Les fonctions de gestion des mutex .................................................................................... 298 16.5 Synchroniser des threads laide de signaux ..............................................................298 16.5.1 Gestion simple des signaux................................................................................................ 298 16.5.2 Gestion avance des signaux .............................................................................................299 16.6 Grer louverture dune fentre WinDev dans un thread secondaire ..........................299 16.6.1 Ouverture d'une fentre partir d'un thread secondaire..................................................... 300 16.6.2 Exemple ............................................................................................................................ 300 16.7 Fonctions de gestions des threads .................................................................................301 17. SOAP 302 17.1 Prsentation ...................................................................................................................302 17.1.1 WinDev / WebDev et le protocole SOAP.............................................................................. 302 17.1.2 Exemple ............................................................................................................................ 302 17.2 Excuter des procdures sur un serveur SOAP .............................................................302 17.2.1 Principe d'utilisation.......................................................................................................... 302 17.2.2 La structure SOAP.............................................................................................................. 303 17.3 Crer et installer une application serveur SOAP WinDev .............................................303 17.3.1 Principe............................................................................................................................. 303 17.3.2 Comment crer une application Serveur SOAP.................................................................... 304 17.4 Fonctions SOAP .............................................................................................................305 WLangage.book Page 19 Mardi, 23. avril 2013 1:59 13 20 Sommaire 18. WEBSERVICES XML 306 18.1 Importer des Webservices XML .....................................................................................306 18.1.1 Prsentation ......................................................................................................................306 18.1.2 Importer un Webservice dans un projet ...............................................................................306 18.1.3 Mettre jour la description d'un Webservice.......................................................................306 18.1.4 Proprits d'un Webservice................................................................................................306 18.1.5 Utiliser un Webservice import dans le projet ......................................................................307 18.1.6 Distribuer une application WinDev qui utilise un Webservice................................................308 18.2 Gnrer un service Web XML .......................................................................................308 18.2.1 Prsentation ......................................................................................................................308 18.2.2 Comment mettre disposition un Webservice ?..................................................................309 18.2.3 Gnrer un Webservice.......................................................................................................309 18.2.4 Dployer un Webservice.....................................................................................................310 19. XML 312 19.1 Gestion des documents XML ......................................................................................... 312 19.1.1 Prsentation ......................................................................................................................312 19.1.2 Dfinition...........................................................................................................................312 19.1.3 Principe dutilisation...........................................................................................................312 19.1.4 Utilisation d'une variable de type chane ............................................................................312 19.1.5 Utilisation d'une variable de type xmlDocument..................................................................313 19.2 Gestion du XSD ............................................................................................................. 313 19.2.1 Prsentation ......................................................................................................................313 19.2.2 Importer un fichier XSD dans un projet ................................................................................314 19.2.3 Utiliser une description importe dans le projet...................................................................314 19.3 Fonctions de gestion des documents XML ................................................................... 314 20. ASSEMBLAGES .NET 316 20.1 Prsentation .................................................................................................................. 316 20.1.1 Dfinition...........................................................................................................................316 20.1.2 WinDev et .NET...................................................................................................................316 20.2 Conditions ncessaires la manipulation dun assemblage .NET .............................. 316 20.2.1 Installer le Framework .NET.................................................................................................316 20.2.2 Rgler le niveau de scurit .NET ........................................................................................316 20.2.3 Rendre accessibles les DLLs ncessaires lexcution de lassemblage .NET .......................317 20.3 Crer un assemblage .NET depuis WinDev ..................................................................317 20.4 Crer un assemblage .NET accessible par COM ......................................................... 318 20.4.1 Prsentation ......................................................................................................................318 20.4.2 Crer un assemblage .NET accessible par COM partir d'un projet WinDev..........................318 20.5 Crer le programme dinstallation dun assemblage .NET .......................................... 318 20.6 Utiliser des assemblages .NET dans une application WinDev ..................................... 319 WLangage.book Page 20 Mardi, 23. avril 2013 1:59 13 Sommaire 21 PARTIE 7 : GESTION DES FICHIERS DE DONNES 1. LA GESTION DES FICHIERS DE DONNES 323 1.1 La gestion des fichiers de donnes HyperFileSQL ...........................................................323 1.1.1 Cration d'un fichier de donnes.......................................................................................... 323 1.1.2 Ouverture et fermeture des fichiers de donnes..................................................................... 323 1.1.3 Gestion des fichiers de donnes HyperFileSQL de plus de 2 Go ............................................. 324 1.1.4 Gestion des cls .................................................................................................................. 324 1.1.5 Gestion des cls composes................................................................................................ 326 1.1.6 Accs aux enregistrements des fichiers de donnes .............................................................. 328 1.1.7 Schmas : le mode fiche et le mode table............................................................................. 333 1.1.8 Dplacement et positionnement dans un fichier de donnes................................................. 333 1.2 Les fichiers de donnes au format xBase FoxPro ...........................................................334 1.2.1 Prsentation........................................................................................................................ 334 1.2.2 Utilisation de lAccs Natif xBase / FoxPro ............................................................................ 334 1.2.3 Importation de la structure des fichiers .................................................................................334 1.2.4 Points importants de programmation.................................................................................... 335 1.3 Les fichiers de donnes prsents sur un mobile (Pocket PC, iOS, Android) ...................336 1.3.1 Manipulation dune base de donnes HyperFileSQL.............................................................. 336 1.4 Fichiers de donnes spcifiques Windows Mobile ......................................................336 1.4.1 Manipulation d'une base de donnes CEDB (Pocket PC uniquement) ................................... 336 1.4.2 Fonctions de manipulation d'une base de donnes CEDB..................................................... 338 2. FONCTIONNALITS AVANCES 339 2.1 Gestion d'alias ................................................................................................................339 2.1.1 Plusieurs fichiers physiques avec une description logique identique...................................... 339 2.1.2 Plusieurs fichiers logiques relis un seul fichier physique.................................................... 340 2.1.3 Fonctions de gestion des alias.............................................................................................. 340 2.1.4 Crer un alias sur quoi ?....................................................................................................... 340 2.1.5 Caractristiques d'un alias .................................................................................................. 340 2.1.6 Manipuler le fichier alias et ses rubriques ............................................................................. 340 2.2 Gestion du NULL dans HyperFileSQL ..............................................................................341 2.2.1 Comment grer la valeur nulle dans une de vos rubriques ?................................................... 341 2.2.2 Comment utiliser la valeur NULL dans vos applications ? ...................................................... 341 2.3 Protection et cryptage des fichiers de donnes .............................................................342 2.3.1 Les possibilits de protection ............................................................................................... 342 2.3.2 Gestion des fichiers crypts.................................................................................................. 342 2.4 Gestion d'un identifiant .................................................................................................. 343 2.4.1 Gestion automatique ........................................................................................................... 343 2.4.2 Gestion manuelle................................................................................................................. 343 2.4.3 Test de l'unicit d'une cl.................................................................................................... 343 2.5 Contrle automatique de l'intgrit rfrentielle ...........................................................343 2.5.1 Intrt du test de l'intgrit rfrentielle ............................................................................... 343 2.5.2 Dfinitions........................................................................................................................... 344 2.5.3 Les diffrents types de liaisons............................................................................................. 344 2.5.4 Programmation du contrle automatique de l'intgrit rfrentielle....................................... 344 WLangage.book Page 21 Mardi, 23. avril 2013 1:59 13 22 Sommaire 2.6 Gestion des fichiers "mmo" .........................................................................................346 2.6.1 Mmo texte et mmo binaire ................................................................................................346 2.6.2 Mmos binaires image, son, OLE et autres ............................................................................346 2.7 Rassignation des fichiers de donnes ..........................................................................347 2.7.1 Intrt..................................................................................................................................347 2.7.2 Modification du rpertoire de stockage .................................................................................347 2.7.3 Modification du nom d'un fichier de donnes .......................................................................348 2.7.4 Garder la trace des rassignations ........................................................................................348 2.8 Recherche et index full-text ...........................................................................................350 2.8.1 Prsentation ........................................................................................................................350 2.8.2 Comment faire une recherche "full-text" ?............................................................................350 2.8.3 Comment crer un index full-text ?........................................................................................350 2.8.4 Comment effectuer une recherche full-text ? .........................................................................351 2.8.5 Analyser le rsultat d'une requte "full-text"........................................................................352 2.8.6 Grer les index full-text par programmation ...........................................................................352 2.9 Les transactions ..............................................................................................................353 2.9.1 Quest ce quune transaction ?..............................................................................................353 2.9.2 Savoir utiliser les transactions selon ses besoins...................................................................353 2.9.3 Principes..............................................................................................................................354 2.9.4 Manipuler les transactions par programmation......................................................................354 2.9.5 Gestion des cas particuliers..................................................................................................355 2.9.6 Gestion avance ..................................................................................................................356 2.10 Les journaux ..................................................................................................................356 2.10.1 Gnralits........................................................................................................................356 2.10.2 Mettre en place la journalisation.........................................................................................358 2.10.3 Fichiers crs lors de la mise en place de la journalisation...................................................358 2.10.4 WDJournal : Utilitaire de gestion des journaux .....................................................................359 2.10.5 Manipuler les journaux par programmation .........................................................................359 2.11 Modification automatique des fichiers de donnes ......................................................360 2.11.1 Principe.............................................................................................................................360 2.11.2 Dans quels cas la modification automatique des donnes est-elle ncessaire ? ..................360 2.11.3 Raliser la modification automatique des donnes .............................................................361 2.11.4 Notes ................................................................................................................................361 2.12 Cration de fichiers dynamiques (ou temporaires) .......................................................362 2.13 Rcupration de la structure des fichiers HyperFileSQL d'une analyse .......................362 2.14 Acclrer les traitements et optimiser une application / un site ..................................363 2.14.1 Gestion des transactions....................................................................................................363 2.14.2 Gestion du journal..............................................................................................................363 2.14.3 Gestion des mmos ...........................................................................................................363 2.14.4 Gestion du ".REP".............................................................................................................363 2.14.5 Gestion de la rplication.....................................................................................................363 2.14.6 La gestion des triggers........................................................................................................363 2.14.7 La gestion du RPC..............................................................................................................363 2.15 Driver ODBC sur HyperFileSQL ......................................................................................364 2.15.1 Prsentation ......................................................................................................................364 2.15.2 Configuration.....................................................................................................................364 WLangage.book Page 22 Mardi, 23. avril 2013 1:59 13 Sommaire 23 2.16 ODBC sur HyperFileSQL via J++ et JDBC ......................................................................364 2.16.1 Prsentation...................................................................................................................... 364 2.16.2 Installation........................................................................................................................ 364 2.16.3 Configuration..................................................................................................................... 364 2.16.4 Utilisation.......................................................................................................................... 365 2.17 Provider OLE DB pour HyperFileSQL .............................................................................365 2.17.1 Prsentation...................................................................................................................... 365 2.17.2 Installation........................................................................................................................ 365 2.17.3 Configuration..................................................................................................................... 366 3. LANGAGE SQL 367 3.1 Prsentation .................................................................................................................... 367 3.2 Langage SQL et HyperFileSQL ........................................................................................ 367 3.2.1 Prsentation........................................................................................................................ 367 3.2.2 Commandes SQL utilisables avec HyperFileSQL.................................................................... 367 3.2.3 Fonctions d'excution de requtes....................................................................................... 368 3.3 Langage SQL et autres bases de donnes ....................................................................369 3.3.1 Prsentation........................................................................................................................ 369 3.3.2 Requte cre dans lditeur de requtes ............................................................................. 369 3.3.3 Requte cre par programmation ....................................................................................... 369 4. GESTION DES BLOCAGES DE FICHIERS 371 4.1 Prsentation des blocages ...............................................................................................371 4.1.1 Blocages de fichiers............................................................................................................. 371 4.1.2 Qu'est ce qu'un blocage ?................................................................................................... 371 4.1.3 Quand faut-il bloquer et que faut-il bloquer ?........................................................................ 371 4.1.4 Le WLangage et les blocages................................................................................................ 371 4.2 La gestion des blocages ................................................................................................. 372 4.2.1 Exemples illustrant la ncessit de bloquer........................................................................... 372 4.2.2 Structure des blocages ........................................................................................................ 372 4.2.3 Dead lock (inter-blocage) .................................................................................................... 372 4.3 Les modes de blocage proposs ................................................................................... 373 4.3.1 Mode Mono......................................................................................................................... 373 4.3.2 Mode Multi .......................................................................................................................... 375 4.3.3 Les blocages possibles en mode multi.................................................................................. 376 4.4 Gestion assiste des erreurs HyperFileSQL .................................................................... 376 4.4.1 Principe............................................................................................................................... 376 4.4.2 Fonctionnement standard.................................................................................................... 377 4.4.3 Personnalisation.................................................................................................................. 379 4.4.4 Dbrancher la gestion assiste (WinDev et WebDev)............................................................. 380 5. LES VUES HYPERFILESQL 381 5.1 Prsentation des vues HyperFileSQL ...............................................................................381 5.2 Intrts des vues .............................................................................................................381 5.3 Manipulation des vues ....................................................................................................381 WLangage.book Page 23 Mardi, 23. avril 2013 1:59 13 24 Sommaire 5.4 Cration de vues HyperFileSQL ......................................................................................382 5.4.1 Choix des rubriques d'une vue..............................................................................................382 5.4.2 Choix de la rubrique de tri initial de la vue .............................................................................383 5.4.3 Slection des enregistrements de la vue ...............................................................................383 5.4.4 Oprations ensemblistes entre plusieurs vues.......................................................................383 6. LES TRIGGERS HYPERFILESQL 385 6.1 Prsentation ....................................................................................................................385 6.1.1 Dfinition.............................................................................................................................385 6.1.2 Intrt des triggers ...............................................................................................................385 6.2 Comment crer et manipuler des triggers ? ..................................................................385 6.2.1 Fonctions de manipulation des triggers.................................................................................385 6.2.2 Manipuler des triggers..........................................................................................................386 7. LA RPLICATION DE DONNES 387 7.1 Prsentation de la rplication .........................................................................................387 7.1.1 Prsentation ........................................................................................................................387 7.1.2 Vocabulaire spcifique la rplication..................................................................................387 7.1.3 Remarque............................................................................................................................387 7.2 Mettre en place la rplication universelle ......................................................................388 7.2.1 Activation ............................................................................................................................388 7.2.2 Dclaration de la base matre...............................................................................................388 7.2.3 Dclaration des bases abonnes..........................................................................................388 7.3 Rplication entre des bases htrognes ......................................................................388 7.4 Limitations ......................................................................................................................389 8. GESTION DE FICHIERS EN "BACK OFFICE" 390 8.1 Prsentation ....................................................................................................................390 8.2 La mise jour par email ................................................................................................390 8.3 Laccs distant sur Hyper File .........................................................................................390 8.3.1 Dfinition.............................................................................................................................390 8.3.2 Dtail des trois modes dutilisation .......................................................................................390 8.4 La rplication de donnes .............................................................................................. 391 8.4.1 Prsentation ........................................................................................................................391 8.4.2 Mise en place de la rplication .............................................................................................391 9. ACCS AUX BASES TIERCES 392 9.1 Prsentation ....................................................................................................................392 9.2 Particularits ...................................................................................................................392 9.3 Fonctions de gestion des bases de donnes tierces ......................................................392 10. FONCTIONS HYPERFILESQL 393 11. PROPRITS HYPERFILESQL 400 WLangage.book Page 24 Mardi, 23. avril 2013 1:59 13 Sommaire 25 12. FONCTIONS SQL 405 12.1 Dtail des fonctions .......................................................................................................406 12.1.1 ELT.................................................................................................................................... 406 12.1.2 EXTRACTVALUE.................................................................................................................. 406 12.1.3 LEFT .................................................................................................................................. 406 12.1.4 RIGHT ............................................................................................................................... 406 12.1.5 SPLIT_PART ....................................................................................................................... 406 12.1.6 MID, SUBSTR et SUBSTRING.............................................................................................. 407 12.1.7 LRIM ................................................................................................................................. 407 12.1.8 RTRIM ............................................................................................................................... 408 12.1.9 TRIM.................................................................................................................................. 408 12.1.10 REPLACE......................................................................................................................... 408 12.1.11 REVERSE......................................................................................................................... 409 12.1.12 TRANSLATE ..................................................................................................................... 409 12.1.13 CONCAT .......................................................................................................................... 409 12.1.14 STRING_AGG .................................................................................................................. 409 12.1.15 LPAD............................................................................................................................... 409 12.1.16 REPEAT ........................................................................................................................... 409 12.1.17 RPAD .............................................................................................................................. 409 12.1.18 SPACE............................................................................................................................. 410 12.1.19 LOWER............................................................................................................................ 410 12.1.20 LCASE............................................................................................................................. 410 12.1.21 UCASE ............................................................................................................................ 410 12.1.22 UPPER ............................................................................................................................ 410 12.1.23 LEN et LENGTH ................................................................................................................ 410 12.1.24 INSTR.............................................................................................................................. 410 12.1.25 FIELD .............................................................................................................................. 411 12.1.26 PATINDEX........................................................................................................................ 411 12.1.27 POSITION........................................................................................................................ 411 12.1.28 COUNT ............................................................................................................................ 411 12.1.29 AVG ................................................................................................................................ 411 12.1.30 MAX ................................................................................................................................ 412 12.1.31 MIN................................................................................................................................. 412 12.1.32 SUM................................................................................................................................ 412 12.1.33 BOTTOM.......................................................................................................................... 412 12.1.34 TOP................................................................................................................................. 412 12.1.35 ASCII............................................................................................................................... 413 12.1.36 SOUNDEX, SOUNDEX LIKE ............................................................................................... 413 12.1.37 SOUNDEX2, SOUNDEX2 LIKE........................................................................................... 413 12.1.38 ADD_MONTHS ................................................................................................................ 413 12.1.39 LAST_DAY ....................................................................................................................... 413 12.1.40 MONTHS_BETWEEN ........................................................................................................ 413 12.1.41 NEW_TIME ...................................................................................................................... 413 12.1.42 NEXT_DAY ....................................................................................................................... 414 12.1.43 ROUND ........................................................................................................................... 414 12.1.44 SYSDATE......................................................................................................................... 414 12.1.45 TRUNC ............................................................................................................................ 414 12.1.46 COALESCE ...................................................................................................................... 414 12.1.47 GREATEST ....................................................................................................................... 414 WLangage.book Page 25 Mardi, 23. avril 2013 1:59 13 26 Sommaire 12.1.48 LEAST..............................................................................................................................414 12.1.49 NVL, IF_NULL, IS_NULL....................................................................................................414 12.1.50 DECODE ..........................................................................................................................414 12.1.51 CASE...............................................................................................................................414 12.1.52 MATCH AGAINST ..............................................................................................................415 12.1.53 MD5................................................................................................................................416 12.1.54 SHA et SHA1....................................................................................................................416 13. HYPERFILESQL CLIENT/SERVEUR 417 13.1 Prsentation ....................................................................................................................417 13.2 Mettre en place une application Client/Serveur ............................................................417 14. FONCTIONS HYPERFILESQL CLIENT/SERVEUR 418 WLangage.book Page 26 Mardi, 23. avril 2013 1:59 13 PARTIE 1 Editeur de code WLangage.book Page 27 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 28 Mardi, 23. avril 2013 1:59 13 Partie 1 : Editeur de code 29 1. PRSENTATION WinDev, WebDev et WinDev Mobile sont des outils complets qui permettent, d'une part de crer des projets, et d'autre part de grer les lments crs avec le langage de WinDev, WebDev et WinDev Mobile : le WLangage. Le WLangage est un langage de type L5G intgr. Avec les fonctions du WLangage, vous pouvez crer des traitements pour chaque projet, fentre, page et champ. Ces traitements sont saisis sous un diteur de sources spcialis (appel galement diteur de code). Cet diteur est accessible directement depuis WinDev, WebDev ou WinDev Mobile. Il per- met d'accder tout moment tous les traite- ments d'un objet. 1.1 Lditeur de code Lditeur de code permet de saisir tous les traite- ments en WLangage (le langage de programmation intgr WinDev, WebDev et WinDev Mobile). Il per- met par exemple de saisir le code source : des champs, des fentres, des pages, des tats des procdures locales et globales, des classes et des mthodes, ... WLangage.book Page 29 Mardi, 23. avril 2013 1:59 13 30 Partie 1 : Editeur de code Les diffrents traitements affichs sous lditeur de code sont spars par un bandeau horizontal contenant lintitul du code. Le code WLangage correspondant doit tre saisi sous le bandeau. Un menu de type Ruban Les diffrentes options de lditeur de code sont regroupes dans un menu sous forme de ruban. 1. Bouton WinDev/WebDev/WinDev Mobile (en haut gauche). Ce bouton permet dafficher le "A propos" du produit en cours. 2. Affichage des barres doutils des versions prcdentes (mode compatible). 3. Affichage des menus droulants des versions prcdentes (mode compatible). 4. Boutons daccs rapide. Ces boutons correspondent aux options les plus utilises : Nouveau, Ouvrir, Sauver, Go de projet, Go de fentre ou de page, ... 5. Volets du ruban. Ces volets permettent daccder aux diffrentes options. Plusieus types de volets sont visibles : le volet "en cours". Le nom du volet est affich avec un trait orange. les volets contextuels spcifiques llment en cours (le nom du volet est en orange) les volets disponibles (nom du volet en blanc). 6. Groupe doptions. Un groupe rassemble les diffrentes options du ruban par thme. 7. Bouton de regroupement. Bouton situ lextrmit dun groupe permettant deffectuer une action spcifique (affichage des options de llment en cours, affichage de laide, ...). 8. Options du ruban. Plusieurs types doptions sont disponibles dans le ruban : Boutons cliquer Options cocher. Bouton flche permettant de drouler des options. 2 types de boutons flche sont disponibles : - les boutons flche permettant uniquement de drouler un menu. - les boutons flche permettant soit de drouler un menu (clic sur la fl- che), soit deffectuer une action par dfaut (clic sur licne du bouton). WLangage.book Page 30 Mardi, 23. avril 2013 1:59 13 Partie 1 : Editeur de code 31 1.2 Fonctionnalits lies la saisie du code Ce paragraphe dtaille quelques fonctionnalits intressantes de lditeur de code. Pour plus de dtails, consultez laide en ligne. 1.2.1 Mise en couleur du code Le code source saisi est automatiquement mis en couleur pour faciliter la lisibilit des traitements. Pour modifier les couleurs et les polices, utilisez longlet "Coloration" des options de lditeur de code. Pour afficher les options de lditeur de code, sous le volet "Accueil", dans le groupe "Environne- ment", droulez "Options" puis slectionnez "Options de lditeur de code". 1.2.2 Compltion automatique La compltion automatique permet une saisie assiste du code WLangage de vos applications. Cette compltion est disponible sur les ordres du WLangage, les procdures, les variables, les fichiers de donnes, les rubriques de fichiers de donnes, les fentres, les champs, le type des variables, ... Cette compltion limine le risque d'erreurs de frappe et fait gagner normment de temps : inu- tile de rechercher le nom exact d'une variable glo- bale ou d'un champ, il est automatiquement propos ! La compltion automatique permet de : complter la saisie en cours en proposant une liste intelligente des diffrentes valeurs (nom de fonction, nom de proprit, ...) possibles. Toutes les valeurs proposes dans la liste contiennent le mot actuellement saisi. A chaque modification saisie, le contenu de la liste est mis jour. Par exemple, lors de la saisie des caractres "OKA", l'ensemble des fonctions, champs, ... con- tenant ces caractres est propos. proposer uniquement la valeur des paramtres possibles selon la fonction du WLangage utilise. Par exemple, lors de l'utilisation de la fonction HLit, le premier paramtre attendu correspond un nom de fichier de donnes. La compltion automatique proposera uniquement les fichiers de donnes de l'analyse associe au projet en cours. slectionner les combinaisons de constantes pour un paramtre. Il suffit de slectionner les options voulues (avec les touches flches) et de valider les options choisies avec la touche ESPACE. L'ensemble des options slectionnes est auto- matiquement intgr dans le code lors de la vali- dation (touche ENTREE). lancer les assistants de code. Ces assistants per- mettent de saisir les diffrents paramtres de la fonction l'aide de questions simples. L'option <Assistant> signale la prsence d'un assistant. Pour lancer l'assistant, slectionnez l'option <Assistant>. lancer les ressources existantes sur la fonction utilise : exemple livr, article LST, brique de code, ... Pour lancer une ressource, il suffit de la slec- tionner. 1.2.3 Assistant de code De nombreuses fonctions du WLangage possdent des assistants de code. Ces assistants permettent de simplifier l'criture des diffrents paramtres de la fonction. Il suffit de suivre les instructions don- nes par les diffrents crans de l'assistant pour obtenir la syntaxe correspondante. Lutilisation de ces assistants de code nest bien entendu pas obli- gatoire. Pour chaque fonction possdant un assistant, une liste souvre lors de la saisie du nom de la fonction. Il suffit de slectionner loption <Assistant> dans cette liste pour lancer l'assistant de code corres- pondant. 1.2.4 Aide la saisie des fonctions Pour simplifier la saisie des fonctions WLangage sous l'diteur de code, le mcanisme d'aide la saisie suivant est propos : Une visualisation de la syntaxe en cours de sai- sie grce diffrentes bulles. Cette aide appa- rat lorsque le nom de la fonction est entirement saisi. Si diffrentes syntaxes sont disponibles pour la fonction en cours, des flches apparais- sent dans les diffrentes bulles. Pour modifier la syntaxe active, utilisez les tou- ches [Alt] + [Flche droite] ou [Alt] + [Flche gau- che]. Une bulle d'aide affiche la description du para- mtre en cours (bulle d'aide des paramtres). Cette bulle d'aide apparat : - lorsque le curseur de la souris est situ la position d'un paramtre saisir (le curseur de la souris survole la syntaxe sous forme de bulle). - si la combinaison de touches [Alt + F1] est utili- se sur un paramtre dj saisi. WLangage.book Page 31 Mardi, 23. avril 2013 1:59 13 32 Partie 1 : Editeur de code Une bulle d'aide affiche la description du rsul- tat (bulle d'aide du rsultat). Cette bulle d'aide apparat : - lorsque le curseur de la souris est situ sur le nom de la fonction (lors de la saisie d'une nou- velle fonction). - si la combinaison de touches [Alt + F1] est utili- se sur le nom d'une fonction dj saisi. 1.2.5 Aide Laide est directement accessible depuis lditeur de code par la touche [F1]. Si une fonction est slectionne, laide correspondante est affiche. Il est possible de raliser des "copier-coller" de l'aide vers le programme. Cette aide est disponible : sur Internet : les pages daide de la version en cours de commercialisation sont rgulirement mises jour. Vous bnficiez des commentaires de la communaut des dveloppeurs WinDev, WebDev, WinDev Mobile. en local : une mise jour de laide est disponible chaque nouvelle version ou mise jour du pro- duit. 1.2.6 Historique du code La gestion de lhistorique permet de : conserver le code complet de chaque traitement modifi. de restaurer un code existant une date donne, et effac ou modifi par la suite. Pour grer lhistorique du code de votre projet : 1. Affichez les options de lditeur de code : sous le volet "Accueil", dans le groupe "Environnement", droulez "Options" et slectionnez "Options de ldi- teur de code". 2. Dans longlet "Code", cochez loption "Sauver lhistorique des modifications du code". Cette gestion de lhistorique cre un sous-rper- toire "Historique" dans le rpertoire du projet. Ce rpertoire contient les sous-rpertoires suivants : WDP : historique des traitements du projet WDW: historique des traitements des fentres WDC : historique des modifications des classes WDE : historique des traitements des tats WDR : historique des traitements des requtes WDG : historique des traitements des collections de procdures ... Dans chaque sous-rpertoire, des fichiers ".FIC", ".NDX" et ".MMO" correspondants au nom des fen- tres, du projet, ... contiennent l'historique. Ces fichiers peuvent au bout d'un certain temps occu- per une taille non ngligeable. Ils peuvent tre : supprims directement dans lexplorateur de Windows. purgs. Pour cela, sous le volet "Code", dans le groupe "Autres actions", droulez "Historique" et slectionnez loption "Purger lhistorique". Attention : Si vous supprimez ou purgez ces fichiers, lhistorique du code ne pourra plus tre affich. 1.2.7 Vrification du code Le code est vrifi en temps rel. Les erreurs et les warnings sont immdiatement souligns lors de la frappe. Le volet "Erreurs de compilation" permet didenti- fier le type de problme rencontr. Plusieurs types de messages peuvent tre affichs dans ce volet : les warnings, affichs en orange, alertent des ris- ques dincohrence dans le code. Ces "warnings" ne bloquent pas lexcution du traitement. les erreurs, affiches en rouge, signalent les erreurs dans le code. Ces "erreurs" bloquent lexcution du traitement. les informations, affiches en noir, expliquent les choix du compilateur ou prsentent dventuels conseils pour amliorer le code. les erreurs de compilation d'IHM, affiches en rouge, informent chaque sauvegarde de fen- tre, de page ou chaque recompilation du projet des problmes potentiels dtects sur les interfa- ces. 1.2.8 Indentation automatique Lors de la saisie dinstructions composes (telles que "Selon", "Pour" et "Tantque" par exemple), le code est automatiquement indent afin de mettre en relief les diffrentes boucles utilises dans le programme. Ds la saisie de la premire instruction, le mot "FIN" est automatiquement insr, et le curseur est positionn dans linstruction compose. Pour effectuer lindentation automatique dun code (copie dun code par exemple), sous le volet "Code", dans le groupe "Edition", cliquez sur loption "Rin- dentation auto.". WLangage.book Page 32 Mardi, 23. avril 2013 1:59 13 Partie 1 : Editeur de code 33 1.2.9 Traduction des messages Lors de la ralisation dune application multilingue, WinDev offre la possibilit de saisir la traduction des diffrents messages afficher. La fentre de saisie des messages traduits peut tre appele directement dans tous les messages traduire. Il suffit : dutiliser la combinaison de touches [CTRL]+[T] sous le volet "Code", dans le groupe "Langues", de drouler loption "Traduire les chanes" et de slectionner loption "Traduction des messages". Chaque message traduit correspond alors une "ressource". Il est possible dutiliser une mme "ressource" plusieurs fois, dans des traitements dif- frents. Une icne et un chiffre apparaissent droite du message traduit. Le chiffre indique le nombre de traductions saisies pour le message en cours. Remarque : Le dveloppement dapplications multi- lingues est dtaill dans laide en ligne. 1.2.10 Gestion des points darrt Lors du test de lapplication sous lditeur, les points darrt permettent de lancer automatique- ment le dbogueur partir dune ligne donne. Pour plus de dtails, consultez laide en ligne. 1.2.11 Insertion de traitements spcifiques Pour chaque lment dun projet, WinDev propose : des traitements par dfaut (initialisation dun champ, clic sur un bouton, ...). des traitements spcifiques (survol de la souris sur un champ, clic droit sur une fentre, ...). Ces traitements spcifiques sont affichs sous forme dicnes dans la fentre de code de llment. Pour insrer un traitement spcifique lutilisa- tion de la souris ou du clavier, cliquez sur une des icnes proposes. 1.2.12 Autres fonctionnalits Charte de programmation Une charte de programmation permet de prfixer automatiquement le nom de toutes les variables et de tous les lments du projet (fentre, champ d'un tat, classe, ...). Ce prfixage automatique permet de connatre et/ou de rechercher facilement un l- ment d'un type donn. Pour plus de dtails, consultez laide en ligne. Reprage du code modifi Les lignes de code modifies sont immdiatement identifies par la prsence de bandes colores devant les lignes de code. Seules les modifications de code ralises depuis l'ouverture de l'lment en cours sont prises en compte : les lignes de code prcdes d'une bande bleue ont t sauvegardes. les lignes de code prcdes d'une bande orange n'ont pas encore t sauvegardes. Lors de la fermeture de l'lment, les bandes colo- res disparaissent automatiquement. Correction du code saisi L'diteur de code met votre disposition plusieurs outils pour corriger le code saisi : le correcteur automatique des lments du projet : Lorsque le nom d'une variable ou d'un lment du projet n'est pas reconnu, le menu contextuel de l'diteur de code propose dsor- mais une liste des corrections possibles. Cette liste prsente le nom des variables et/ou des l- ments du projet pouvant correspondre. le correcteur d'orthographe pour les commentai- res et les chanes de caractres. Marques de positionnement Les marques de positionnement permettent de "marquer" des lignes de codes spcifiques. Ces marques permettent un parcours rapide du code d'une marque de positionnement une autre. Pour plus de dtails, consultez laide en ligne. WLangage.book Page 33 Mardi, 23. avril 2013 1:59 13 34 Partie 1 : Editeur de code WLangage.book Page 34 Mardi, 23. avril 2013 1:59 13 PARTIE 2 Syntaxe de base du WLangage WLangage.book Page 35 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 36 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 37 1. INTRODUCTION Le WLangage est un langage de type L5G intgr. Avec les fonctions du WLangage, vous pouvez crer des traitements pour chaque projet, fentre, page et champ. Ces traitements sont saisis sous un diteur de sources spcialis (appel galement diteur de code). Cet diteur est accessible directement depuis WinDev, WebDev ou WinDev Mobile. Il per- met d'accder tout moment tous les traite- ments d'un objet. 1.1 Quelques caractristiques du WLangage Les fonctions du WLangage peuvent s'crire indif- fremment en minuscules, majuscules ou une combinaison des deux. L'diteur de sources reconnat les deux. L'diteur de sources permet de visualiser avec des couleurs diffrentes les diffrents mots-cls du WLangage. Cette fonctionnalit est trs prati- que pour vrifier par exemple que vous n'avez pas fait d'erreurs dans la saisie des fonctions. Avec le WLangage, vous pourrez faire de la pro- grammation vnementielle sans mme avoir la grer. En effet, pour chaque objet cr avec WinDev, WebDev ou WinDev Mobile, il est possible d'asso- cier un ou plusieurs traitements qui s'excuteront sur laction d'un vnement donn. Vous navez rien grer, vous n'aurez qu' saisir chaque trai- tement. En WebDev, les traitements peuvent tre saisis : soit en code serveur : le traitement saisi sex- cutera sur le serveur. soit en code navigateur : le traitement saisi sexcutera sur le navigateur affich sur le poste de linternaute (le WLangage saisi en code navigateur est automatiquement traduit en JavaScript). Par exemple pour les champs de saisie, vous pouvez dfinir : un traitement qui s'excute lors de l'initialisa- tion du champ, un traitement qui s'excute lors de l'entre dans le champ, un traitement qui s'excute lors de la sortie du champ, un traitement qui s'excute lors de la sortie lors- que le champ est modifi, dautres traitements lis dautres vne- ments que vous pouvez rajouter directement dans lditeur de code. Le WLangage est constitu de mots-cls qui sont : des fonctions, des proprits, des constantes prdfinies, des instructions de dclaration de variables, des instructions de dclaration de fonctions et de procdures, des mots-cls, des variables d'tat, ... Le WLangage supporte le modle objet. Les fonctions du WLangage ont un nom qui per- met d'illustrer l'utilisation de la fonction. Tous les mots-cls du WLangage (fonctions, cons- tantes prdfinies, proprits ...) existent en anglais (amricain). Un dbogueur est disponible pour le WLangage. Il peut tre appel soit depuis le dbut du projet, soit par programmation soit en cours de test d'un lment (fentre, page, ...) ou d'un projet. WLangage.book Page 37 Mardi, 23. avril 2013 1:59 13 38 Partie 2 : Syntaxe de base du WLangage 1.2 La programmation en code serveur et navigateur Ce chapitre prsente la syntaxe du WLangage. Cha- que fonctionnalit du WLangage est : soit accessible en code serveur uniquement : la fonctionnalit sera excute par le serveur, soit accessible en code navigateur uniquement : la fonctionnalit sera excute par le navigateur sur le poste de linternaute, soit accessible en code navigateur et serveur. Remarques : Pour programmer en code serveur, le WLangage doit tre utilis. Pour programmer en code navigateur, vous pou- vez utiliser : soit le WLangage qui sera automatiquement traduit en JavaScript, soit directement le JavaScript. Dans lditeur de code, des bandeaux de cou- leurs diffrentes permettent de diffrencier le code serveur du code navigateur. Par dfaut, les couleurs utilises sont : jaune pour le code serveur, vert pour le code navigateur en WLangage, bleu pour le code navigateur en Java-Script. Il est possible dexcuter un traitement sur le ser- veur depuis un traitement ralis en code naviga- teur. Exemple : WB // Code navigateur de Modification // et sortie dune COMBO PageValide("", "BOUTON1") // Appelle le code serveur de clic sur // le bouton BOUTON1 WLangage.book Page 38 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 39 2. LES VARIABLES Le WLangage propose deux types de variables : les types simples, pouvant tre dclars directe- ment les types avancs, composs dune ou plusieurs variables de type simple. 2.1 Les types simples 2.1.1 Principe Une variable se dfinit par son nom et par son type. Le type de la variable dtermine les valeurs que la variable peut prendre, son encombrement mmoire et les oprations possibles. Rappel : Chaque type est identifi par un mot-cl du WLangage. Ces mots-cls sont des mots rser- vs. 2.1.2 Types de variables Les types "simples" du WLangage sont les suivants : Boolen : type conseill pour toutes les opra- tions logiques o seules deux alternatives sont possibles : Vrai (valeur diffrente de 0) Faux (valeur gale 0) Exemple : b est un boolen Entier : type conseill pour des calculs raliss sur des valeurs entires. Pour des calculs avancs, le WLangage propose diffrents types d'entiers. Exemple : b est un entier Montaire : type conseill pour des calculs rali- ss sur des valeurs relles ncessitant une prci- sion garantie des dcimales, comme par exemple des valeurs montaires. Un montaire gre 24 chiffres significatifs (17 maximum pour la partie entire, 6 maximum pour la partie dcimale). La prcision est assure sur 6 dcimales. Plus de dtails sur les montaires, consultez le paragraphe Le type montaire, page 41. Exemple : MaMonnaie est un montaire Numrique : type conseill pour des calculs rali- ss sur des valeurs relles ncessitant une prci- sion garantie des dcimales. Un numrique gre 38 chiffres significatifs (32 maximum pour la par- tie entire, 6 maximum pour la partie dcimale). Exemple : MaMonnaie est un numrique Rel : type conseill pour des calculs simples raliss sur des valeurs relles. Un rel gre 15 chiffres significatifs, par contre la prcision des dcimales n'est pas garantie. La prcision des dcimales n'est pas assure. Pour effectuer des calculs prcis, utilisez le type "Montaire". Pour des calculs avancs, le WLangage propose diffrents types de rels. Pour plus de dtails sur le type rel, consultez le paragraphe Le type rel, page 41. Exemple : TVA est un rel Chane : type conseill pour la gestion des carac- tres et des chanes de caractres. Avec ce type, il n'est pas ncessaire de dclarer la longueur de la chane. Celle-ci peut varier de faon libre lors de l'utilisation de la variable. Pour une gestion avance des chanes de carac- tres (essentiellement pour les API Windows), le WLangage propose diffrents types de chanes. Pour plus de dtails sur les chanes de caract- res, consultez le paragraphe Le type Chane, page 41 Buffer : type conseill pour crire un code porta- ble entre WinDev et WinDev Mobile. Date, Heure, DateHeure, Dure : types conseills pour la gestion des dates et des heures. Le type "Date" et le type "Heure" permettent de manipuler simplement les dates et les heures, et de grer de manire quasi automatique toutes les conversions. Plus de dtails, consultez le paragraphe Le type date, page 42, et le paragraphe Le type heure, page 43 Le type "DateHeure" permet de grer en une seule fois une date et une heure. Pour plus de dtails, consultez le paragraphe Le type Date- Heure, page 43. WLangage.book Page 39 Mardi, 23. avril 2013 1:59 13 40 Partie 2 : Syntaxe de base du WLangage Le type "Dure" permet de grer simplement les diffrences d'heures ou de dates. Plus de dtails, consultez le paragraphe Le type dure, page 43. Variant : type conseill pour stocker n'importe quel autre type simple du WLangage. Le type Variant est un type permettant de grer la valeur NULL. Plus de dtails sur les variants, con- sultez le paragraphe Le type variant, page 44. 2.1.3 Dclarer un type simple Dclarer une ou plusieurs variables <Nom variable> est un(e) <Type variable> ou <Nom variable 1>, <Nom variable 2> sont des <Type variables> Remarque : Les mots-cls un, une et des ne sont pas obligatoires : ce sont des mots d'agrment. Dclarer et initialiser une variable <Nom variable> est un(e) <Type variable> = <Valeur> OU <Nom variable> est un(e) <Type variable> <Nom variable> = <Valeur> Remarque : Lorsque plusieurs variables du mme type sont dclares et initialises sur la mme ligne, seule la dernire variable est initialise. Valeurs limites des types de donnes Si une variable est affecte avec une valeur dpas- sant les limites de son type : lors du test dune fentre, dune page ou dun projet, un message d'erreur est gnr. en excution du programme, aucun message derreur ne signale le dpassement de capacit. La valeur de la variable est fausse. Pour connatre les valeurs limites des diffrents types de donnes, consultez le fichier "Limites.WL" dans le rpertoire "Personnel\Externe" de WinDev / WebDev. Ce fichier peut tre ouvert sous n'importe quel diteur de texte. Pour simplifier vos tests, les valeurs limites des dif- frents types de donnes ont t associes des constantes dans le fichier "Limites.WL". Pour int- grer ces constantes dans votre application, utilisez la ligne de code suivante dans le code dinitialisa- tion du projet : Le fichier "Limites.WL" sera automatiquement recherch dans le rpertoire "Personnel\Externe" de WinDev / WebDev. Il n'est pas ncessaire de copier le fichier "Limites.WL" dans le rpertoire du projet. Limites : Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique (voir page 66) 2.1.4 Les diffrents types dentier Le WLangage propose diffrents types d'entiers : NomClient est une chane Compteur est un entier Prix est un rel i,j,k sont des entiers NomClient est une chane NomClient = "Dupond" Compteur est un entier = 7 i,j,k sont des entiers = 21 // Seul k est initialis 21 Externe "Limites.WL" Valeur comprise entre Entier -2 x 10 9 et 2 x 10 9 (envi- ron) Entier sur 1 octet -128 et 127 (incluses) Entier sur 2 octets -32.768 et 32.767 (inclu- ses) Entier sur 4 octets -2 x 10 9 et 2 x 10 9 (envi- ron) Entier sur 8 octets -9 x 10 18 et 9 x 10 18 (envi- ron) Entier sans signe 0 et 4 x 10 9 Octet 0 et 255 (incluses) Ce type est quivalent au type Entier sans signe sur 1 octet. Entier sans signe sur 1 octet 0 et 255 (incluses) Entier sans signe sur 2 octets 0 et 65.535 (incluses) Entier sans signe sur 4 octets 0 et 4 x 10 9 (environ) Entier sans signe sur 8 octets 0 et 18 x 10 18 Entier systme s'adapte automatique- ment la taille gre par le systme (4 octets en 32 bits, 8 octets en 64 bits) WLangage.book Page 40 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 41 Remarque : Tous les types avancs (diffrents du type "Entier") sont conseills pour l'utilisation des API Windows. Valeur par dfaut Une variable de type "Entier" dclare et non initia- lise est gale 0. 2.1.5 Le type montaire Un montaire est un rel cod sur 10 octets. Un montaire peut avoir jusqu' 23 chiffres significa- tifs (17 maximum pour la partie entire, 6 maxi- mum pour la partie dcimale) et peut prendre une valeur entre -604 462 909 807 314 587,353 087 et +604 462 909 807 314 587,353 087. Le type montaire est conseill pour viter les erreurs d'arrondi dues par le codage binaire des rels. Pour une plus grande prcision, il est possible duti- liser les numriques (38 chiffres significatifs). Pour les autres calculs, il est prfrable d'utiliser des rels, plus rapides. Valeur par dfaut Une variable de type "Montaire" dclare et non initialise est gale 0. Codage binaire des rels Les rels ont tous le mme nombre de chiffres significatifs (15). Si le rsultat d'un calcul sur des rels met en jeu plus de 15 chiffres significatifs, ce rsultat sera automatiquement arrondi 15 chiffres significatifs. La prcision du rsultat sera donc plus faible que pour un calcul ralis avec des montaires. Calculs sur les montaires Tous les calculs utilisant au moins un montaire seront effectus sous forme montaire. Pour garantir la prcision du rsultat, toutes les opran- des seront automatiquement converties en mon- taire. Langage externe Le type montaire n'est pas disponible en langage externe. 2.1.6 Le type numrique Le type numrique permet de contenir des nom- bres entiers ou dcimaux en prcisant si ncessaire : le nombre de chiffres de la partie entire. le nombre de chiffres de la partie entire et de la partie dcimale. Un numrique peut tre utilis : pour dclarer une variable simple, comme lment d'un tableau, comme lment d'une variable compose, comme lment d'une structure, comme lment d'une classe, Un variant peut contenir un numrique. 2.1.7 Le type rel Le WLangage propose deux types de rels : Rel (rel sur 8 octets) : Un rel peut avoir jusqu' 15 chiffres significatifs. La prcision des dcimales n'est pas assure. Pour effectuer des calculs prcis, utilisez le type "Montaire". Valeur minimale : 1.7*10 -308 , Valeur maximale : 1.7*10 +308 Rel sur 4 octets : Un rel sur 4 octets peut avoir jusqu' 6 chiffres significatifs. La prcision des dcimales n'est pas assure. Pour effectuer des calculs prcis, utilisez le type "Montaire". Valeur minimale : 3.4*10 -38 , Valeur maximale : 3.4*10 +38 . Valeur par dfaut Une variable de type "Rel" dclare et non initiali- se est gale 0. Codage binaire des rels Les rels ont tous le mme nombre de chiffres significatifs (15). Si le rsultat d'un calcul sur des rels met en jeu plus de 15 chiffres significatifs, ce rsultat sera automatiquement arrondi 15 chiffres significatifs. Pour obtenir une prcision plus importante, utilisez le type montaire. 2.1.8 Le type Chane Le WLangage propose diffrents types de chanes de caractres. Les types de chane les plus courants sont les sui- vants : Caractre : Caractre cod sur 1, 2 ou 4 octets selon le mode de gestion des chanes et la plate- forme d'excution. Chane Ansi : Chane de taille dynamique conte- nant uniquement des caractres au format ANSI. Chane Unicode : Chane de taille dynamique con- tenant uniquement des caractres au format UNICODE. Chane : Chane de taille dynamique. Le type "chane" est propre au WLangage. Avec ce type, il n'est pas ncessaire de dclarer la lon- gueur de la chane. Celle-ci peut varier de faon WLangage.book Page 41 Mardi, 23. avril 2013 1:59 13 42 Partie 2 : Syntaxe de base du WLangage libre lors de l'utilisation de la variable. Buffer : Zone mmoire binaire. Permet d'crire un code portable entre WinDev et WinDev Mobile en ce qui concerne la manipulation des donnes brutes. Pour plus de dtails, consultez Le type Buffer, page 42 Dautres types de chanes sont galement disponi- bles : Chane sur : Chane de taille fixe, termine par un 0 binaire (identique au langage C). La taille spcifie correspond au nombre maximum de caractres de la chane. Ce type de chane permet de crer un code com- patible WinDev / WinDev Mobile lors de lappel dAPI existantes sur les deux plate-formes. Chane ASCIIZ sur : Chane termine par un 0 binaire (identique au langage C). La longueur d'une chane ASCIIZ est limite environ 2 Go. La taille donner la chane ASCIIZ doit tre gale la taille de la chane plus 1 (pour le zro binaire). Type non disponible en WinDev Mobile. Chane fixe sur : Chane de taille fixe. La longueur d'une chane fixe est limite envi- ron 2 Go. La chane est complte avec : 0 si la variable nest pas encore affecte des espaces si ncessaire si la variable est affecte (elle est semblable au type "string" du Basic). Type non disponible en WinDev Mobile. Chane Pascal sur : Chane prcde d'un octet prcisant la longueur (identique au langage Pascal). Cet octet n'est pas accessible. Par exemple Chaine[1] reprsente le premier caractre de la chane et non pas sa lon- gueur. La longueur d'une chane Pascal est limite 255 caractres maximum. La taille donner la chane Pascal doit tre gale la taille de la chane. Type non disponible en WinDev Mobile. Chane UNICODE sur : Chane de taille fixe contenant uniquement des caractres au format UNICODE. Remarques : Le type "Chane sur" doit tre utilis pour envoyer des paramtres en entre / sortie une API Win- dows. Tous les types avancs (diffrents du type "Chane") sont disponibles pour compatibilit avec les autres langages de programmation (Turbo Pascal Windows, C, Visual Basic Windows, ...) et pour les API Windows. Valeur par dfaut Une variable de type "Chane" ou "Chane sur" dclare et non initialise correspond une chane vide (""). Une variable de type "Buffer" dclare et non ini- tialise est vide. Une variable de type "Buffer sur" dclare et non initialise est remplie avec des 0. Type de chane WinDev Mobile et WinDev ne proposent pas les mmes types de chane de caractres. Pour plus de dtails sur les diffrents types de chanes propo- ses, consultez laide en ligne. Passer une chane en paramtre une procdure Il est possible de passer une variable de type "Chane" en paramtre une procdure. Attention : Si la variable est de type "Chane Fixe", il faut supprimer les espaces. Par exemple : 2.1.9 Le type Buffer Le type Buffer correspond une zone mmoire binaire. Grce ce type, il est possible de raliser un code manipulant du binaire, portable entre une application WinDev et une application WinDev Mobile. Le type buffer ne gre pas de marqueur spcifique de fin, et permet de stocker des 0 binaires. Deux types de variables sont disponibles : Buffer : Ce type permet de manipuler une zone mmoire dont la taille est dynamique : elle s'adapte auto- matiquement au contenu du buffer. Buffer sur : Ce type permet de manipuler une zone mmoire dont la taille (en octets) est fixe la compilation. Ce type est un type avanc permettant de rali- ser certaines manipulations spcifiques en mmoire, d'utiliser certaines API windows. 2.1.10 Le type date Le type Date permet de manipuler simplement des dates. Ce type permet de grer de manire quasi MaChane est une chane fixe sur 30 MaChane = "WinDev est formidable" // Suppression des espaces MaChane = SansEspace(MaChane) ComptageLettre(MaChane) // ComptageLettre est une procdure WLangage.book Page 42 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 43 automatique les conversions (fonctions ChaneVer- sDate, DateVersChane, EntierVersDate, DateVer- sEntier, ...). Ce type peut tre utilis aussi bien : pour rcuprer puis manipuler des rubriques HyperFileSQL au format Date. pour rcuprer puis manipuler les champs de sai- sie de type Date. dans les fonctions du WLangage permettant de grer les dates. pour raliser des calculs sur les dates. Remarque : Plusieurs proprits peuvent tre utili- ses avec le type Date, pour ne rcuprer par exemple qu'une partie de la date. Valeur par dfaut Par dfaut, une variable de type Date est initialise avec la date du jour (date systme). Pour rgler la valeur par dfaut affecte aux variables de type Date, utilisez la fonction DateHeureParDfaut. Les proprits utilisables sur les dates Pour connatre les proprits utilisables sur les dates, consultez laide en ligne. Plage de dates Le type date permet de grer des dates comprises entre le 01/01/0001 et le 31/12/9999. 2.1.11 Le type heure Le type Heure permet de manipuler simplement des heures. Ce type permet de grer de manire quasi automatique les conversions (fonctions Heu- reVersChane, HeureVersEntier, ...) Ce type peut tre utilis aussi bien : pour rcuprer puis manipuler des rubriques HyperFileSQL au format Heure, pour rcuprer puis manipuler les champs de sai- sie de type Heure, dans les fonctions du WLangage permettant de grer les Heures, pour raliser des calculs sur les heures (diff- rence, addition, ...). Proprits utilisables sur les heures : Pour connatre les proprits utilisables sur les heures, consultez laide en ligne. Limites : Le type Heure permet de grer les heures compri- ses entre 00:00 et 23:59. La prcision est effec- tue la milliseconde. 2.1.12 Le type DateHeure Le type DateHeure permet de manipuler simple- ment en un seul objet une date et une heure. Le type DateHeure peut tre utilis par exemple pour raliser des calculs (diffrence, addition, ...) sur les dates, les heures et les dures. Proprits utilisables sur les variables de type DateHeure Pour connatre les proprits utilisables sur les variables de type DateHeure, consultez laide en ligne. Intervalle de donnes Le type DateHeure permet de grer des donnes comprises entre le 01/01/0001 00h00 et le 31/ 12/9999 23h59. 2.1.13 Le type dure Le type Dure permet de manipuler simplement des intervalles de dates et d'heures. Le type Dure peut tre utilis par exemple pour raliser des cal- DateDbut est une date = 1205 DateFin est une date = "20011231" // 31/12/2001 DateJour est une date = DateDuJour() DateDbut est une date = "20011201" DateDbut..Anne +=5 // Ajoute 5 ans // Modifie le mois DateDbut..Mois = 5 // Calcule la fin (30 jours aprs) DateFin = DateDbut DateFin..Mois++ DateFin..Jour-- HeureDbut est une heure="20011201" // Ajoute 5 heures HeureDbut..Heure +=5 // Modifie le nombre de minutes HeureDbut..Minutes = 5 DateDbut est une DateHeure DateDbut = "200112311524" // 31/12/2001 15h24 minutes DateDbut est une DateHeure DateDbut = "200112011530" DateDbut..Anne +=5 //Ajoute 5 ans // Modifie le mois DateDbut..Mois = 5 // Affiche la date Info("Date" + DateDbut..PartieDate) // Affiche l'heure Info("Heure "+ ... DateDbut..PartieHeure) WLangage.book Page 43 Mardi, 23. avril 2013 1:59 13 44 Partie 2 : Syntaxe de base du WLangage culs (diffrence, addition, ...). Proprits utilisables sur les dures Pour connatre les proprits utilisables sur les Dures, consultez laide en ligne. Valeurs gres Le type dure permet de grer des dures compri- ses entre plus et moins 2 milliards de jours. La pr- cision est la milliseconde. 2.1.14 Le type variant Le type Variant permet de : stocker n'importe quelle valeur de type simple : boolen, numrique, chane, date, heure, ... grer des interactions avec les objets ActiveX et la programmation OLE Automation manipuler la valeur NULL dans le WLangage Affectation d'un type Variant Une variable de type variant peut tre affecte avec : n'importe quelle valeur littrale le contenu d'une variable le contenu d'un champ de type simple le contenu d'une rubrique Type variant et NULL Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la cons- tante NULL. Remarque : pour un type variant, NULL signifie "Pas affect" pour un type numrique, NULL signifie "gal 0". Type d'un variant Il est possible de connatre le type d'un variant grce la proprit ..Type. La proprit ..Type per- met de connatre le type de la valeur stocke dans la variable. Remarques : la fonction VariantConvertit permet de convertir le type de la valeur stocke dans une variable de type Variant. la fonction TypeVar permet de connatre le type d'une variable (type Variant pour une variable Variant). 2.2 Oprations disponibles sur les dates, heures, dures, ... Les oprations suivantes sont disponibles sur les variables de type : Date, Heure, DateHeure et Dure : addition soustraction comparaison Pour plus de dtails, consultez laide en ligne. Remarque : Le WLangage dispose aussi de fonc- tions permettant de manipuler des dates et les heures (voir fonctions de gestion des dates et des heures dans laide en ligne). HeureDbut est une heure = "1330" HeureFin est une heure = "1730" DureCongrs est une Dure = ... HeureFin - HeureDbut nValeur est un variant = 10 nValeur = Saisie1 nValeur = Client.Nom vVal est un variant SI vVal = Null ALORS ... // renvoie Vrai car non affect vVal = 0 SI vVal = Null ALORS ... // renvoie Faux car variant affect // avec un entier de valeur 0 vVal = 5 SI vVal = Null ALORS ... // renvoie Faux car variant affect // avec un entier de valeur 5 nVal est un entier SI nVal = Null ALORS ... // le test renvoie Vrai car nVal=0 nVal = 5 SI nVal = Null ALORS ... // le test renvoie Faux car nVal=5 WLangage.book Page 44 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 45 2.3 La gestion du NULL Le mot-cl Null peut tre utilis de diffrentes manires en WLangage : pour indiquer qu'un paramtre ne doit pas tre pris en compte dans une requte pour spcifier qu'une variable de type variant ne contient pas de valeur pour comparer une valeur 0 dans certaines fonctions du WLangage, pour indi- quer que le paramtre ne doit pas tre pris en compte pour vrifier si un objet dynamique est allou ou non 2.3.1 Null et les requtes Ignorer des paramtres : Null dans la fonction HExcuteRequte Lors de l'excution d'une requte paramtre avec la fonction HExcuteRequte, tous les paramtres de la requte ne doivent pas obligatoirement tre prciss. Les conditions de la requte utilisant des paramtres non prciss ou ayant pour valeur Null seront ignores. Exemple : Soit la requte "ClientNomPrnom" dont le code SQL est le suivant : Cas n1 : Les 2 paramtres sont donns : excutera la requte : Cas n2 : Seul le nom est donn : excutera la requte : Cas n3 : Seul le prnom est donn : Ou excutera la requte : Paramtres d'une requte provenant d'un champ de saisie : Null si vide Pour que votre requte sexcute mme si aucune valeur nest saisie par lutilisateur, cochez loption "NULL si vide" des champs de saisie (onglet "Dtail" de la description du champ). Grce cette option, si le champ est vide, la valeur du paramtre renvoye la requte correspondra la constante NULL. Ainsi, lors de lexcution de la requte, aucune erreur nest gnre : la ou les conditions dpendant de ce paramtre sont simple- ment ignores. Par exemple, la requte "Ex1" correspond au code SQL suivant : La requte "Ex1" est excute dans le bouton "Btn_OK" par la fonction HExcuteRequte. Le code WLangage utilis est le suivant : Dans ce code, SAI_Saisie1 correspond au champ dans lequel l'utilisateur doit saisir le paramtre de la requte. Pour cet exemple, le tableau ci-dessous dcrit lutili- sation de loption "NULL si vide" : SELECT * FROM CLIENT WHERE NOM = {Param1} AND PRENOM = {Param2} HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond", "Jean") SELECT * FROM CLIENT WHERE NOM = 'Dupond' AND PRENOM = 'Jean' HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond") SELECT * FROM CLIENT WHERE NOM='Dupond' sNom est un Variant = Null // utilisation du variant // obligatoire // pour variable de type Null // (non renseigne) HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, sNom, "Jean") HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, Null, "Jean") SELECT * FROM CLIENT WHERE PRENOM='Jean' SELECT NomDesRubriques FROM NomDesFichiers WHERE Rubrique = {Param1} HExcuteRequte, (... Ex1,hRequteDfaut,SAI_Saisie1) Valeur saisie dans le champ SAI_Saisie1 "NULL si vide" pour le champ ChampSaisi e1 Code SQL excut Aucune valeur Option coche SELECT Nom- Rubriques FROM NomFichiers WLangage.book Page 45 Mardi, 23. avril 2013 1:59 13 46 Partie 2 : Syntaxe de base du WLangage 2.3.2 Null et les variants Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la cons- tante NULL. Remarques : pour un type variant, NULL signifie "Pas affect" pour un type numrique, NULL signifie "gal 0" (voir ci-dessous) 2.3.3 Null et les valeurs numriques Utilis avec des valeurs numriques, Null permet de comparer une valeur 0. Il est uniquement pos- sible d'utiliser les oprateurs de comparaison d'galit et de diffrence (oprateur = et oprateur <>). Remarques : pour un type variant, NULL signifie "Pas affect" (voir ci-dessus) pour un type numrique, NULL signifie "gal 0" 2.3.4 Null et les fonctions du WLangage Certaines fonctions du WLangage acceptent en paramtre Null pour spcifier que le paramtre ne prend aucune valeur. Quelques exemples : ArbreAjoute, ArbreInsre : Null permet de ne pas afficher d'images pour les diffrents niveaux des lments ajouts. ArbreListeFils : Null permet de lister les fils par- tir de la racine de l'arbre. ArbreModifie : Null permet de ne pas modifier l'image dfinie avec la fonction ArbreAjoute InitEcrit : Null permet de supprimer un mot-cl ou une section dans le fichier INI 2.3.5 Null et les objets dynamiques Pour tous les objets dynamiques (classe, structure, tableau, objet automation, ...), Null permet de savoir si l'objet est allou ou non. Par exemple : 2.4 Les constantes Les constantes sont des lments du langage dont la valeur est fixe une fois pour toutes. Cette valeur ne peut pas tre modifie au cours du programme. Remarque : Les mots-cls CONSTANT et CONS- TANTE sont accepts. Dans cette documentation, seul le mot-cl CONSTANT est utilis et peut tre remplac par CONSTANTE. Syntaxe : Dclarer une ou plusieurs constantes CONSTANT <Nom de la constante 1> = <Valeur 1> <Nom de la constante 2> = <Valeur 2> FIN Aucune valeur Option dco- che SELECT Nom- Rubriques FROM NomFichiers WHERE Rubrique =
Une valeur est
saisie Option coche ou dcoche SELECT Nom- Rubriques FROM NomFichiers WHERE Rubrique= ValeurSaisie vVal est un variant SI vVal = Null ALORS ... // renvoie Vrai car le variant n'est // pas pas affect vVal = 0 SI vVal = Null ALORS ... // renvoie Faux car le variant // est affect // avec un entier de valeur 0 vVal = 5 SI vVal = Null ALORS ... // renvoie Faux car le variant est // affect avec un entier de valeur 5 nVal est un entier SI nVal = Null ALORS ... // le test renvoie Vrai car nVal=0 nVal = 5 SI nVal = Null ALORS ... // le test renvoie Faux car nVal=5 // Dclaration d'un objet automation // dynamique MonObjetDynamique est un objet ... automation dynamique ... SI MonObjetDynamique = Null ALORS // Cration d'un objet automation // dynamique MonObjetDynamique = ... allouer un objet ... automation dynamique MonServeur FIN CONSTANT TauxTVA = 19.6 FIN WLangage.book Page 46 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 47 Les constantes doivent tre dclares dans : le code d'initialisation du projet pour tre utilisa- ble dans tous les traitements du projet (codes du projet, codes des fentres / des pages, codes des champs, procdures, ...). le code de dclaration des globales d'une fen- tre / dune page pour tre utilisable dans tous les traitements de la fentre / page (codes de la fentre / page, codes des champs prsents dans la fentre / page, procdures locales, ...). le code douverture d'un tat pour tre utilisable dans tous les traitements de l'tat (codes de l'tat, codes des champs prsents dans l'tat, procdures locales, ...). le code de dclaration de classe pour tre utilisa- ble dans la classe. Pour accder cette constante depuis une mthode de la classe, utilisez la syntaxe "::<Nom de la constante>". Pour accder cette constante depuis un code extrieur la classe, utilisez la syntaxe "<Nom de la classe>::<Nom de la constante>". Remarque : Une constante est toujours globale : soit un projet. soit une fentre / une page. soit un tat. soit une classe. Dclarer des constantes de mme nom Dans un mme traitement, il n'est pas possible de dclarer plusieurs lments (variables ou constan- tes) de mme nom. Dans un mme projet, si une constante et une variable portent le mme nom: la variable sera utilise dans le traitement dans lequel cette variable est dclare et dans tous les traitements lis. Par exemple, la variable est dclare dans le code de clic d'un bouton. Lors d'un clic sur ce bouton, cette variable est passe en paramtre une procdure locale. Cette varia- ble sera utilise dans cette procdure locale. la constante sera utilise dans tous les autres traitements. Si une constante "globale" au projet et une cons- tante "globale" une fentre portent le mme nom: la constante "globale" la fentre sera utilise dans tous les traitements de la fentre et de ses champs, ainsi que dans les procdures "locales" de la fentre. la constante "globale" au projet sera utilise dans tous les autres traitements. Dclarer un membre de type constante Il n'est pas possible de dclarer un membre de type constante dans : une structure. une variable compose. 2.5 Les types avancs 2.5.1 Tableau simple Un tableau est un type structur qui permet de regrouper une srie d'lments de mme type. Chaque lment du tableau est accessible directe- ment par son numro d'ordre. Un tableau peut tre redimensionn au cours du programme grce la fonction Dimension. Remarque : Le mot-cl Tableau permet de dfinir un tableau "simple". Dautres types de tableaux "avancs" sont disponibles : Tableau dynamique : Tableau allou la demande. Tableau fixe : Tableau de taille fixe (conseill pour les API Windows). Syntaxe Dclarer un tableau "simple" <Nom du tableau> est un tableau de <Dimension 1> [par <Dimension 2>]...[par <Dimension 10>] <Type des lments du tableau> Ou <Nom du tableau> est un tableau de <Dimension 1> [,<Dimension 2>]...[,<Dimension 10>] <Type des lments du tableau> TableauClient est un tableau ... de 5 par 7 par 3 entiers // quivalent : TableauClient est ... un tableau de 5,7,3 entiers // Redimensionner le tableau Dimension(TableauClient,7,9,4) WLangage.book Page 47 Mardi, 23. avril 2013 1:59 13 48 Partie 2 : Syntaxe de base du WLangage Faire rfrence un tableau "simple" Faire rfrence un lment d'un tableau une dimension : <Nom du tableau>[Indice1] Faire rfrence un lment d'un tableau deux dimensions : <Nom du tableau>[Indice1, Indice2] OU <Nom du tableau>[Indice1][Indice2] Faire rfrence un lment d'un tableau n dimensions : <Nom du tableau>[Indice1,...,IndiceN] OU <Nom du tableau>[Indice1]...[IndiceN] Passer un tableau en paramtre une procdure : <Nom de la procdure>(<Nom du tableau>) Remarque : Il n'est pas possible de manipuler un tableau dans sa totalit. Par exemple, il n'est pas possible d'affecter un tableau avec un autre tableau. Passer un tableau "simple" en paramtre une procdure Un tableau peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom du tableau>) Dimension d'un tableau "simple" La fonction Dimension permet de : connatre le nombre total d'lments dans un tableau. redimensionner un tableau. Attention : La fonction Dimension ne permet pas de modifier le nombre de dimensions d'un tableau. lments d'un tableau "simple" Un tableau peut tre constitu de classes unique- ment si ces classes possdent un constructeur sans paramtres (ou avec des paramtres faculta- tifs). Un tableau ne peut pas tre constitu : de variables composes. de tableaux. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. Fonctions du WLangage et Tableaux simples Plusieurs fonctions WLangage permettent de mani- puler des tableaux simples. Il est par exemple pos- sible d'effectuer des tris, des recherches, ... Pour plus de dtails, consultez laide en ligne. Tableaux dans les classes Lors de copies d'instances de classes, tous les membres de la classe sont recopis dans la nou- velle instance, sauf les tableaux. Ainsi, si la valeur d'un membre de type tableau est modifie, cette valeur est modifie dans toutes les instances. Pour obtenir des tableaux indpendants dans tou- tes les instances de classes, il est ncessaire de dclarer un tableau local de la manire suivante : 2.5.2 Tableau dynamique Un tableau dynamique est un type "avanc" de tableau : les dimensions de ce tableau sont alloues la demande, au cours du programme. Dans la plupart des cas, un tableau "simple" est suffisant. Rappel : Un tableau est un type structur qui per- met de regrouper une srie d'lments de mme type. Chaque lment du tableau est accessible directement par son numro d'ordre. Il est conseill d'utiliser : Un tableau dynamique ou un tableau "simple" lorsque la taille du tableau doit tre modifie au cours du programme. Un tableau fixe pour les API Windows. Un tableau associatif pour stocker des lments indexs sur nimporte quel type dinformation. Syntaxe Dclarer un tableau dynamique <Nom du tableau> est un tableau dynamique Allouer un tableau dynamique <Nom du tableau dynamique> = allouer un tableau dynamique de <Dimension 1> [par <Dimension 2> ... [par <Dimension 10>]] <Type des lments du tableau> TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47 TableauFourn est un tableau ... de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn) ClasseSystme est une classe tTableauDfaut est un tableau ... local de 1 entier FIN TableauClient est un tableau ... dynamique WLangage.book Page 48 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 49 OU <Nom du tableau dynamique> = allouer un tableau dynamique de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau> Faire rfrence un tableau dynamique Pour faire rfrence un tableau dynamique, ce tableau doit tre allou. Faire rfrence un lment d'un tableau une dimension : <Nom du tableau>[Indice1] Faire rfrence un lment d'un tableau deux dimensions : <Nom du tableau>[Indice1, Indice2] OU <Nom du tableau>[Indice1][Indice2] Faire rfrence un lment d'un tableau n dimensions : <Nom du tableau>[Indice1,...,IndiceN] OU <Nom du tableau>[Indice1]...[IndiceN] Passer un tableau en paramtre une procdure : <Nom de la procdure>(<Nom du tableau>) Remarque : Il n'est pas possible de manipuler un tableau dans sa totalit. Par exemple, il n'est pas possible d'affecter un tableau avec un autre tableau. Librer un tableau dynamique (optionnel) Un tableau dynamique est automatiquement libr en fin de vie de la variable (fermeture de la fentre par exemple) ou lors de l'allocation de nouvelles dimensions. Pour librer explicitement un tableau dynamique, utilisez la syntaxe suivante : Librer <Nom du tableau dynamique> Passer un tableau dynamique en paramtre une procdure Un tableau dynamique peut tre pass en param- tre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom du tableau>) Dclarer un membre de type tableau dynamique Il est possible de dclarer un membre de type "tableau dynamique" dans : une structure, une variable compose, une classe. L'allocation du tableau dynamique doit tre effec- tue la suite de la dclaration de la structure, de la variable compose ou de la classe. Dimension d'un tableau dynamique La fonction Dimension permet de : connatre le nombre d'lments dans un tableau dynamique. redimensionner un tableau dynamique. Attention : La fonction Dimension ne permet pas de modifier le nombre de dimensions d'un tableau dynamique. lments d'un tableau dynamique Un tableau dynamique peut tre constitu de clas- ses uniquement si ces classes possdent un cons- tructeur sans paramtre (ou avec des paramtres facultatifs). Un tableau dynamique ne peut pas tre constitu : de variables composes. de tableaux. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). TableauClient est un tableau... dynamique TableauClient = allouer un... tableau dynamique de 4 par 7 entiers // quivalent : TableauClient = allouer un ... tableau dynamique de 4,7 entiers TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47 TableauFourn est un tableau... dynamique TableauFourn = allouer un tableau... dynamique de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn) // Dclaration d'une structure Struct est une structure x1 est un entier x2 est un tableau dynamique FIN // Dclaration d'une variable de // type structure MaStruct est une struct // Allocation du tableau x2 = allouer un tableau dynamique ... de 4,7 entiers WLangage.book Page 49 Mardi, 23. avril 2013 1:59 13 50 Partie 2 : Syntaxe de base du WLangage Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. Fonctions du WLangage et Tableaux dynamiques Plusieurs fonctions WLangage permettent de mani- puler des tableaux dynamiques. Il est par exemple possible d'effectuer des tris, des recherches, ... Pour plus de dtails, consultez laide en ligne. 2.5.3 Tableau fixe Un tableau fixe est un type "avanc" de tableau : les dimensions de ce tableau sont fixes lors de la compilation et ne peuvent pas tre modifies. Les dimensions d'un tableau sont fixes lors de la compilation, uniquement si les dimensions de ce tableau correspondent : soit un entier. soit une constante pralablement cre. Dans les autres cas, une erreur du WLangage est gnre lors de la compilation du projet. Rappel : Un tableau est un type structur qui per- met de regrouper une srie d'lments de mme type. Chaque lment du tableau est accessible directement par son numro d'ordre. Il est conseill d'utiliser : un tableau fixe pour passer en paramtre un tableau aux fonctions API Windows. un tableau dynamique ou un tableau "simple" lorsque la taille du tableau doit tre modifie au cours du programme. un tableau associatif pour stocker des lments indexs sur nimporte quel type dinformation. Syntaxe Dclarer un tableau fixe <Nom du tableau> est un tableau fixe de <Dimension 1> [par <Dimension 2> ... [par <Dimension 10>]] <Type des lments du tableau> OU <Nom du tableau> est un tableau fixe de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau> Faire rfrence un tableau fixe Faire rfrence un lment d'un tableau une dimension : <Nom du tableau>[Indice1] Faire rfrence un lment d'un tableau deux dimensions : <Nom du tableau>[Indice1, Indice2] OU <Nom du tableau>[Indice1][Indice2] Faire rfrence un lment d'un tableau N dimensions : <Nom du tableau>[Indice1, ... , IndiceN] OU <Nom du tableau>[Indice1]...[IndiceN] Passer un tableau en paramtre une procdure : <Nom de la procdure>(<Nom du tableau>) Remarque : Il n'est pas possible de manipuler un tableau dans sa totalit. Par exemple, il n'est pas possible d'affecter un tableau avec un autre tableau. Passer un tableau fixe en paramtre une proc- dure Un tableau fixe peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom du tableau>) Dclarer un membre de type tableau fixe Il est possible de dclarer un membre de type tableau fixe dans : une classe. Ce tableau fixe est allou directe- ment dans la zone mmoire de cette classe. une variable compose. Ce tableau fixe est allou directement dans la zone mmoire de cette variable compose. une structure <Nom de la structure>. Ce tableau fixe est allou directement dans la zone mmoire de chaque variable de type <Nom de la struc- ture>. TableauClient est un tableau fixe... de 5 par 7 par 3 entiers // quivalent : TableauClient est un tableau fixe... de 5,7,3 entiers TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47 TableauFourn est un tableau fixe ... de 10 par 50 chanes // Appel procdure AfficheTableau AfficheTableau(TableauFourn) Struct est une structure n1 est un entier nTab est un tableau fixe sur ... 2 entiers n2 est un entier FIN MaStructure est une Struct WLangage.book Page 50 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 51 Reprsentation de la zone mmoire de "MaStructure" : Cette reprsentation mmoire est compatible avec les API de Windows. Il est ainsi possible de trans- mettre un tableau de taille fixe une fonction des API de Windows. Dimension d'un tableau fixe La fonction Dimension permet de connatre le nom- bre d'lments dans un tableau fixe. Rappel : Il n'est pas possible de redimensionner un tableau fixe. lments d'un tableau fixe Un tableau fixe peut tre constitu dobjets. Un objet reprsente linstanciation dune classe. Si la classe possde un constructeur, ce constructeur doit tre sans paramtre (ou avec des paramtres facultatifs). Un tableau fixe ne peut pas tre constitu : de variables composes. de tableaux. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.4 Tableau associatif Un tableau associatif est un type "avanc" de tableau : il permet de regrouper une srie d'l- ments du mme type. Chaque lment du tableau est index sur n'importe quel type d'information (et non plus simplement sur un indice numrique, comme dans les autres types de tableau). Remarque : Ce type de tableau permet un accs rapide un lment quelconque, avec certaines options sur les chanes, mais il ne permet pas de tri (en particulier, pas de tri sur la cl). Syntaxe Dclarer un tableau associatif <Nom du tableau> est un tableau associatif de <Type> Remarque : Une syntaxe avance est galement disponible. Pour plus de dtails, consultez laide en ligne (mot-cl : "Tableau associatif"). 2.5.5 Variable compose Une variable compose est compose d'lments (membres) de types diffrents. Remarque : Si vous manipulez des variables per- sonnalises, il est conseill de dclarer : une variable compose, si une seule variable de ce type est utilise dans votre projet. un type structure, si plusieurs variables de ce type sont utilises dans diffrents traitements du projet. Syntaxe Dclarer une variable compose <Nom de la variable> est compose de <Membres de la variable compose> FIN Manipuler un membre d'une variable compose <Nom de la variable>.<Nom du membre> // Remplit un tableau associatif // avec les tailles de fichiers taTailleFichier est un tableau ... associatif d'entiers taTailleFichier[... "Fichier1.txt"] = ... fTaille("Fichier1.txt") taTailleFichier["Fichier2.txt"] =... fTaille("Fichier2.txt") // Rcupre la taille d'un fichier Trace(taTailleFichier[... "Fichier2.txt"]) RefProduit est compose de CodeF est un entier CodePr est une chane fixe sur 10 FIN RefProduit.CodeF = 7 RefProduit.CodePr = "cran" WLangage.book Page 51 Mardi, 23. avril 2013 1:59 13 52 Partie 2 : Syntaxe de base du WLangage Manipuler une variable compose Une variable compose peut tre utilise sans faire rfrence ses membres. Type des membres d'une variable compose Les membres d'une variable compose peuvent tre de type : Entier (ou slectionn parmi les entiers avancs). Rel (ou slectionn parmi les rels avancs). Montaire. Chane fixe, Chane ASCIIZ ou Chane pascal. Tableau (tableau "simple", tableau dynamique ou tableau fixe). Automation ou Automation Dynamique. Structure. Variant. Classe. Cette classe doit possder un construc- teur sans paramtre (ou avec des paramtres facultatifs). Tous les autres types de donnes (chane, cons- tante, ...) sont interdits. Dclarer un membre de type tableau dans une variable compose Dclarer un membre de type tableau simple : Les dimensions du tableau sont fixes ds la dcla- ration. Il est possible de modifier les dimensions du tableau avec la fonction Dimension. Dclarer un membre de type tableau dynamique : Il est ncessaire de dfinir les dimensions du tableau (c'est--dire d'allouer le tableau) avant d'uti- liser le tableau.. . Limites d'une variable compose Il n'est pas possible de : affecter directement une variable compose une autre variable compose : chaque membre doit tre affect un par un. comparer deux variables composes. passer une variable compose en paramtre une procdure. dfinir un hritage dans une variable compose. restreindre l'accs un membre d'une variable compose : tous les membres d'une variable compose doivent tre publics. Quels types "avancs" peuvent tre membre ? Une variable "avance" peut tre membre d'une variable "avance". Le tableau ci-dessous prsente les diffrentes combinaisons : Dclaration de variables de mme nom Il est interdit de dclarer : deux variables de mme nom (quel que soit le type de ces variables) dans un traitement. deux membres de mme nom dans une mme variable compose. Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.6 Structure Une structure est un type de donnes personna- lis. Une structure regroupe des lments de types diffrents. Remarque : Si vous manipulez des variables per- sonnalises, il est conseill de dclarer : un type structure, si plusieurs variables de ce type sont utilises dans diffrents traitements du projet. une variable compose, si une seule variable de ce type est utilise dans votre projet. VarCompose est compose de Membre1 est une chane fixe sur 8 Membre2 est une chane fixe sur 12 FIN Ch = VarCompose // Ch est construit en concatnant tous les membres // de la variable compose // VarCompose = Ch // Ch est transfr vers variable // compose // Dclaration variable compose MaVarComp est compose de x1 est un entier x2 est un tableau dynamique FIN // Allocation du tableau MaVarCom.x2 = allouer un tableau ... dynamique de 4,7 entiers // Initialisation du tableau MaVarCom.x2[1,1] = 25 Peut tre un mem- bre de Variable compose Structure Classe Tableau Variable compo- se Non Non Non Non Structure Oui Oui Oui Oui Classe Oui Oui Oui Oui Tableau Oui Oui Oui Non WLangage.book Page 52 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 53 Syntaxe Dclarer une structure <Nom de la structure> est une structure <Membres de la structure> FIN Dclarer une variable de type structure <Nom de la variable> est une <Nom de la structure> Manipuler un membre d'une variable de type structure <Nom de la variable structure>:<Nom du membre de la structure> Dclaration de structures Si une structure <Nom de la structure> est dclare : dans le code du projet, il sera possible de dcla- rer une variable du type <Nom de la structure> dans l'ensemble du projet. dans le code de dclaration des globales d'une fentre / dune page, il sera possible de dclarer une variable du type <Nom de la structure> dans cette fentre / page, dans les champs de cette fentre / page et dans les procdures locales associes. dans le code douverture d'un tat, il sera possi- ble de dclarer une variable du type <Nom de la structure> dans cet tat, dans les champs de cet tat et dans les procdures locales associes. dans le code de dclaration d'une classe, il sera possible de dclarer une variable du type <Nom de la structure> dans cette classe et dans les mthodes de cette classe. dans un traitement, il sera possible de dclarer une variable du type <Nom de la structure> dans ce traitement. Type des membres d'une structure Les membres d'une structure peuvent tre de type : Entier (ou slectionn parmi les entiers avancs). Rel (ou slectionn parmi les rels avancs). Montaire. Chane (ou slectionn parmi les chanes avan- ces). Tableau (tableau "simple", tableau dynamique ou tableau fixe). Automation ou Automation Dynamique. objet (instanciation de classe). La classe peut possder un constructeur sans paramtre (ou avec des paramtres facultatifs). Variant. Tous les autres types de donnes (variable compo- se, constante, ...) sont interdits. Dclarer un membre de type tableau dans une structure Dclarer un membre de type tableau simple : Les dimensions du tableau sont fixes ds la dcla- ration. Il est possible de modifier les dimensions du tableau avec la fonction Dimension. Dclarer un membre de type tableau dynamique : Il est ncessaire de dfinir les dimensions du tableau (c'est--dire d'allouer le tableau) avant d'uti- liser le tableau. Quels types "avancs" peuvent tre membre ? Une variable "avance" peut tre membre d'une variable "avance". Le tableau ci-dessous prsente les diffrentes combinaisons : RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN Fauteuil est une RefProduit RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN Fauteuil est une RefProduit Fauteuil:CodeF = 7 Fauteuil:CodePr = "Meuble" // Dclaration d'une structure Struct est une structure x1 est un entier x2 est un tableau dynamique FIN// Dclaration d'une // variable de type structure MaStruct est une struct // Allocation du tableau MaStruct:x2 = allouer un tableau dynamique de 4,7 entiers // Utilisation du tableau MaStruct:x2[1,1] = 25 Peut tre un mem- bre de Variable compose Structure Classe Tableau Variable compose Non Non Non Non Structure Oui Oui Oui Oui Classe Oui Oui Oui Oui Tableau Oui Oui Oui Non WLangage.book Page 53 Mardi, 23. avril 2013 1:59 13 54 Partie 2 : Syntaxe de base du WLangage Passer une structure en paramtre une proc- dure Une variable de type "structure" peut tre passe en paramtre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom de la variable de type structure>) Limites d'une structure L'hritage de structure est interdit : une structure ne peut pas hriter d'une autre structure. Il n'est pas possible de restreindre l'accs un membre d'une structure : tous les membres d'une structure sont publics. Dclaration de variables de mme nom Il est interdit de dclarer : deux variables de mme nom (quel que soit le type de ces variables) dans un traitement. deux membres de mme nom dans une mme structure. Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.7 Structure dynamique Une structure peut tre alloue dynamiquement : on parle alors d'instanciation dynamique de la structure. L'instanciation dynamique de structure permet de crer une structure un instant donn et de librer cette structure lorsqu'elle n'est plus utilise. Pour instancier une structure, il faut : 1. dclarer une structure dynamique 2. instancier une structure Remarque : la libration de la structure est auto- matique lorsquil n'est plus utilis. Toutefois, il est possible de forcer la destruction de la structure. Dclaration d'une structure dynamique <NomVariable> est [un] <NomStucture> dynami- que Les paramtres importants de cette syntaxe sont les suivants : <NomVariable> : Nom identifiant la variable de la structure. <NomStructure>: Nom identifiant la structure, dfini lors de la cration de la structure Instancier une structure dynamique <NomVariable> = ... allouer un <Nom Structure> [<Paramtres>]) Les paramtres importants de cette syntaxe sont les suivants : <NomVariable> : Nom identifiant la variable de la structure. <NomStructure> : Nom identifiant la structure, dfini lors de la cration de la structure <Paramtres> : Paramtres optionnels du cons- tructeur. Librer une structure dynamique Librer <NomStructure> o <NomStructure> : Nom identifiant l'instance de la structure. 2.5.8 Objet automation Le mot-cl Automation permet de dclarer un objet automation. L'allocation de cet objet est directe- ment effectue lors de la dclaration. Remarque : Il est aussi possible d'utiliser un objet automation dynamique. Son allocation est effec- tue la demande, au cours du programme. Syntaxe Dclarer un objet automation <Nom de l'objet automation> est un objet automation <Nom du serveur automation> RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN Fauteuil est une RefProduit // Appel procdure AfficheProduit AfficheProduit(Fauteuil) Fichier est une structure Nom est une Chane Extension est une Chane Rpertoire est une Chane Fin FichierSource est un Fichier ... dynamique //... FichierSource = Allouer un Fichier // traitement sur l'objet // ... // librer l'objet Liberer FichierSource MonObjetAutomation ... est un objet automation MonServeur WLangage.book Page 54 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 55 Appeler une mthode d'un objet automation <Nom de l'objet automation> >> <Nom de la mthode>([<Paramtres>]) Remarque : La liste des mthodes pouvant tre uti- lises dpend du serveur. Pour connatre les mthodes, reportez-vous la documentation du serveur. Dure de vie d'un objet automation L'objet automation est cr lors de sa dclaration. L'objet automation est automatiquement dtruit la fin du traitement contenant sa dclaration. Un objet automation dclar "global" dans le code : d'initialisation d'une fentre sera dtruit la fin du traitement de fermeture de la fentre. d'initialisation d'un projet sera dtruit la fin du traitement de fermeture de la premire fentre du projet. Allocation d'un objet automation Lors de l'allocation d'un objet automation, le ser- veur automation est automatiquement lanc. Pour allouer un objet automation avec une ins- tance existante d'un serveur automation, utilisez la fonction ObjetActif. Passage de paramtre une mthode Les mthodes des serveurs automation peuvent attendre un ou plusieurs paramtres. Lors de l'appel d'une mthode, l'ordre des param- tres doit tre respect (reportez-vous la documen- tation du serveur et de ses mthodes si ncessaire). Pour certains serveurs automation, certains para- mtres des mthodes ne sont pas valus : seule la prsence du paramtre a de l'importance, et non sa valeur. Par exemple, la mthode "EditionRemplacer" de Word Basic accepte 10 paramtres, le dernier (RemplacerTout) tant non valu. En WLangage, pour les paramtres non valus, il suffit de passer une valeur quelconque. Les mthodes de certains serveurs automation peuvent avoir des paramtres optionnels situs n'importe quel rang dans la liste des paramtres. En WLangage, les paramtres optionnels doivent ncessairement tre situs droite des param- tres obligatoires. Ainsi pour donner une valeur quelconque un paramtre optionnel, il suffit d'affecter le caractre * au paramtre optionnel. Par contre, ce caractre sera inutile pour les paramtres optionnels situs droite du dernier paramtre obligatoire. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.9 Objet Automation Dynamique Un objet automation dynamique est un objet auto- mation allou la demande, au cours du pro- gramme. Syntaxe Dclarer un objet automation dynamique <Nom de l'objet automation dynamique> est un objet automation dynamique Allouer un objet automation dynamique <Nom de l'objet automation dynamique> = allouer un objet automation dynamique <Nom du serveur automation> Appeler une mthode d'un objet automation dyna- mique <Nom de l'objet automation dynamique> >> <Nom de la mthode>([<Paramtres>]) Remarque : La liste des mthodes pouvant tre uti- lises dpend du serveur automation. Pour conna- tre les mthodes, reportez-vous la documentation du serveur. Dure de vie d'un objet automation dynamique L'objet automation dynamique est cr lors de l'allocation de l'objet. L'objet automation dynamique est automatique- ment dtruit la fin du traitement contenant sa dclaration ou lors d'une nouvelle allocation de l'objet. MonObjetAutomation>>... FichierOuvrir(NomDoc) // Dclaration MonObjetDynamique... est un objet automation dynamique // Cration d'un objet automation // dynamique MonObjetDynamique = allouer un ... objet automation dynamique ... MonServeur MonObjetDynamique>>... FichierOuvrir(NomDoc) WLangage.book Page 55 Mardi, 23. avril 2013 1:59 13 56 Partie 2 : Syntaxe de base du WLangage Un objet automation dynamique dclar "global" dans le code : d'initialisation d'une fentre sera dtruit la fin du traitement de fermeture de la fentre. d'initialisation d'un projet sera dtruit la fin du traitement de fermeture de la premire fentre du projet. Pour librer explicitement un objet automation dynamique, utilisez la syntaxe suivante : Librer <Nom de l'objet automation dynamique> Allocation d'un objet dynamique Lors de l'allocation d'un objet automation dynami- que, le serveur automation est automatiquement lanc. Pour allouer un objet automation dynamique avec une instance existante d'un serveur automation, utilisez la fonction ObjetActif. Passage de paramtre une mthode Les mthodes des serveurs automation peuvent attendre un ou plusieurs paramtres. Lors de l'appel d'une mthode, l'ordre des param- tres doit tre respect (reportez-vous la documen- tation si ncessaire). Pour certains serveurs automation, certains paramtres des mthodes ne sont pas valus : seule la prsence du paramtre a de l'impor- tance. La valeur prise par ce paramtre n'en a pas. Par exemple, la mthode "EditionRemplacer" de Word Basic accepte 10 paramtres, le dernier (RemplacerTout) tant non valu. En WLangage, pour les paramtres non valus, il suffit de passer une valeur quelconque. Les mthodes de certains serveurs automation peuvent avoir des paramtres optionnels situs n'importe quel rang dans la liste des paramtres. En WLangage, les paramtres optionnels doivent ncessairement tre situs droite des param- tres obligatoires. Ainsi pour donner une valeur quelconque un paramtre optionnel, il suffit d'affecter le carac- tre * au paramtre optionnel. Par contre, ce caractre sera inutile pour les paramtres option- nels situs droite du dernier paramtre obliga- toire. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables sapplique. 2.5.10 Source de donnes Une variable de type Source de donnes permet de dcrire une source de donnes temporaire (requte, vue, alias, ...). Toutes les oprations possi- bles sur une vue (respectivement une requte) pourront tre effectues sur une variable de type Source de donnes associe une vue (respective- ment une requte). Pour dcrire une source de donnes temporaire, il est ncessaire de : 1. Dclarer une variable de type "Source de don- nes". 2. Initialiser la source de donnes (fonctions HEx- cuteRequteSQL ou hCreVue). 3. La source de donnes est automatiquement libre la fin de vie de la variable. Remarque : A la fermeture de l'application (ou du traitement o la source de donnes a t dcla- re), la source de donnes sera automatiquement dtruite. Syntaxe Dclarer une source de donnes <Nom de la variable> est une source de don- nes Dclarer plusieurs sources de donnes <Nom de la variable 1>, <Nom de la variable 2> sont des sources de donnes Initialiser une variable de type "Source de don- nes" (requte ou vue) Pour initialiser une variable de type "Source de don- nes", utilisez la fonction : HExcuteRequteSQL si la variable est associe une requte. HCreVue si la variable est associe une vue. MaSourceDonne ... est une source de donnes MaSourceDonne1, MaSourceDonne2 ... sont des sources de donnes MaRequte est une source de donnes // MaRequte est associe // une requte //Init. de la variable MaRequte HExcuteRequeteSQL(MaRequte,... "SELECT NOM FROM CLIENT") MaVue est une source de donnes // MaVue est associe une vue // Init. de la variable MaVue HCreVue(MaVue,CLIENT,"*",... "NOM,VILLE","NOM]='A'",... hVueDfaut) WLangage.book Page 56 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 57 Supprimer la source de donnes (requte ou vue) Lorsque la mme variable de type Source de don- nes est utilise plusieurs fois, avec des sources de donnes diffrentes, il est ncessaire de librer la premire source de donnes. Pour librer l'espace mmoire occup par la source de donnes (requte ou vue), utilisez la fonction : HAnnuleDclaration si la variable est associe une requte. HDtruitVue si la variable est associe une vue. Manipuler une requte ou une vue par program- mation Pour manipuler une requte ou une vue par pro- grammation, il est conseill d'utiliser une variable de type "Source de donnes". Vous pouvez cependant donner un nom logique lors de l'initialisation de la requte ou de la vue. Il sera alors ncessaire d'utiliser le mot-cl Externe pour manipuler directement la vue ou la requte dans l'diteur de code. Cette mthode peut ralentir la vitesse d'excution de vos traitements. Remarque : Lors de l'utilisation d'un nom logique, la requte ou la vue n'est pas dtruite automatiquement : il est ncessaire d'utiliser les fonctions HAnnuleDclaration et HDtruitVue. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.11 Description de fichier Une variable de type Description de fichier permet de dcrire un ou plusieurs fichiers de donnes tem- poraires. La description de chaque fichier de don- nes est valide par la fonction HDcritFichier. Aprs cette validation : ce fichier de donnes pourra tre manipul comme n'importe quel fichier de donnes dcrit dans l'analyse. la variable de type "Description de fichier" est r- initialise et pourra tre utilise pour dcrire un autre fichier de donnes temporaire.
Syntaxe Dclarer une description de fichier de donnes <Nom de la variable> est une description de fichier Dclarer plusieurs descriptions de fichiers <Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de fichiers Dcrire une variable de type "Description de fichier" Pour dcrire une variable de type "Description de fichier", utilisez les proprits du WLangage spcifi- ques aux descriptions de fichiers de donnes. Pour valider la description d'une variable de type "Description de fichier", utilisez la fonction HDcrit- Fichier. Proprits spcifiques la description de fichiers de donnes Les proprits spcifiques la description de fichiers de donnes sont dtailles dans laide en ligne. MaRequte est une source de donnes MaRequte = HExcuteRequeteSQL(... MaRequte,"SELECT NOM FROM CLIENT") // Destruction de la source // de donnes associes la // variable MaRequte HAnnuleDclaration(MaRequte) MaRequte = HExcuteRequeteSQL(... MaRequte,... "SELECT NOM FROM FOURNISSEUR") MaVue est une source de donnes // MaVue est associe une vue // Initialisation de la variable HCreVue(MaVue,CLIENT,"*",... "NOM,VILLE","NOM]='A'",hVueDfaut) // Destruction de la source de // donnes associe MaVue HDtruitVue(MaVue) HCreVue(MaVue,CLIENT,"*",... "NOM,PRENOM","NOM]='C'",hVueDfaut) MonFichier ... est une description de fichier MonFichier1, MonFichier2 sont des... descriptions de fichiers // Description du fichier "CLIENT" MonFichier..Nom = "CLIENT" MonFichier..Type = hFichierNormal MonFichier..CryptageFic = ... hCryptageStandard // Description des rubriques // du fichier ... // Validation description // fichier "CLIENT" HDcritFichier(MonFichier) WLangage.book Page 57 Mardi, 23. avril 2013 1:59 13 58 Partie 2 : Syntaxe de base du WLangage Comment dcrire des fichiers de donnes tempo- raires ? Pour dcrire des fichiers de donnes temporaires, il faut : 1. Dclarer des variables de type "Description de fichier", "Description de rubrique" et "Description de liaison" (si ncessaire). 2. Pour chaque fichier de donnes : dcrire les caractristiques du fichier de donnes grce aux proprits HyperFileSQL. dcrire les caractristiques des rubriques grce aux proprits HyperFileSQL. valider la description de chaque rubrique (fonc- tion HDcritRubrique). valider la description du fichier de donnes (fonc- tion HDcritFichier). 3. Dcrire si ncessaire les caractristiques des liaisons grce aux proprits HyperFileSQL. 4. Valider si ncessaire la description de chaque liaison (fonction HDcritLiaison). Manipulation des rubriques d'un fichier de don- nes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de don- nes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes tempo- raire l'aide d'une variable de type "Description de fichier", les noms du fichier de donnes temporaire et de ses rubriques sont dfinis grce la proprit ..Nom. Ces noms ne sont pas automatiquement reconnus par le compilateur. L'utilisation de ces noms pour dsigner le fichier de donnes tempo- raire ou ses rubriques provoque une erreur de com- pilation. Pour que le nom du fichier de donnes temporaire soit reconnu par le compilateur, il est ncessaire de dclarer ce nom de fichier de donnes comme une source de donnes grce au mot-cl source de donnes. Ce fichier de donnes temporaire pourra alors tre manipul par son nom sous l'diteur de code. Remarque : Il est galement possible de dclarer le nom du fichier de donnes temporaire avec le mot-cl Externe. Cependant, la vitesse d'excution du traitement sera ralentie. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.12 Description de liaison Une variable de type Description de liaison permet de dcrire une liaison entre deux fichiers de don- nes temporaires. La description de chaque liaison est valide par la fonction HDcritLiaison. Aprs cette validation : cette liaison pourra tre manipule comme n'importe quelle liaison dcrite dans l'analyse. la variable de type "Description de liaison" est r- initialise et pourra tre utilise pour dcrire une autre liaison.
Syntaxe Dclarer une description de liaison <Nom de la variable> est une description de liaison Dclarer plusieurs descriptions de liaisons <Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de liaisons Dcrire une variable de type "Description de liaison" Pour dcrire une variable de type "Description de liaison", utilisez les proprits du WLangage spcifi- ques aux descriptions de liaisons. Pour valider une description d'une variable de type "Description de liaison", utilisez la fonction HDcrit- Liaison. MonFichier est une description ... de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI) MaLiaison ... est une description de liaison MaLiaison1, MaLiaison2 sont des ... descriptions de liaisons // Description et validation // des fichiers Ville et Client ... // Description de la liaison "HABITE" MaLiaison..Nom = "HABITE" MaLiaison..FichierSource = "VILLE" MaLiaison..FichierReli = "CLIENT" MaLiaison..ClSource = "NOMVILLE" MaLiaison..ClRelie = "VILLECLI" WLangage.book Page 58 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 59 Proprits spcifiques la description de liaisons Les proprits spcifiques la description de liaisons sont dcrites dans laide en ligne. Comment dcrire des fichiers de donnes tempo- raires ? Pour dcrire des fichiers de donnes temporaires, il faut : 1. Dclarer des variables de type "Description de fichier", "Description de rubrique" et "Description de liaison" (si ncessaire). 2. Pour chaque fichier de donnes : dcrire les caractristiques du fichier de donnes grce aux proprits HyperFileSQL. dcrire les caractristiques des rubriques grce aux proprits HyperFileSQL. valider la description de chaque rubrique (fonc- tion HDcritRubrique). valider la description du fichier de donnes (fonc- tion HDcritFichier). 3. Dcrire si ncessaire les caractristiques des liaisons grce aux proprits HyperFileSQL. 4. Valider si ncessaire la description de chaque liaison (fonction HDcritLiaison). Manipulation des liaisons d'un fichier de donnes temporaire Lors de la cration d'une liaison sous l'diteur d'analyses, le nom de cette liaison est automati- quement reconnu par le compilateur. Lors de la cration d'une liaison temporaire l'aide d'une variable de type "Description de liaison", le nom de cette liaison est dfini grce la proprit ..Nom. Ce nom n'est pas automatiquement reconnu par le compilateur. L'utilisation de ce nom pour dsigner la liaison temporaire provoque une erreur de compilation. Pour que le nom de la liaison temporaire soit reconnu par le compilateur, il est ncessaire de dclarer ce nom grce au mot-cl Externe. Cette liaison temporaire pourra alors tre manipule par son nom sous l'diteur de code. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.13 Description de rubrique Une variable de type Description de rubrique per- met de dcrire une ou plusieurs rubriques d'un fichier de donnes temporaire. La description de chaque rubrique est valide par la fonction HDcri- tRubrique. Aprs cette validation : cette rubrique pourra tre manipule comme n'importe quelle rubrique dcrite dans l'analyse. la variable de type "Description de rubrique" est r-initialise et pourra tre utilise pour dcrire une autre rubrique de fichier de donnes tempo- raire. Syntaxe Dclarer une description de rubrique <Nom de la variable> est une description de rubrique Dclarer plusieurs descriptions de rubriques <Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de rubriques Dcrire une variable de type "Description de rubri- que" Pour dcrire une variable de type "Description de rubrique", utilisez les proprits du WLangage sp- cifiques aux descriptions de rubriques. Pour valider une description de variable de type "Description de rubrique", utilisez la fonction HD- critRubrique. // Validation description // liaison "HABITE" HDcritLiaison(MaLiaison) MaLiaison est ... une description de liaison ... MaLiaison..Nom = "HABITE" ... HDcritLiaison("HABITE") ... EXTERNE HABITE ... Cardinalit = ... HABITE..CardinalitRelieMax MaRubrique ... est une description de rubrique MaRubrique1, MaRubrique2 sont des descriptions de rubriques // Description du fichier // MonFichier ... // Description de la rubrique "NOM" MaRubrique..Nom = "NOM" MaRubrique..Type = hRubTexte MaRubrique..Taille = 40 WLangage.book Page 59 Mardi, 23. avril 2013 1:59 13 60 Partie 2 : Syntaxe de base du WLangage Proprits spcifiques la description de rubri- ques Les proprits spcifiques la description de rubri- ques sont dcrites dans laide en ligne. Comment dcrire des fichiers de donnes tempo- raires ? Pour dcrire des fichiers de donnes temporaires, il faut : 1. Dclarer des variables de type "Description de fichier", "Description de rubrique" et "Description de liaison" (si ncessaire). 2. Pour chaque fichier de donnes : dcrire les caractristiques du fichier de donnes grce aux proprits HyperFileSQL. dcrire les caractristiques des rubriques grce aux proprits HyperFileSQL. valider la description de chaque rubrique (fonc- tion HDcritRubrique). valider la description du fichier de donnes (fonc- tion HDcritFichier). 3. Dcrire si ncessaire les caractristiques des liaisons grce aux proprits HyperFileSQL. 4. Valider si ncessaire la description de chaque liaison (fonction HDcritLiaison). Manipulation des rubriques d'un fichier de don- nes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de don- nes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes tempo- raire l'aide d'une variable de type "Description de fichier", les noms du fichier de donnes temporaire et de ses rubriques sont dfinis grce la proprit ..Nom. Ces noms ne sont pas automatiquement reconnus par le compilateur. L'utilisation de ces noms pour dsigner le fichier de donnes tempo- raire ou ses rubriques provoque une erreur de com- pilation. Pour que les noms du fichier de donnes tempo- raire et de ses rubriques soient reconnus par le compilateur, il est ncessaire de dclarer le nom du fichier de donnes temporaire en tant que source de donnes. Ce fichier de donnes temporaire et ses rubriques pourront alors tre manipuls par leur nom sous l'diteur de code. Remarque : il est galement possible de dclarer le nom du fichier de donnes temporaire avec le mot- cl Externe. Cependant, la vitesse d'excution du traitement sera ralentie. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.14 Police Une variable de type Police permet de crer une police dynamique. Les proprits de cette police peuvent tre modifies au cours du programme. Une police dynamique permet de slectionner la police utilise : dans les dessins (fonction dPolice). dans les graphes (fonctions grPoliceEtiquette, grPoliceLgende, grPoliceTitre et grPoliceTi- treAxe). pour les impressions (fonction iPolice). dans les champs d'une fentre (proprit ..Police des champs d'une fentre). dans les champs d'un tat (proprit ..Police des champs d'un tat). Syntaxe Dclarer une police <Nom de la variable> est une police Dclarer plusieurs polices <Nom de la variable 1>, <Nom de la variable 2> sont des polices MaRubrique..TypeCl = hClUnique // Validation description // rubrique "NOM" HDcritRubrique(MonFichier, ... MaRubrique) // Validation description fichier // MonFichier ... MonFichier ... est une description de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI) MaPolice est une police MaPolice1, MaPolice2 sont des polices WLangage.book Page 60 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 61 Dfinir les caractristiques d'une police Par dfaut, une police est "Arial", de taille 12, de couleur noir, sans attribut. Pour dfinir les caractristiques d'une police dyna- mique, utilisez : soit la fonction PoliceCre. soit les proprits ..Alphabet, ..Angle, ..Barr, ..Condens, ..Couleur, ..Etendu, ..Gras, ..Italique, ..Large, ..Nom, ..Soulign et ..Taille. soit la fonction PoliceSelect qui ouvre la fentre standard WinDows de slection des polices. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.15 Connexion Une variable de type Connexion permet de dcrire une ou plusieurs connexions des bases de don- nes externes (HyperFileSQL Client/Serveur, Accs Natif, ...). La connexion pourra tre ouverte grce la fonc- tion HOuvreConnexion. La variable de type connexion permet aussi bien de : dcrire une nouvelle connexion (quivalent la fonction HDcritConnexion) crer une connexion (qui sera ouverte grce la fonction HOuvreConnexion) modifier une connexion existante. Syntaxe Dclarer une connexion <Nom de la variable> est une connexion Dclarer plusieurs connexions <Nom de la variable 1>, <Nom de la variable 2> sont des connexions Dfinir les caractristiques d'une connexion Pour dcrire une variable de type Connexion, utili- sez les proprits WLangage spcifiques aux con- nexions. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plu- sieurs variables de mme nom (quel que soit le type de ces variables). Si des variables de mme nom sont dclares dans diffrents traitements du projet, la rgle de porte des variables s'applique. 2.5.16 File Une file est un type structur qui permet de regrou- per une srie d'lments du mme type. Les l- ments sont ajouts la fin de la file et sont rcuprs dans l'ordre d'enfilement. Syntaxe Dclarer et initialiser une file <Nom de la file> est [une] File de <Type des lments de la file> Par exemple, si les lments sont ajouts dans l'ordre suivant : 1, 2, 3, ils seront rcuprs dans le mme ordre 1, 2, 3 Proprits WLangage utilisables avec le type File MaPolice = ... PoliceCre("Arial",12,iGras) MaPolice..Nom = "Arial" MaPolice..Taille = 12 MaPolice..Gras = Vrai MaConnexion est une connexion // Description de la connexion MaCxion..Utilisateur = "USER" MaCxion..MotDePasse = "PASSWORD" MaCxion..Serveur = "MONSERVEUR" MaCxion..BaseDeDonnes = "Base1" MaCxion..Provider = ... hAccsHFClientServeur MaCxion..Accs = hOLectureEcriture MaCxion..InfosEtendues = "Infos" MaCxion..OptionsCurseur= ... hCurseurClient HOuvreConnexion(MaConnexion) MaFile est une File d'entiers // On enfile les valeurs 1, 2 et 3 Enfile(MaFile, 1) Enfile(MaFile, 2) Enfile(MaFile, 3) // Affichage de la trace : 1, 2, 3 x est un entier TANTQUE Dfile(MaFile, x) Trace(x) FIN AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du multithread NbThreadAttente Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du multithread Occurence Renvoie le nombre d'occurren- ces de la file WLangage.book Page 61 Mardi, 23. avril 2013 1:59 13 62 Partie 2 : Syntaxe de base du WLangage Remarque : Ces proprits peuvent tre utilises en utilisant une des deux syntaxes suivantes : <Nom de la variable>..<Nom de la proprit> <Nom de la variable>.<Nom de la proprit> Fonctions WLangage de gestion des files Les fonctions suivantes peuvent tre utilises pour manipuler une variable de type File. Les files et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonc- tions Enfile et Dfile). Il est galement possible d'utiliser les proprits lors d'une gestion multithread mais le rsultat n'est pas permanent. Par exemple : Parcours des files : Il est possible d'utiliser la syntaxe POUR TOUT pour parcourir les files. Les lments sont parcourus dans l'ordre de dfilement qui est galement l'ordre d'enfilement. La syntaxe utilise correspond celle utilise pour les tableaux : Les lments peuvent tre modifis pendant le par- cours. En cas de modification de la file pendant un parcours, les lments parcourus seront ceux pr- sents lors de l'initialisation du parcours : si des lments sont enfils aprs l'initialisation du parcours, ils ne seront pas parcourus. si des lments sont dfils aprs l'initialisation du parcours, ils seront quand mme parcourus. Remarques Sous le dbogueur, le contenu de la file est affi- ch dans l'ordre de dfilement. Une file peut tre utilise pour typer un param- tre de procdure. Une file peut tre copie avec l'oprateur =. Il est galement possible de copier une instance de classe ou de structure contenant une file. Une file peut tre initialise par une liste d'l- ments dans l'ordre d'enfilement. 2.5.17 Liste Une liste est un type structur qui permet de regrouper une srie d'lments du mme type. Les lments peuvent tre ajouts la fin de la liste ou tre insrs dans la liste Syntaxe Dclarer et initialiser une liste <Nom de la liste> est [une] Liste de <Type des lments de la liste> Proprits WLangage utilisables avec le type Liste Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Liste Remarque : Ces proprits peuvent tre utilises en utilisant une des deux syntaxes suivantes : <Nom variable>..<Nom proprit> <Nom variable>.<Nom proprit> Fonctions WLangage de gestion des listes Les fonctions suivantes peuvent tre utilises pour manipuler une variable de type liste. Vide Vrai si la file est vide, Faux dans le cas contraire Dfile Rcupre l'lment du dbut de la file. Dsrialise Dsrialise une file. Enfile Ajoute un lment la fin de la file. Srialise Srialise une file. Supprime Tout Supprime tous les lments d'une file. SI MaFile..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la file peut tre vide FIN POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <File> ... FIN Occurence Renvoie le nombre d'occur- rences de la liste. Vide Vrai si la liste est vide, Faux dans le cas contraire. Ajoute Ajoute un lment la fin de la liste. Dsrialise Dsrialise une liste. Insre Insre un lment dans la liste. Srialise Srialise une liste. Supprime Supprime un lment de la liste Supprime- Tout Supprime tous les lments de la liste. WLangage.book Page 62 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 63 Les listes et le multithread. La gestion du multithread est prise en compte lors de l'ajout, l'insertion et de la suppression d'un l- ment. Il est galement possible d'utiliser les proprits lors d'une gestion multithread mais le rsultat n'est pas permanent. Par exemple : Parcours des listes. Il est possible d'utiliser la syntaxe POUR TOUT pour parcourir les listes. La syntaxe utilise correspond celle utilise pour les tableaux : Les lments peuvent tre modifis pendant le par- cours. En cas de modification de la liste pendant un parcours, le parcours est affect par les opra- tions d'ajout et de suppression. Les fonctions dis- ponibles pendant le parcours sont les suivantes : Syntaxe : Insre(<Nom de la liste>, AvantE- lmentCourant, <Valeur>) Attention : l'lment sera parcouru par l'itration suivante si la boucle est descendante. Syntaxe : Insre(<Nom de la liste>, AprsE- lmentCourant, <Valeur>) Attention : l'lment sera parcouru par l'itration suivante si la boucle est ascendante. Syntaxe : Supprime(<Nom de la liste>, El- mentCourant) Remarques : Le contenu de la liste peut tre affich sous le dbogueur. Une liste peut tre utilise pour typer un param- tre de procdure. Une liste peut tre copie avec l'oprande liste. Une liste peut tre initialise par une liste d'l- ments. 2.5.18 Pile Une pile est un type structur qui permet de regrou- per une srie d'lments du mme type. Les l- ments sont ajouts la fin de la pile et sont rcuprs du plus rcent au plus ancien. Syntaxe Dclarer et initialiser une pile <Nom de la pile> est [une] Pile de <Type des lments de la pile> Par exemple, si les lments sont ajouts dans l'ordre suivant : 1, 2, 3, ils seront rcuprs dans l'ordre suivant : 3, 2, 1. : Proprits WLangage utilisables avec le type Pile Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Pile. Remarque : Ces proprits peuvent tre utilises en utilisant une des deux syntaxes suivantes : <Nom de la variable>..<Nom de la pro- prit> <Nom de la variable>.<Nom de la proprit> Fonctions WLangage de gestion des piles. Les fonctions suivantes peuvent tre utilises pour manipuler une variable de type pile. SI MaListe..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la liste peut tre vide FIN POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <Liste> [<Sens>] ... FIN MaPile est une Pile d'entiers // On empile les valeurs 1, 2 et 3 Empile(MaPile, 1) Empile(MaPile, 2) Empile(MaPile, 3) // Affichage de la trace : 3, 2, 1 x est un entier TANTQUE Dpile(MaPile, x) Trace(x) FIN AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du mul- tithread NbThreadAttente Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du mul- tithread Occurence Renvoie le nombre d'occur- rences de la pile. Vide Vrai si la pile est vide, Faux dans le cas contraire Dpile Rcupre l'lment du dbut de la pile. Dsrialise Dsrialise une pile. Empile Ajoute un lment dans une pile. Srialise Srialise une pile. WLangage.book Page 63 Mardi, 23. avril 2013 1:59 13 64 Partie 2 : Syntaxe de base du WLangage Les piles et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonc- tions Empile et Dpile). Il est galement possible d'utiliser les proprits lors d'une gestion multithread mais le rsultat n'est pas permanent. Par exemple : Parcours des piles Il est possible d'utiliser la syntaxe POUR TOUT pour parcourir les piles. Les lments sont parcourus dans l'ordre de dpilage qui est galement l'ordre inverse de l'ordre d'empilage. La syntaxe utilise correspond celle utilise pour les tableaux : Les lments peuvent tre modifis pendant le par- cours. En cas de modification de la pile pendant un parcours, les lments parcourus seront ceux pr- sents lors de l'initialisation du parcours : si des lments sont empils aprs l'initialisation du parcours, ils ne seront pas parcourus. si des lments sont dpils aprs l'initialisation du parcours, ils seront quand mme parcourus. Remarques : Sous le dbogueur, le contenu de la pile est affi- ch dans l'ordre de dpilement. Une pile peut tre utilise pour typer un param- tre de procdure. Une pile peut tre copie avec l'oprateur =. Il est galement possible de copier une instance de classe ou de structure contenant une pile. Une pile peut tre initialise par une liste d'l- ments dans l'ordre d'empilage 2.6 Variables locales / variables globales Les variables peuvent tre de deux types : Variable locale : utilisable uniquement dans le traitement dans lequel cette variable a t dcla- re. Variable globale : utilisable dans tous les traite- ments dpendant du traitement dans lequel cette variable a t dclare. Important : Il ne faut pas dclarer deux variables avec le mme nom (notamment une variable glo- bale et une variable locale). 2.6.1 Variables globales Variables globales un projet Les variables globales dclares dans le traite- ment d'initialisation d'un projet peuvent tre utili- ses dans tous les traitements : du projet. des fentres / des pages (traitement de la fen- tre / page, de ses champs et des procdures locales associes). des tats (traitement de l'tat, de ses champs et des procdures locales associes). Disponibilit des variables sous WebDev en code Navigateur : Les variables globales serveur du pro- jet sont disponibles dans les codes Navigateur uni- quement pour les types suivants : Boolen, Entier, Rel, Chane. Attention : les modifications effec- tues sur ces variables globales en code naviga- teur ne sont pas reportes sur le serveur. Astuce : les variables globales dclares dans un code serveur peuvent permettre de transmettre des informations au navigateur. Variables globales une fentre ou page Les variables globales dclares dans le traite- ment de dclaration des globales d'une fentre / dune page peuvent tre utilises dans tous les traitements : de la fentre / page. des champs de la fentre / page. des procdures locales associes la fentre / page. Limites : Les variables globales d'une fentre ne peuvent pas tre utilises par ses fentres soeurs. SupprimeTout Supprime tous les lments d'une pile. SI MaPile..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la pile peut tre vide FIN POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <Pile> ... FIN WLangage.book Page 64 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 65 Les variables globales dclares dans une fen- tre fille ne peuvent pas tre utilises dans sa fentre mre. Lorsque la fentre / page dans laquelle la varia- ble a t dclare est ferme, cette variable ne peut plus tre utilise. Disponibilit des variables sous WebDev en code Navigateur : Les variables Serveur globales une page sont disponibles dans les codes Navigateur de la page uniquement pour les types suivants : Boolen, Entier, Rel, Chane. Attention : les modifications effectues sur ces variables globales en code navigateur ne sont pas reportes sur le serveur. Astuce : les variables globales dclares dans un code serveur peuvent permettre de transmettre des informations au navigateur. Variables Navigateur globales une page Les variables globales dclares dans le code de "Chargement (onLoad) de la page" peuvent tre utilises dans tous les traitements navigateur : de la page. des champs de la page. des procdures locales associes la page. Disponibilit des variables en code Serveur : Les variables Navigateur globales une page ne sont pas disponibles dans les codes Serveur de la page. Astuce : les variables globales dclares dans un code navigateur peuvent permettre d'changer des informations entre diffrents traitements excuts sur le navigateur. Remarques : Les variables globales Navigateur ne peuvent pas tre initialises sur la ligne de dclaration. Les variables globales Navigateur peuvent tre initialises avec la valeur d'une variable globale serveur (uniquement pour les types boolens, entier, rel et chane). Il est conseill de dsactiver le "cache" de votre navigateur pendant le dveloppement de lappli- cation WebDev. En effet, les variables globales sont traduites en JavaScript dans des fichiers ".JS". Si le "cache" est actif, les tests de vos pages peuvent recharger des fichiers correspondant danciennes valeurs de variables. Pour plus de dtails, consultez laide en ligne. Variables globales un tat Les variables globales dclares dans le traite- ment douverture d'un tat peuvent tre utilises dans tous les traitements de l'tat, des champs de l'tat, des procdures locales associes l'tat. Variables globales une collection de procdures Les variables globales dclares dans le traitement d'initialisation d'une collection de procdures peu- vent tre utilises dans tous les traitements : des diffrentes procdures de la collection. du projet en cours. Syntaxe Dclarer une ou plusieurs variables globales GLOBAL <Variables globales> 2.6.2 Variables locales Les variables locales peuvent tre utilises unique- ment dans les traitements dans lesquels elles sont dclares. En dehors de ces traitements, les varia- bles locales sont inconnues. Ces variables ne pour- ront pas tre partages par plusieurs traitements. Par dfaut, lors de sa dclaration, une variable est locale. Syntaxe Dclarer une ou plusieurs variables locales [LOCAL] <Variables locales> GLOBAL // Toutes les dclarations qui // suivent sont des variables // globales Indice est un entier NomClient est une chane LOCAL // Toutes les dclarations qui // suivent sont des variables // locales I est un entier PrnomClient est une chane WLangage.book Page 65 Mardi, 23. avril 2013 1:59 13 66 Partie 2 : Syntaxe de base du WLangage 2.7 Rgle de porte des variables La rgle de porte des variables est la suivante : Si une variable "globale" au projet et une variable "globale" une fentre / page portent le mme nom: la variable "globale" la fentre / page sera utilise dans tous les traitements de la fentre / page et de ses champs, ainsi que dans les procdures "locales" de la fentre / page. la variable "globale" au projet sera utilise dans tous les autres traitements. Si une variable "globale" au projet et une varia- ble "locale" un traitement portent le mme nom: la variable "locale" sera uniquement utilise dans le traitement dans lequel cette variable a t dclare. la variable "globale" au projet sera utilise dans tous les autres traitements. Si une variable "globale" une fentre / page et une variable "locale" un traitement de cette fentre / page portent le mme nom: la variable "locale" sera uniquement utilise dans le traitement dans lequel cette variable a t dclare. la variable "globale" la fentre / page sera uti- lise dans tous les autres traitements de la fentre / page et de ses champs (y compris les procdures "locales" de la fentre / page). aucune des deux variables ne pourra tre utili- se dans le reste du projet. Exception : La rgle de porte des variables ne s'applique pas sur les constantes. WLangage.book Page 66 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 67 3. OPRATEURS 3.1 Prsentation Les diffrents oprateurs sont les suivants : Oprateurs logiques : Exemples : ET, OU, PAS Oprateurs arithmtiques : Exemples : "+", "-", "*", "/", "++", "--", "+=", "-=" Oprateurs binaires : Exemples : ETBinaire, OUBi- naire, NonBinaire et OUExclusifBinaire Oprateurs de comparaison : Exemples : "=", "~=", "<>", "<=", ">=", "<", ">", "~~" Oprateurs sur des chanes de caractres : Exemples : "+", "[[" et "]]" Oprateur sur adresse : & Oprateurs d'indirection de champ et de rubrique : { et } Oprateurs de ponctuation : Exemples : "(" et ")", "[" et "]", "," et "." et ":" et ";", "..", "..." et "//" 3.2 Oprateurs logiques 3.2.1 Prsentation Les oprateurs logiques sont : ET et _ET_ : Multiplication logique. OU et _OU_ : Addition logique. PAS : Ngation logique. Les oprateurs logiques permettent d'effectuer des oprations logiques et de construire des condi- tions. 3.2.2 Rgles Vrai ET Vrai : retourne Vrai Vrai ET Faux : retourne Faux Vrai OU Vrai : retourne Vrai Vrai OU Faux : retourne Vrai PAS Vrai : retourne Faux 3.2.3 Notes Variable numrique Si une variable numrique est manipule comme un oprateur logique (boolen), "0" est quivalent Faux. Toute autre valeur est quivalente Vrai. Par exemple, les deux lignes de codes suivantes sont quivalentes : La premire syntaxe (SI NumTest ALORS) doit tre prfre la seconde syntaxe. Variable chane Si une variable chane est manipule comme un oprateur logique, une erreur du WLangage sera gnre. Par exemple, la syntaxe : "SI ChTest ALORS" retournera une erreur lors de l'excution (mais pas lors de la compilation du projet). Priorit Les oprateurs ET et OU, _ET_ et _OU_ ont la mme priorit. Pour donner des priorits ces oprateurs, il suffit de mettre des parenthses. Par exemple : Exceptions : Dans les filtres SQL et les requtes SQL, l'oprateur ET est prioritaire sur l'oprateur OU. SI Client.Ville = ... "Boston" ET ... Client.Civilit = ... "Monsieur" ALORS HommeBoston ++ // Nombre d'hommes habitant // Boston FIN SI Client.Ville = ... "Boston" OU ... Client.Ville = "New York" ALORS BostonNewYork ++ // Nombre de clients habitant // soit Boston, soit // New York FIN SI NumTest ALORS ... SI NumTest <> 0 ALORS ... SI (A = 2 ET B > 3) OU ... (A = 2 ET B < 0) ALORS ... WLangage.book Page 67 Mardi, 23. avril 2013 1:59 13 68 Partie 2 : Syntaxe de base du WLangage Par exemple : sera valu ainsi : 3.3 Oprateurs arithmtiques 3.3.1 Prsentation Les oprateurs arithmtiques sont : "+" : Addition (valeur numrique ou chane). "-" : Soustraction (valeur numrique). "*" : Multiplication. "/" : Division. "++" : Incrmentation (valeur numrique). "--" : Dcrmentation (valeur numrique). "+=" : Ajout d'une valeur la variable ou au champ (numrique ou texte). "-=" : Soustraction d'une valeur la variable ou au champ (numrique). 3.3.2 Rgles de calcul Les diffrents calculs se font sans perte de prci- sion ou tronquage. Les vrifications de dborde- ment sont effectues au moment de l'affectation du rsultat dans une variable. 3.3.3 Notes Affichage du rsultat Il n'est pas possible d'afficher directement le rsul- tat du calcul utilisant les oprateurs suivants : "++" : Incrmentation. "--" : Dcrmentation. "+=" : Ajout d'une valeur la variable ou au champ (numrique ou texte). "-=" : Soustraction d'une valeur la variable ou au champ (numrique). Ainsi, cet exemple gnre une erreur lors de la compilation : Pour afficher le rsultat, effectuez les modifica- tions suivantes : quivalence j ++ est quivalent j = j + 1 j - - est quivalent j = j - 1 j += 3 est quivalent j = j + 3 j - = 3 est quivalent j = j - 3 Il est conseill d'utiliser les syntaxes : "j ++", "j --", "j +=" et "j - =", plus rapides que les syntaxes habituel- les. 3.4 Oprateurs binaires Les oprations sur des valeurs binaires sont uni- quement ralises : avec des fonctions du WLangage : ETBinaire, OUBinaire, NonBinaire, OUExclusifBinaire avec des oprateurs spcifiques : oprateurs binaires, oprateurs de dcalage vers la droite et vers la gauche, oprateur d'accs aux bits. 3.4.1 Oprateurs binaires ET, OU et OU exclusif binaires Les syntaxes suivantes peuvent tre utilises : ET binaire : <Valeur 1> & <Valeur 2> OU binaire : <Valeur 1> | <Valeur 2> OU exclusif binaire : <Valeur 1> || <Valeur 2> Le type de rsultat peut tre diffrent selon le type des oprandes : Non binaire La syntaxe est la suivante : ~ <Valeur> Le type de rsultat peut tre diffrent selon le type Condition1 ET Condition2 OU Condition3 (Condition1 ET Condition2) OU Condition3 n est un entier = 10 Trace(n+=1) n est un entier = 10 n += 1 Trace(n) Valeur 2 Valeur 1 Entier sur 4 Entier sur 8 Autre Entier sur 4 Entier sur 4 Entier sur 8 Entier sur 4 Entier sur 8 Entier sur 8 Entier sur 8 Entier sur 8 Autre Entier sur 4 Entier sur 8 Entier sur 8 WLangage.book Page 68 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 69 de l'oprande : 3.4.2 Oprateurs de dcalage Dcalage vers la gauche : Dcalage vers la droite : Notes Les bits de <Valeur 1> sont dcals de <Valeur 2> bits vers la droite ou vers la gauche. Par exemple : En effet, 4 en dcimal correspond 0100 en binaire. Dcal de 1 bit vers la gauche, on obtient en binaire 1000 ce qui correspond 8 en dci- mal. Autre exemple : En effet, 4 en dcimal correspond 0100 en binaire. Dcal de 2 bits vers la droite, on obtient en binaire 0001 ce qui correspond 1 en dci- mal. Les bits qui dpassent la taille de <Valeur 1> sont ignors. Par exemple : Si <Valeur 2> est suprieur la taille de <Valeur 1> (32 pour un entier sur 4 et 64 pour un entier sur 8), le rsultat est toujours 0. Par exemple : Le type de rsultat peut tre diffrent selon le type de l'oprande : 3.4.3 Oprateur daccs direct Accs un bit Syntaxe : <Valeur 1> [ <n> ] Cette syntaxe permet de lire ou de modifier la valeur du bit <N> dans la valeur <Valeur 1>. Le comptage des bits commence 1 : 1 32 pour un entier sur 4 octets, 1 64 pour un entier sur 8 octets. Si la valeur de <n> est incorrecte, l'opration ren- voie 0. Exemples : Accs un entier sur 1, 2 ou 4 octets Syntaxes : <Valeur 1> [ <n>, wlEntier_1 ] <Valeur 1> [ <n>, wlEntier_2 ] <Valeur 1> [ <n>, wlEntier_4 ] Ces syntaxes permettent de lire ou de modifier la valeur de l'entier sur 1, 2 ou 4 octets dans la valeur <Valeur 1>. Valeurs possibles pour <n> selon le type de <Valeur 1> : Si la valeur de <n> est incorrecte, l'opration ren- voie 0. Accs la valeur de plusieurs bits Syntaxes : <Valeur 1> [ A <n> ] <Valeur 1> [ <n> A ] <Valeur 1> [ <n> A <o> ] <Valeur 1> [ <n> SUR <Nombre> ] Ces syntaxes permettent de lire ou de modifier la valeur correspondant aux bits indiqus. Oprande Rsultat Entier sur 4 Entier sur 4 Entier sur 8 Entier sur 8 Autre Entier sur 8 <Valeur 1> bitDcaleGauche <Valeur 2> bitDcaleGauche(<Valeur1>, <Valeur 2>) <Valeur 1> bitDcaleDroite <Valeur 2> bitDcaleDroite(<Valeur1>, <Valeur 2>) bitDcaleGauche(4,1) // Renvoie 8 bitDcaleDroite(4,2) // Renvoie 1 bitDcaleGauche(4,30) // Renvoie 0 bitDcaleGauche(4,4) // Renvoie 0 bitDcaleGauche(4,35) // Renvoie 0 Oprande Valeur 1 Rsultat Entier sur 4 Entier sur 4 Entier sur 8 Entier sur 8 Autre Entier sur 8 // Positionne les cinquime et // septime bits 1 n est un entier n[5] = 1 n[7] = Vrai // Teste valeur des bits 4, 5, 6 et 7 SI n[4] ALORS Trace(4) // pas affich SI n[5] ALORS Trace(5) // affiche 5 SI n[6] ALORS Trace(6) // pas affich SI n[7] ALORS Trace(7) // affiche 7 Valeur 1 wlEntier_1 wlEntier_2 wlEntier_4 Entier sur 4 1 4 1 2 1 Entier sur 8 1 8 1 4 1 2 WLangage.book Page 69 Mardi, 23. avril 2013 1:59 13 70 Partie 2 : Syntaxe de base du WLangage 3.5 Oprateurs de comparaison 3.5.1 Prsentation Les oprateurs de comparaison peuvent tre divi- ss en plusieurs catgories : Les oprateurs de comparaison peuvent tre utili- ss avec tous les types d'oprandes. Le rsultat d'une expression de comparaison est de type boolen. 3.5.2 Dtail galit souple et galit trs souple L'galit souple (~=) et l'galit trs souple (~~) agissent uniquement sur les chanes de caractres (sauf les chanes fixes). Ces oprateurs permettent de : ne pas diffrencier les caractres majuscules des caractres minuscules, ne pas tenir compte des espaces situs avant et aprs la chane tester, ne pas tenir compte des caractres accentus minuscules, ne pas tenir compte des espaces et des ponctua- tions l'intrieur des chanes (galit trs souple uniquement) quivalence HyperFileSQL : Pour retrouver l'quiva- lence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes Hyper- FileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans l'analyse : Egalit et comparaison : Rel contenant plus de 6 dcimales de diffrence Le test d'galit de deux rels est effectu en ne tenant compte que des 6 premires dcimales. En effet, les erreurs d'arrondi dues au codage interne des rels ncessitent un test spcifique. Ce test doit tre ralis en comparant la diffrence des deux valeurs tester avec une valeur de rf- rence. Selon le type de votre application, cette valeur peut tre gale 0,00001 ou moins encore. Cette gestion d'arrondi n'est pas spcifique WinDev. Elle est gnrale tous les langages manipulant des rels sous forme binaire. Intervalles de comparaison Les intervalles de comparaison permettent de sim- plifier l'criture de comparaisons complexes. Ainsi, la ligne peut tre remplace par La ligne : peut tre remplace par Egalit galit stricte : = galit souple : ~= galit trs souple : ~~ Commence par : [= Comparaison Diffrent : <> Infrieur ou gal : <= Suprieur ou gal : >= Strictement infrieur : < Strictement suprieur : > Commence par : [= Intervalle de comparaison Strictement compris entre : Valeur1< x< Valeur2 Compris entre : Valeur1 < x <= Valeur2 Valeur1 <= x < Valeur2 Compris entre (bornes comprises) : Valeur1 <= x <= Valeur2 Compris entre (bornes comprises) : Valeur1 A Valeur2 "Dupond" = "DUPOND" // retourne Faux "Dupond" ~= "DUPOND" // retourne Vrai " Dupond" ~= "DUPOND" // retourne Vrai " Dupond" ~= "Dupond" // retourne Vrai "C'est l't" ~= "C'est l'ete" // retourne Vrai "Ent. S.A.R.L" ~~ "Ent SARL" // retourne Vrai Diff, R1, R2 sont des rels Diff = 0.00001 SI Abs(1-(R1/R2)) < Diff ALORS // R1 et R2 sont gaux SINON // R1 et R2 sont diffrents FIN SI x>5 et x<10 ALORS ... SI 5<x<10 ALORS... SI x>=5 et x<=10 ALORS ... SI X=5 A 10 ALORS... WLangage.book Page 70 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 71 Exemple : Comparaison d'instances de structures et d'instan- ces de classes Les structures dynamiques sont instancies uni- quement lors de leur allocation. Il est possible de comparer des instances de struc- tures dynamiques (ou des instances de classes dynamiques) grce l'oprateur "=". Exemple : La mme opration peut tre ralise sur les ins- tances de classes. 3.6 Oprateurs sur chanes de caractres Les chanes de caractres peuvent tre manipu- les par des fonctions spcifiques du WLangage ou par les oprateurs +, [[ et ]]. Les oprateurs sur des chanes de caractres sont : "+" : Pour concatner des chanes. "[[" et "]]" (double crochets ouvrant et double cro- chets fermant) : Oprateur d'extraction d'une sous-chane. "=" : Egalit stricte "~=" : Egalit souple (non disponible sous Web- Dev code navigateur) "[=" : Commence par 3.6.1 galit souple et galit trs souple L'galit souple (~=) et l'galit trs souple (~~) agissent uniquement sur les chanes de caractres (sauf les chanes fixes). Ces oprateurs permettent de : ne pas diffrencier les caractres majuscules des caractres minuscules, ne pas tenir compte des espaces situs avant et aprs la chane tester, ne pas tenir compte des caractres accentus minuscules, ne pas tenir compte des espaces et des ponctua- tions l'intrieur des chanes (galit trs souple uniquement). quivalence HyperFileSQL : Pour retrouver l'quiva- lence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes Hyper- FileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans l'analyse : MonTableau est un tableau de 5 chanes I est un entier MonTableau[1] = "Dupond" MonTableau[2] = "Aida" MonTableau[3] = "Parapoline" MonTableau[4] = "Moulin" MonTableau[5] = "Foolamour" POUR I = 1 A 5 SI "B"<MonTableau[I]<="M" ALORS Trace(MonTableau[I]) // Affiche Dupond et Foolamour FIN FIN // Dclaration de structures O est une ST1 P est une ST2 // Dclaration et instanciation // de structures dynamiques P1 est une structure ST1 dynamique P1 = O P2 est une structure ST2 dynamique P2 = O // Comparaison SI P1 = P2 ALORS ... Texte = "Guide de Programmation" Texte[[10]] // Retourne "P" Texte[[10 16]] // Retourne "Program" Texte[[10 ]] // Retourne "Programmation" Texte[[ 13]] // Retourne "Guide de Prog" Texte[[10 sur 4]] // Retourne "Prog" Texte + " de WinDev" // Retourne "Guide de Programmation // de WinDev" SI Texte [= "Guide" ALORS ... Trace(Texte) WLangage.book Page 71 Mardi, 23. avril 2013 1:59 13 72 Partie 2 : Syntaxe de base du WLangage 3.6.2 L'oprateur [[ et ]] L'oprateur [[ et ]] permet d'extraire et de remplacer une sous chane. Quelques exemples : CHAINEAEXTRAIRE[[<Position>]] : Extrait un caractre dans une chane en fonction de sa position. CHAINEAEXTRAIRE[[<Position>]] = <Nouvelle chane> : Remplace le caractres de la chane par la nouvelle chane. CHAINEAEXTRAIRE[[<Dbut> <Fin>]] : Extrait une chane de caractres dans une chane en fonction de ses positions de dbut et de fin. CHAINEAEXTRAIRE[[<Dbut> ]] : Extrait une chane de caractres partir de <Dbut> jusqu' la fin de la chane. CHAINEAEXTRAIRE[[ <Fin>]] : Extrait une chane de caractres du dbut de la chane jusqu' <Fin>. CHAINEAEXTRAIRE[[<Dbut> sur <Nombre>]] : Extrait un nombre dfini de caractres en fonction de la position de dbut et du nombre de caractres souhait. Attention : Si vous utilisez une procdure manipu- lant les chanes avec les oprateurs [[ ]], mfiez- vous de la syntaxe utilise. Vous pouvez sans le vouloir modifier vos chanes de caractres. Par exemple, la procdure suivante peut entraner la modification d'une partie de la chane. Pour viter toute modification de la chane initiale, il est ncessaire de passer le paramtre par valeur : soit en utilisant des parenthses autour du para- mtre dans l'appel de la procdure soit en utilisant le mot-cl Local dans l'en-tte de la procdure 3.6.3 Oprateurs sur les chanes de carac- tres et UNICODE Les oprateurs disponibles sont : "+" : Pour concatner des chanes. "[[" et "]]" (double crochets ouvrant et double cro- chets fermant) : Oprateur d'extraction d'une sous-chane. Oprateur "+" Il est possible de concatner deux chanes UNI- CODE. Il n'est pas possible de concatner une chane UNICODE et une chane ANSI. Remarque : Aucune erreur de compilation n'est dtecte si la concatnation de deux chanes AINSI est affecte une chane UNICODE (et inverse- ment). Cependant, une erreur WLangage appara- tra en excution. Oprateur "[[" et "]]" Toutes les syntaxes de l'oprateur [[ ]] sont disponi- bles sur les chanes UNICODE. Si la chane passe en paramtre est au format ANSI, l'oprateur [[ ]] renvoie le rsultat au format ANSI. Si la chane passe en paramtre est au format UNICODE, l'oprateur [[ ]] renvoie le rsultat au for- mat UNICODE. Les paramtres de position et de longueur sont donns en nombre de caractres. Remarque : Aucune erreur de compilation n'est dtecte si le rsultat de l'oprateur [[ ]] sur une chane ANSI est affect une chane UNICODE (et inversement). Cependant, une erreur WLangage apparatra en excution. 3.6.4 Position dans une chane de caract- res Le premier caractre est en position 1 (et non en position 0). La fonction Position retourne la position de dpart d'une chane de caractres donne l'intrieur d'une autre chane de caractres. 3.6.5 Fonctions du WLangage Les chanes de caractres peuvent galement tre manipules grce aux fonctions : Droite. Gauche. Milieu. Procdure P(sChane) SI sChane alors sChane="5" //Appel de la procdure par la // ligne : // p(sVar[[3 ]]) WLangage.book Page 72 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 73 3.7 Oprateur sur adresse L'oprateur & retourne l'adresse d'une variable sous la forme d'un entier. Syntaxe <Rsultat> = &<Nom de la variable> Remarques L'oprateur & permet de connatre l'adresse de toutes les formes de variables (simples et compo- ses). L'oprateur & est surtout utilis pour passer des adresses la fonction AppelDLL32. L'oprateur & ne permet pas de rcuprer l'adresse : d'un champ d'une rubrique HyperFileSQL L'oprateur & affiche alors une erreur lors de la compilation du projet. En effet pour ces deux l- ments, les adresses peuvent changer tout moment. Si une "Chane de caractres" doit tre passe par adresse la fonction AppelDLL32, il ne faut pas utiliser une variable de type Chane : l'adresse de la chane peut changer tout moment. il est conseill d'utiliser le type Chane ASCIIZ. Si la variable est locale, le rsultat retourn par l'oprateur & doit tre utilis uniquement dans le traitement dans lequel la variable a t dclare. Lorsque le traitement en cours sera termin, l'adresse sera invalide et ne devra plus tre utili- se. 3.8 Oprateurs d'indirection Les oprateurs { et } permettent d'accder un champ, une variable ou une rubrique dun fichier de donnes en construisant dynamiquement le nom du champ, de la variable ou de la rubrique. L'intrt des oprateurs { et } est multiple : passer en paramtre un nom de champ ou de rubrique construire le nom d'un champ ou de rubrique par programme Indirection simple Indirection dans une procdure Indirection avec variable i est un entier z est une chane ASCIIZ sur 50 t est un tableau de 10 rels s est compos de Age est un entier Nom est une chane ASCIIZ sur 50 FIN adr est un entier adr = &i adr = &z adr = &z + 2 //adresse du 3me //caractre de la Chane adr = &t //adresse du dbut du //tableau (donc du 1er //lment)adr = &t[5] //adresse du 5me lment adr = &s //adresse de la structure //et donc de s.age adr = &s.age adr = &s.nom {"NOM"} = NomCli // est quivalent NOM=NomCli {"NOM"} = {"CL.NOMCLI"} // est quivalent NOM=CL.NOMCLI {"FENCLI.NOM"} = NomCli //est quivalent //FENCLI.NOM=NomCli {"FENCLI"+".NOM"} = NomCli //est quivalent //FENCLI.NOM=NomCli NomChamp est une chane NomChamp = "SAISIE1" // SAISIE1 est le nom du champ // appel d'une procdure rendant // un champ invisible INVISIBLE(NomChamp) PROCEDURE INVISIBLE(NChamp) {NChamp} .. Visible = Faux NomAlias est une chane NomAlias = FenPrecedente() //NOM est le nom du champ //NomCli est la valeur affecter {NomAlias+".NOM"} = NomCli Abrev est une chane NomRub est une chane {Abrev+"."+NomRub} = NomCli {Abrev+"."+NomRub} = {NomChamp} WLangage.book Page 73 Mardi, 23. avril 2013 1:59 13 74 Partie 2 : Syntaxe de base du WLangage Indirection avec une classe Syntaxe Indirection simple {<Expression>} <Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expres- sion correspond une chane vide (""), une erreur du WLangage est gnre. Indirection sur un membre de classe {<Expression>} <Expression> : permet d'identifier le membre de la classe. Si le membre est : global, utilisez la syntaxe : {"::NomDuMembre"} nest pas global, utilisez la syntaxe : {":NomDu- Membre"} Si cette expression correspond une chane vide (""), une erreur du WLangage est gnre. Indirection en spcifiant le type de llment (opti- mise la vitesse dexcution) {<Expression>, <Type>} <Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expres- sion correspond une chane vide (""), une erreur du WLangage est gnre. <Type> : Constante permettant de prciser le type de l'lment recherch : Quand utiliser l'indirection ? L'indirection peut tre utilise par exemple : pour accder la valeur d'un lment (champ, variable, rubrique, ...) pour utiliser une proprit Remarque : Pour dsigner l'objet en cours, utilisez les mots - cls suivants : MoiMme : le champ en cours MaFentre : la fentre en cours MaPage : la page en cours MonEtat : l'tat en cours MaSource : la source de donnes courante MonFichier : le fichier de donnes qui a dclen- ch le trigger en cours. 3.9 Oprateurs divers Les oprateurs divers regroupent les oprateurs suivants : "(" et ")" : Les parenthses "[" et "]" : Les crochets "," : La virgule "." : Le point ":" : Les deux points ";" : Le point virgule ".." : Le double point "..." : Le triple point "//" : La double barre 3.9.1 Les parenthses Les parenthses permettent : de regrouper les diffrents lments d'une opra- tion tout en indiquant l'ordre de priorit. Par exemple : // Dclaration d'une classe avec // deux membres Maclasse est une classe Membre1 est une chane Membre2 est une chane FIN //Affichage de la valeur d'un membre PROCEDURE GLOBALE AfficheMembre(... Numro) // Rcupration de la valeur du // membre global choisi Valeur est une chane = ... {"::Membre"+Numro} Info(Valeur) indChamp Elment recherch parmi les champs indCon- nexion Elment recherch parmi les con- nexions indEtat Elment recherch parmi les tats indFentre Elment recherch parmi les fentres indFichier Elment recherch parmi les fichiers de donnes indGPW Elment recherch parmi les lments du groupware utilisateur indLiaison Elment recherch parmi les liaisons indPage Elment recherch parmi les pages indParam- treRequte Elment recherch parmi les param- tres des requtes IndRubrique Elment recherch parmi les rubriques IndVariable Elment recherch parmi les variables {s_NomChamp} = 10 ValeurChamp = {s_NomChamp} {s_NomChamp}..Hauteur = 10 Si (A-B)*5 ALORS .... WLangage.book Page 74 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 75 d'indiquer les diffrents paramtres d'une fonc- tion du WLangage. Par exemple : 3.9.2 Les crochets Les crochets sont des oprateurs d'indexation. Ils permettent de dsigner facilement des objets indexs. Quelques exemples : Elment d'une rubrique HyperFileSQL de type Tableau. Exemple : Client.Adresse[1] Elment d'un tableau dfini en WLangage. Exemple : MonTableau est un tableau de 5 chanes MonTableau [1] = "Dupond" Champ d'une fentre de type combo, liste, tableau, slecteur, interrupteur. Exemples : combo : MaCombo[1] = "Montpellier" interrupteur : Interrupteur[1] = Vrai 3.9.3 La virgule La virgule permet de sparer : diffrentes dclarations de variables d'un mme type effectues sur une mme ligne. Par exemple : les diffrents paramtres d'une fonction du WLangage. Par exemple : 3.9.4 Le point virgule Le point virgule permet de sparer diffrentes ins- tructions crites sur la mme ligne. Par exemple : 3.9.5 Deux points Les deux points permettent d'accder aux mem- bres et aux mthodes des objets. Si les deux points sont doubls, ils permettent d'accder aux membres globaux et aux mthodes globales d'une classe. 3.9.6 Le point Le point permet d'accder un sous lment. Quel- ques exemples : accs un champ d'une fentre / page : MaFe- ntre.ChampSaisieDate accs une variable globale d'une fentre / page : MaFentre.gDure accs une rubrique d'un fichier de donnes : Client.Nom accs une colonne de table : Table.Colonne1 3.9.7 Le double point Le double point permet d'accder une proprit d'un champ, d'une fentre, d'un tat, d'un fichier de donnes, d'une rubrique, d'une variable. Quelques exemples : 3.9.8 Triple point L'oprateur "..." (triple point) permet de continuer une ligne logique sur la ligne physique suivante. Par exemple : La ponctuation suite "..." doit ncessairement tre utilise en fin de ligne et non pas au milieu d'une ligne. Aucun caractre ne doit suivre les "..." (mis part les commentaires). A partir de la version 12, l'oprateur "" n'est plus obligatoire pour continuer la ligne suivante : les paramtres de fonctions ou de procdures les oprandes de droite pour les oprateurs arith- mtiques et logiques. 3.9.9 La double barre La double barre permet de mettre en commentaire le texte suivant ce signe. Ce texte ne sera pas pris en compte lors de la compilation du code et lors de l'excution du projet. Par exemple : dCopieImage(Image1, image2) MonExemple1, MonExemple2 ... sont des chanes dCopieImage(Image1, image2) I est un entier;M est une chane Ascenseur..Bormax = 200 FraisDePort..Titre = ... "Fentre des frais de port" MonEtat..MargeBasse = 20 MaPolice..Nom = "Arial" SI (CodeFamille="LV") ET ... (CodeFamille="MO") ALORS Traitement FIN Libell = "Veuillez saisir le "+ ... "nom du client." // Oprateurs arithmtiques // (+, -, /, *) et logiques (ET, OU) n est un entier = 5 + 6 // Recherche dans une chane Machane est une chane = ... "WinDev est formidable" SI Position(Machane, "W")<>0 ALORS Info("trouv") //Rsultat FIN WLangage.book Page 75 Mardi, 23. avril 2013 1:59 13 76 Partie 2 : Syntaxe de base du WLangage 4. LES INSTRUCTIONS DU WLANGAGE 4.1 Instructions composes Plusieurs types dinstructions composes sont dis- ponibles en WLangage : Instructions conditionnelles SELON : Excution d'une action ou d'une autre en fonction d'une expression SI : Excution d'une action ou d'une autre en fonction d'une condition Instructions rptitives BOUCLE : Bloc d'instructions rpt l'infini POUR : Bloc d'instructions rpt jusqu' une valeur limite POUR TOUT : Parcours HyperFileSQL (parcours complet, parcours avec recherche, parcours avec filtre) TANTQUE : Bloc d'instructions rpt en fonc- tion d'une condition Instruction de branchement : GOTO : Branche- ment une tiquette donne 4.1.1 Instruction BOUCLE Le bloc d'instructions est rpt l'infini. Le nom- bre d'itrations du bloc d'instructions n'est pas con- trl, il n'y a pas d'expression valuer. Syntaxe Syntaxe 1 : Boucle avec sortie selon une condi- tion "SI" BOUCLE ... SI <Condition> ALORS SORTIR ... FIN Syntaxe 2 : Boucle avec sortie selon une condi- tion"TANTQUE" BOUCLE ... A FAIRE TANTQUE <Condition> Syntaxe 3 : Boucle avec sortie selon le nombre ditrations BOUCLE (<Nombre ditration>) ... FIN Code excuter Le code excuter est plac entre les instructions BOUCLE et FIN. Sortir d'une boucle Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle et sortie du traite- ment (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle et sortie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle et excution de la suite du traitement en cours. La fonction Ferme permet de sortir de la boucle et de fermer la fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction Continuer : Boucle sans fin Lors de la compilation du projet, une boucle sans fin vidente (absence des instructions SORTIR, RETOUR ou RENVOYER) est signale par un war- ning. BOUCLE //lecture d'une ligne du fichier //texte UneLigne = fLitLigne(NumFic) SI UneLigne = EOT ALORS SORTIR TraiteLigne(UneLigne) FIN BOUCLE ... SI <Condition> ALORS CONTINUER // Retour au mot-cl BOUCLE ... FIN WLangage.book Page 76 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 77 4.1.2 Instruction GOTO L'instruction GOTO permet d'excuter un code iden- tifi par une tiquette donne. Important : L'tiquette doit obligatoirement tre dfinie dans le mme traitement que l'instruction GOTO. Syntaxe ... GOTO <Nom de l'tiquette> ... <Nom de l'tiquette> : <Code de l'tiquette> Code de l'tiquette Aprs excution du code de l'tiquette, le pro- gramme excute les lignes de code suivant directe- ment l'tiquette. Limites des tiquettes Dans un mme traitement (ou procdure), il ne peut pas exister plusieurs tiquettes de mme nom. Si une tiquette n'est utilise par aucune instruc- tion GOTO, un warning apparat lors de la compila- tion du projet. tiquette et instructions POUR et POUR TOUT L'instruction GOTO ne permet pas d'accder direc- tement dans le bloc d'instructions d'un POUR ou d'un POUR TOUT. Ainsi, ce code provoque une erreur la compilation du projet : 4.1.3 Instruction POUR Le bloc d'instructions est rpt en modifiant une variable de contrle puis en la comparant une valeur limite, avant chaque dbut du bloc d'instruc- tions. Le bloc d'instructions est alors excut pour cha- cune des valeurs que prend successivement la variable de contrle. La variable de contrle reoit la valeur initiale lors de la premire entre dans l'instruction POUR. Syntaxe POUR <Variable de contrle> = <Valeur ini- tiale> A <Valeur finale> [PAS <x>] ... FIN Code excuter Le code excuter est plac entre les instructions POUR et FIN. Pas d'incrmentation Le pas d'incrmentation de l'instruction POUR doit tre constant. Si le pas d'incrmentation est sus- ceptible de varier chaque rptition, un warning apparat lors de la compilation du projet. Sortir d'une boucle de type POUR Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle POUR et sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle POUR et sor- tie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle POUR et excution de la suite du traitement en cours. La fonction Ferme permet de sortir de la boucle POUR et de fermer la fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction Continuer : Res = fOuvre(NomFichier, FOEcriture) SI Res = -1 ALORS GOTO ERROUVRE Res = fEcrit(Res,"Traitement OK") SI Res = -1 ALORS GOTO ERRECRIT ... RENVOYER Vrai ERROUVRE : Info("Fichier "+NomFichier+... " ne peut tre ouvert. "+... "Vrifiez son existence.") RENVOYER Faux
ERRECRIT : Info("Il est impossible d'crire"... "dans + le fichier "+NomFichier) RENVOYER Faux POUR Indice = 1 A 10 EtiqReprise : Res ++ FIN GOTO EtiqReprise POUR Indice = 1 A 10 Tableau[Indice] = MaVariable + 10 FIN POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ... WLangage.book Page 77 Mardi, 23. avril 2013 1:59 13 78 Partie 2 : Syntaxe de base du WLangage Dans ce cas, la variable de contrle est automati- quement incrmente. 4.1.4 Instruction POUR TOUT / POUR TOUS, parcours de fichiers de donnes L'instruction POUR TOUT permet d'effectuer diff- rents types de parcours HyperFileSQL : parcours complet, parcours complet selon une cl spcifie, parcours avec filtre, parcours avec filtre selon une cl spcifie, parcours avec filtre sur la cl de parcours. Remarque : Les instructions POUR TOUT et POUR TOUS sont acceptes. Dans cette documentation, seule l'instruction POUR TOUT est utilise et peut tre remplace par POUR TOUS ou POUR CHAQUE. Syntaxe Parcours complet POUR TOUT <Fichier> [<Sens>] ... FIN Remarque : La cl de parcours est dtermine automatiquement par le moteur HyperFileSQL. Parcours complet selon une cl spcifie POUR TOUT <Fichier> SUR <Rubrique cl> [<Sens>] ... FIN Parcours avec filtre POUR TOUT <Fichier> AVEC "<1re Condition> [ET/OU/PAS <2me Condition> [ET/OU/PAS...<Nme Condition>]]" [<Sens>] ... FIN Remarque : La cl de parcours est dtermine automatiquement par le moteur HyperFileSQL. Parcours avec filtre selon une cl spcifie POUR TOUT <Fichier> AVEC "<1re Condition> [ET/OU/PAS <2me Condition> [ET/OU/PAS...<Nme Condition>]]" [<Sens>] SUR <Rubrique cl> ... FIN Parcours avec slection sur la cl de parcours 1. Filtre de comparaison par rapport une valeur POUR TOUT <Fichier> AVEC ... <Rubrique cl> [=][<=][>=] <Valeur> [<Sens>] ... FIN 2. Filtre de comparaison par rapport un inter- valle de valeurs POUR TOUT <Fichier> AVEC <Rubrique cl> = ... <Valeur Minimale> A <Valeur Maximale> [<Sens>] ... FIN ou SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR ... FIN POUR TOUT Client // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN POUR TOUT Client SUR NumClient // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN POUR TOUT Client AVEC ... "VilleClient = 'Boston'" ListeAjoute(ListeClient,... Client.NumClient) FIN Ville = "Paris" POUR TOUT Client AVEC ... "VilleClient = '"+Ville+... "' et AgeClient >= 21" // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN POUR TOUT Client AVEC ... "VilleClient = "+... "'Boston'" SUR NumClient // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FINVille = "Paris" POUR TOUT Client AVEC ... "VilleClient = "+... "'"+Ville+"' et AgeClient >= 21"... SUR NumClient // Ajout des clients dans la liste ListeAjoute(ListeClient, ... Client.NumClient) FIN WLangage.book Page 78 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 79 POUR TOUT <Fichier> AVEC ... <Valeur Minimale> <= <Rubrique cl> <= ... <Valeur Max> [<Sens>] ... FIN Parcours avec recherche gnrique "Commence par" POUR TOUT <Fichier> AVEC <Rubrique cl> [= ... <Dbut de la valeur recherche> [<Sens>] ... FIN Code excuter Le code excuter est plac entre les instructions POUR TOUT et FIN. Filtre (syntaxes 2) La syntaxe gnrale d'un filtre a la forme suivante : "<Nom de la rubrique> <Oprateurs> <Valeur de la rubrique>" Par exemple : Les oprateurs accepts sont variables en fonction du type des rubriques utilises dans la condition : Remarques : Les chanes constantes doivent tre encadres de simples quotes. Par exemple : "NomClient = '"+Client+"'" Le <Nom de la rubrique> ne doit comporter que des lettres, des chiffres et des caractres souli- gns ("_"). Si le <Nom de la rubrique> contient d'autres caractres (apostrophe, ...), le nom de la rubrique doit tre entour de doubles quotes. Par exemple : "e_mail@"]'fr' Les comparaisons entre chanes se font en fonc- tion de la valeur ASCII des caractres et non pas dune faon lexicographique ('a' > 'Z'). Les mmos binaires et les cls composes ne peuvent pas faire partie d'une <Valeur de la rubri- que>. Si une <Valeur de la rubrique> contient une sim- ple quote (ou une double quote), il faut faire pr- cder cette simple quote (ou double quote) par un anti-slash. // Comparaison par rapport une // valeur POUR TOUT Client AVEC ... NomClient = "Dupont" // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NomClient) FIN // Comparaison par rapport une // valeur POUR TOUT Commande AVEC ... DateCommande <= "31/12/2003" // Ajout des commandes dans la liste ListeAjoute(ListeCde, ... Commande.NumCommande) FIN // Comparaison par rapport une // liste de valeurs POUR TOUT Commande AVEC ... DateCommande = ... "01/01/2003" A "31/12/2003" // Ajout des commandes dans la liste ListeAjoute(ListeCde,... Commande.NumCommande) FIN // Comparaison par rapport un // intervalle de valeurs POUR TOUT Commande AVEC ... "01/01/2003" ... <= DateCommande <= "31/12/2003" // Ajout des commandes dans la liste ListeAjoute(ListeCde, ... Commande.NumCommande) FIN POUR TOUT Client AVEC ... NomClient [= "Du" // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN "NomClient > 'Dupont' et ... CodePos = 34 ou AgeClient >= 32" <> Diffrent 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 "chane" uniquement ] Contient Valable pour les types "chane" uniquement ]= Commence par Valable pour les types "chane" uniquement WLangage.book Page 79 Mardi, 23. avril 2013 1:59 13 80 Partie 2 : Syntaxe de base du WLangage Sortir d'une boucle de type POUR TOUT Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle POUR TOUT et sor- tie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle POUR TOUT et sortie du traitement (ou de la procdure) 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 fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. Comportement du parcours automatique des fichiers en fonction du mode de sortie de la boucle Le parcours automatique des fichiers de donnes a un comportement diffrent sil se termine automa- tiquement ou si la sortie est effectue par les ins- tructions SORTIR, RETOUR, Ferme, Si le parcours se termine automatiquement : la position du fichier de donnes avant le par- cours est restaure. l'ventuel filtre ncessaire au parcours est dsac- tiv. Si le parcours est interrompu (instructions SORTIR, RETOUR, RENVOYER, Ferme, ) : la position du fichier de donnes avant le par- cours n'est pas restaure. l'ventuel filtre ncessaire au parcours n'est pas dsactiv. Il doit tre dsactiv manuellement (fonction HDsactiveFiltre). Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction CONTINUER : 4.1.5 Instruction POUR TOUT / POUR TOUS, parcours de chanes L'instruction POUR TOUT permet d'effectuer diff- rents types de parcours de chanes : parcours des sous-chanes spares par un sparateur. Parcours des occurrences d'une chane dans une autre Remarque : Les instructions POUR TOUT et POUR TOUS sont acceptes. Dans cette documentation, seule l'instruction POUR TOUT est utilise et peut tre remplace par POUR TOUS ou POUR CHAQUE. Syntaxe Parcours des sous-chanes spares par un spa- rateur POUR TOUTE CHANE <Sous-chane> DE ... <Chane initiale> ... [SEPAREE PAR <Sparateur>] [<Sens>] ... FIN Cette syntaxe permet de parcourir toutes les sous- chanes de la chane <Chane initiale> spares par le sparateur <Sparateur>. Si <Chane initiale> correspond une chane vide, le parcours n'est pas effectu. A chaque itration, la variable <Sous-chane> est renseigne avec la sous-chane en cours. Le comportement est indtermin si la chane ini- tiale ou le sparateur est modifi lors du parcours. Remarque : Si <Chane initiale> se termine par le sparateur, <Sous-Chane> renvoie une chane vide la fin. Dans le cas contraire, <Sous-Chane> cor- respond au dernier lment extrait. Parcours des occurrences dune chane dans une autre chane 1. Sans option POUR TOUTE POSITION <Position> DE <Recher- che>... DANS <Chane initiale> [<Sens>] ... FIN POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR TOUT // Passage l'enregistrement // suivant ... FIN // Rcupre la liste des librairies // charges en mmoire ListeLibrairie est une chane ListeLibrairie = ListeDLL() UneLibrairie est une chane // Pour chaque librairie POUR TOUTE CHANE UneLibrairie ... DE ListeLibrairie SEPAREE PAR RC WLangage.book Page 80 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 81 Cette syntaxe permet de parcourir toutes les posi- tions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est ren- seigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane ini- tiale ou la chane recherche est modifie lors du parcours. 2. Avec option POUR TOUTE POSITION <Position> DE <Recher- che>... DANS <Chane initiale> AVEC <Options> ... FIN Cette syntaxe parcourt toutes les positions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est ren- seigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane ini- tiale ou la chane recherche est modifie lors du parcours. Code excuter Le code excuter est plac entre les instructions POUR TOUT et FIN. Parcours de chanes et UNICODE Les paramtres <Sous-chane>, <Chane initiale>, <Sparateur> et <Recherche> peuvent tous correspondre : soit des chanes ANSI. soit des chanes UNICODE. Cependant, il n'est pas possible d'utiliser des cha- nes ANSI et des chanes UNICODE dans la mme syntaxe. 4.1.6 Instruction POUR TOUT / POUR TOUS, parcours de champs L'instruction POUR TOUT permet d'effectuer diff- rents types de parcours de champs (listes, tables, zones rptes) : Parcours des lments du champ. Parcours des valeurs des lments slectionns. Parcours des indices des lments slectionns. Remarque : Les instructions POUR TOUT et POUR TOUS sont acceptes. Dans cette documentation, seule l'instruction POUR TOUT est utilise et peut tre remplace par POUR TOUS ou POUR CHAQUE. Syntaxe Parcours des lments dun champ POUR TOUTE LIGNE DE <Champ> ... FIN Cette syntaxe permet de parcourir toutes les lignes d'un champ Liste, table ou zone rpte. Pour chaque ligne parcourue : <Nom du champ> renvoie l'indice de la ligne en cours. <Nom du champ>[<Nom du champ>] renvoie tou- tes les colonnes spares par des TAB. <Nom de la colonne> renvoie la valeur de la colonne pour la ligne en cours de parcours. Le parcours n'a aucune influence sur la slection courante. Le comportement est indtermin si le nombre d'lments du champ est modifi pendant la bou- cle de parcours. Remarque : Lors du parcours des lignes d'une table, l'affichage de cette table est bloqu. La fonc- tion MultitcheRepeint n'est pas prise en compte. // Le fichier "C:\Exports.TXT" // contient la liste des produits // exports spars par des ";" // Rcupration de chaque produit ProduitExport est une chane ProduitExport = fChargeTexte(... "C:\Exports.TXT") AncPosition est un entier PosActuelle est un entier // Pour chaque produit POUR TOUTE POSITION PosActuelle ... DE ";" DANS ProduitExport // Ajoute le produit dans la // liste ListeProduit ListeAjoute(ListeProduit, ... ProduitExport[[AncPosition ... + 1 A PosActuelle - 1]] // Mmorisation de la position // AncPosition = PosActuelle FIN // Pour chaque utilisateur list // dans la liste ListeUtilisateur POUR TOUTE LIGNE DE ListeUtilisateur // Envoi d'un email //EnvoieMessage(ColNom, ColEdmail) FIN WLangage.book Page 81 Mardi, 23. avril 2013 1:59 13 82 Partie 2 : Syntaxe de base du WLangage Parcours des lments slectionns dans un champ POUR TOUTE LIGNE SELECTIONNEE DE <Champ> ... FIN Cette syntaxe permet de parcourir toutes les lignes slectionnes d'un champ Liste, table ou zone rpte. Pour chaque ligne parcourue : <Nom du champ> renvoie l'indice de la ligne en cours. <Nom du champ>[<Nom du champ> renvoie tou- tes les colonnes spares par des TAB. <Nom de la colonne> renvoie la valeur de la colonne pour la ligne en cours de parcours. Le parcours n'a aucune influence sur la slection courante. Le comportement est indtermin si le nombre d'lments du champ est modifi pendant la bou- cle de parcours. Parcours des indices des lments slectionns POUR TOUTE LIGNE SELECTIONNEE <Indice> ... DE <Champ> ... FIN Cette syntaxe permet de parcourir toutes les lignes slectionnes d'un champ Liste, table ou zone rpte. Pour chaque ligne parcourue, la variable <Indice> renvoie l'indice de la ligne slectionne en cours. Pour accder une valeur particulire d'une colonne, utilisez la syntaxe <Colonne>[<Indice>] La ligne courante de la table est toujours dplace pendant le parcours. Le comportement est indtermin si le nombre d'lments du champ est modifi pendant la bou- cle de parcours. Parcours des lignes dune table Lors du parcours des lignes d'une table : l'affichage de cette table est bloqu. La fonction MultitcheRepeint n'est pas prise en compte. il ne faut pas modifier la ou les lignes slection- nes et/ou la ligne en cours (fonction TableSe- lectMoins, TableSelectPlus, ...). dans le cas d'une table fichier, dans la boucle de parcours, l'enregistrement en cours est l'enregis- trement trait par le parcours. 4.1.7 Instruction POUR TOUT / POUR TOUS, parcours de tableaux L'instruction POUR TOUT permet d'effectuer diff- rents types de parcours de tableaux : Parcours des lments du tableau. Parcours des valeurs des lments du tableau. Remarque : Les instructions POUR TOUT et POUR TOUS sont acceptes. Dans cette documentation, seule l'instruction POUR TOUT est utilise et peut tre remplace par POUR TOUS ou POUR CHAQUE. Syntaxe Parcours des lments dun tableau POUR TOUT ELEMENT <Variable> DE ... <Tableau> [<Sens>] ... FIN A chaque itration, la variable <Variable> fait direc- tement rfrence l'lment courant dans le tableau. Si la valeur de <Variable> est modifie, l'lment courant dans le tableau est modifi. En sortie de boucle (Fin normale ou instruction SORTIR), la valeur de <Variable> est affecte avec celle du dernier lment parcouru, mais <Variable> ne fait plus directement rfrence l'lment dans le tableau. Tous les types de tableaux sont disponibles : auto- matiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours. // Pour chaque utilisateur // slectionn dans la table // TableUtilisateur POUR TOUTE LIGNE SELECTIONNEE DE ... TableUtilisateur // Envoi d'un email EnvoieMessage(ColNom, ColEdmail) FIN // Parcourir les lments d'un // tableau de rels pour calculer // la somme // Remplissage du tableau TabCalcul est un tableau de 3 rels TabCalcul[1] = 12.5 TabCalcul[2] = 10 TabCalcul[3] = 7.5 // Calcul de la somme // UnElment est un rel // SommeTotal est un rel POUR TOUT ELEMENT UnElment DE ... TabCalcul SommeTotal += UnElment FIN WLangage.book Page 82 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 83 Parcours des valeurs des lments dun tableau POUR TOUT ELEMENT (<Valeur>) DE <Tableau> [<Sens>] ... FIN A chaque itration, la variable <Valeur> est affecte avec la valeur de l'lment parcouru. Si la valeur de <Valeur> est modifie, l'lment courant dans le tableau n'est pas modifi. Tous les types de tableaux sont disponibles : auto- matiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours. 4.1.8 Instruction POUR TOUT / POUR TOUS, parcours de tableaux associatifs L'instruction POUR TOUT permet deffectuer diff- rents types de parcours de tableaux associatifs : Parcours des lments du tableau associatif. Parcours des valeurs des lments du tableau associatif. Parcours des lments "cl" du tableau associa- tif. Remarque : Les instructions POUR TOUT et POUR TOUS sont acceptes. Dans cette documentation, seule l'instruction POUR TOUT est utilise et peut tre remplace par POUR TOUS ou POUR CHAQUE. Syntaxe Parcours des lments dun tableau POUR TOUT ELEMENT <Variable> DE ... <Tableau> [<Sens>] ... FIN A chaque itration, la variable <Variable> fait direc- tement rfrence l'lment courant dans le tableau. Si la valeur de <Variable> est modifie, l'lment courant dans le tableau est modifi. En sortie de boucle (Fin normale ou instruction SORTIR), la valeur de <Variable> est affecte avec celle du dernier lment parcouru, mais <Variable> ne fait plus directement rfrence l'lment dans le tableau. Parcours des lments dun tableau selon la cl dindexation POUR TOUT ELEMENT <Variable>, <VariableCl> DE <Tableau> [<Sens>] ... FIN A chaque itration : la variable <Variable> fait directement rfrence llment courant dans le tableau. Si la valeur de <Variable> est modifie, l'lment courant dans le tableau est modifi. la variable <VariableCl> contient la valeur de la cl de llment. Cette valeur est en lecture uni- quement et ne peut pas tre modifie. En sortie de boucle (Fin normale ou instruction SORTIR), la valeur de <Variable> est affecte avec celle du dernier lment parcouru, mais <Variable> ne fait plus directement rfrence l'lment dans le tableau. Parcours des lments <cl > du tableau POUR TOUT ELEMENT <Variable> DE <Tableau> = <Cl> [<Sens>] ... FIN Cette syntaxe parcourt tous les lments du tableau ayant la valeur <Cl> spcifie. A chaque itration, la variable <Variable> fait directement rfrence l'lment courant dans le tableau. Si la valeur de <Variable> est modifie, l'lment cou- rant dans le tableau est modifi. Cette syntaxe est utile dans le cas des parcours de tableaux associatifs avec doublons. En effet, dans un tableau associatif sans doublon, le nombre d'lments parcourus peut tre 0 ou 1. Dans un tableau associatif avec doublons, le nombre d'l- ments parcourus peut tre 0 ou N. // Dclaration d'un // tableau associatif d'entiers // Tableau index sur des chanes // et sans doublon taIDParClient est un tableau ... associatif d'entiers taIDParClient["A"] = 55 // ajout de l'id du client "A" taIDParClient["B"] = 321 // ajout de l'id du client "B" taIDParClient["A"] = 56 // modification de l'id du client "A" // nIdentifiant est un entier // parcours de tous les identifiants // 56 // 321 POUR TOUT ELEMENT nIdentifiant ... DE taIDParClient ... Trace(nIdentifiant) FIN WLangage.book Page 83 Mardi, 23. avril 2013 1:59 13 84 Partie 2 : Syntaxe de base du WLangage Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de par- cours). En sortie de boucle (Fin normale ou instruction SORTIR), la valeur de <Variable> est affecte avec celle du dernier lment parcouru, mais <Variable> ne fait plus directement rfrence l'lment dans le tableau. Parcours des valeurs des lments <cl > du tableau selon la cl dindexation POUR TOUT ELEMENT <Variable> , <VariableCl> DE <Tableau> = <Cl> [<Sens>] ... FIN Cette syntaxe parcourt tous les lments du tableau ayant la valeur <Cl> spcifie. A chaque itration : la variable <Variable> fait directement rfrence l'lment courant dans le tableau. Si la valeur de <Variable> est modifie, l'lment courant dans le tableau est modifi. la variable <VariableCl> contient la valeur de la cl de l'lment. Cette valeur est en lecture uni- quement et ne peut pas tre modifie. Cette syntaxe est utile dans le cas des parcours de tableaux associatifs avec doublons. En effet, dans un tableau associatif sans doublon, le nombre d'lments parcourus peut tre 0 ou 1. Dans un tableau associatif avec doublons, le nombre d'l- ments parcourus peut tre 0 ou N. Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de par- cours). En sortie de boucle (Fin normale ou instruction SORTIR), la valeur de <Variable> est affecte avec celle du dernier lment parcouru, mais <Variable> ne fait plus directement rfrence l'lment dans le tableau. 4.1.9 Instruction SELON L'instruction conditionnelle SELON permet de choi- sir d'excuter une action ou une autre en fonction de la valeur d'une expression. Syntaxe SELON <Variable de comparaison> Cas <Expression1> : <Action1> Cas <Expression2> : <Action2.1> <Action2.2> Cas <Expression3> <Action3> Cas <Expression4>, <Expression5> : <Action4> Cas <Expression6>, <Expression7> : <Action5> Cas <Expression8>, <Expression9> <Action6> Cas <Expression Min> A : <Action7> Cas A <Expression Max> : <Action8> Cas <Expression Min> A <Expression Max> : <Action9> Cas = <Expression> : <Action10> Cas ~ = <Expression> : <Action11> Cas ~~ <Expression> : <Action12> Cas [= <Expression> : <Action13> Cas > <Expression> : <Action14> Cas >= <Expression> : <Action15> Cas < <Expression> : <Action16> Cas <= <Expression> : <Action17> Cas <Expression Min> <= * <= <Expression Max> : <Action18> Cas <Expression Min> < * <= <Expression Max> : <Action19> Cas <Expression Min> <= * < <Expression Max> : <Action20> Cas <Expression Min> < * < <Expression Max> : <Action21> ... [ AUTRE[S] CAS : <Action autre(s) cas> OU AUTRE[S] CAS : <Action autre(s) cas> OU AUTRE[S] CAS <Action autre(s) cas> ] FIN Mot-cl AUTRE CAS AUTRE CAS doit tre la dernire instruction utilise dans l'instruction conditionnelle SELON. Instruction SORTIR SELON Linstruction SORTIR SELON permet de sortir dune instruction SELON et dexcuter la suite du traite- ment en cours. SELON Quantit CAS 1 : Comment = "Promotions" CAS 2 : Comment = "Vous en "+... "achetez deux "+... "et nen payez qu'un seul" AUTRE CAS : Comment = "" FIN WLangage.book Page 84 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 85 4.1.10 Instruction SI L'instruction conditionnelle SI permet de choisir d'excuter une action ou une autre en fonction d'une condition. Syntaxe Syntaxe 1 SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse> ] FIN Syntaxe 2 SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse> ] Syntaxe 3 SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse> ] FIN Syntaxe 4 SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse>] Syntaxe 5 SI <Condition 1> ALORS <Action si condition 1 vraie> [SINON SI <Condition 2> ALORS <Action si condition 2 vraie> [SINON SI <Condition 3> ALORS <Action si condition 3 vraie> [...]]] FIN Condition Le paramtre <Condition> peut tre de la forme : <Valeur> = <Expression> <Valeur> < <Expression> <Valeur> <= <Expression> <Valeur> > <Expression> <Valeur> >= <Expression> <Valeur> = <Expression Min> A <Expression Max> <Expression Min> <= <Valeur> <= <Expression Max> <Valeur> DANS (<Expression 1>, <Expression 2>, ... , <Expression N>) Remarque : Dans ce cas-l, toutes les expres- sions sont vrifies. <Valeur> _DANS_ (<Expression 1>, <Expression 2>, ... , <Expression N>) Remarque : Dans ce cas-l, ds quune expres- sion est fausse, les expressions suivantes ne sont pas vrifies. Condition compose Les mots-cls ET et OU permettent d'effectuer des oprations logiques et de construire des conditions composes. Les conditions composes de ET et OU sont va- lues dans leur totalit. Par exemple : A > 10 ET B < 20 Si la premire condition (A > 10) est fausse, la deuxime condition (B < 20) sera tout de mme vrifie. Pour optimiser lvaluation des conditions compo- ses, utilisez les mots-cls _ET_ et _OU_. Ainsi, si la premire condition (A > 10) est fausse, la deuxime condition (B < 20) ne sera pas vrifie. SINON sans SI Le mot-cl SINON ne peut pas tre utilis sans l'ins- truction conditionnelle SI correspondante. 4.1.11 Instruction TANTQUE Dans une instruction TANTQUE, l'expression est value chaque dbut du bloc d'instructions. Tant que l'expression de condition est vraie, le trai- tement boucle. SI Client.Age > 60 ALORS... PersonneAge += 1 SINON SI Client.Age > 18 ALORS... PersonneAdulte += 1 SINON SI Client.Age > 4 ALORS... PersonneEnfant += 1 SINON PersonneBb += 1 FIN SI Client.Ville = "Boston" ... ET Client.Civilit = "Monsieur" ALORS HommeBoston ++ // Nombre d'hommes habitant // Boston FIN SI Client.Ville = "Boston"... OU Client.Ville = "Miami" ALORS BostonMiami ++ // Nombre de clients habitant soit // Boston, soit Miami FIN WLangage.book Page 85 Mardi, 23. avril 2013 1:59 13 86 Partie 2 : Syntaxe de base du WLangage Il y a sortie du bloc d'instructions lorsque l'expres- sion de condition est fausse. Syntaxe TANTQUE <Condition> <Action si condition vraie> FIN Code excuter Le code excuter est plac entre les instructions TANTQUE et FIN. Sortir d'une boucle de type TANTQUE Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle TANTQUE et sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle TANTQUE et sortie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle TANTQUE et excu- tion de la suite du traitement en cours. La fonction Ferme permet de sortir de la boucle TANTQUE et de fermer la fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. Boucle sans fin Lors de la compilation du projet, une instruction TANTQUE sans fin vidente (absence des instruc- tions SORTIR, RETOUR ou RENVOYER) est signale par un warning. Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction Continuer : Condition compose Les mots-cls ET et OU permettent d'effectuer des oprations logiques et de construire des conditions composes. Par exemple : Les conditions composes de ET et OU sont va- lues dans leur totalit. Par exemple : A > 10 ET B < 20 Si la premire condition (A > 10) est fausse, la deuxime condition (B < 20) sera tout de mme vrifie. Pour optimiser lvaluation des conditions compo- ses, utilisez les mots-cls _ET_ et _OU_. Ainsi, si la premire condition (A > 10) est fausse, la deuxime condition (B < 20) ne sera pas vrifie. 4.2 Instructions simples Les diffrentes instructions simples sont les suivantes : CONTINUER : Retour direct au dbut de la pro- chaine itration sans terminer le code de l'itra- tion en cours RENVOYER : Sortie du traitement (ou de la proc- dure) en cours en renvoyant un compte rendu RETOUR : Sortie d'un bloc d'instructions et sortie du traitement (ou de la procdure) en cours SORTIR : Sortie d'un bloc d'instructions et excu- tion de la suite du traitement en cours Liste = INILit("Exemples",... "","",FichierIni) MotCle = ExtraitChane(Liste,nb,RC) TANTQUE MotCl <> "" nb = nb + 1 NomExpl = INILit(... "Projets installs",... MotCle,"",FichierIni) MotCl = ExtraitChane(Liste,... Nb+1,RC) FIN TANTQUE <Condition> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl TANTQUE ... FIN TANTQUE Prix < 100 ET ... TypeProduit = "AA" ... NbreProduit ++ // Nombre de produits dont le prix // est infrieur // 100 et dont le type est "AA" FIN TANTQUE Prix < 100 OU Prix > 500 NbreProduit ++ // Nombre de produits dont le prix // est compris entre 100 et 500 FIN WLangage.book Page 86 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 87 4.2.1 Instruction CONTINUER L'instruction CONTINUER permet de retourner directement au dbut de la prochaine itration sans terminer le code de l'itration en cours. L'instruction CONTINUER peut tre utilise dans les boucles de type : POUR. POUR TOUT. BOUCLE. TANTQUE. Syntaxe Instruction POUR POUR <Variable de contrle> = <Valeur ini- tiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS CONTINUER ... FIN Si la <Condition> est vrifie : Le code suivant l'instruction CONTINUER n'est pas excut. La boucle est excute directement depuis le dbut de l'instruction POUR. La <Variable de contrle> est incrmente. Instruction POUR TOUT POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS CONTINUER ... FIN Si la <Condition> est vrifie : Le code suivant l'instruction CONTINUER n'est pas excut. La boucle est excute directement depuis le dbut de l'instruction POUR TOUT. Le passage l'enregistrement suivant est auto- matique. Instruction BOUCLE BOUCLE ... SI <Condition> ALORS CONTINUER ... FIN Si la <Condition> est vrifie : Le code suivant l'instruction CONTINUER n'est pas excut. La boucle est excute directement depuis le dbut de l'instruction BOUCLE. Instruction TANTQUE TANTQUE <Condition 1> ... SI <Condition 2> ALORS CONTINUER ... FIN Si la <Condition 2> est vrifie : Le code suivant l'instruction CONTINUER n'est pas excut. La boucle est excute directement depuis le dbut de l'instruction TANTQUE. 4.2.2 Instruction RETOUR L'instruction RETOUR permet de sortir d'un bloc d'instructions et de sortir du traitement (ou de la procdure) en cours. L'instruction RETOUR peut tre utilise dans : une procdure. une boucle de type POUR. une boucle de type POUR TOUT. une boucle de type BOUCLE. une boucle de type TANTQUE. Syntaxe Procdure Procdure <Nom de la procdure> ([<Param- tre>]) SI <Condition> ALORS RETOUR ... FIN Instruction POUR POUR <Variable de contrle> = <Valeur ini- tiale> A <Valeur finale> [PAS <x>] SI <Condition> ALORS RETOUR FIN Instruction POUR TOUT POUR TOUT <Fichier> SUR <Rubrique cl> SI <Condition> ALORS RETOUR FIN Instruction BOUCLE BOUCLE ... SI <Condition> ALORS RETOUR ... FIN Instruction TANTQUE TANTQUE <Condition 1> ... SI <Condition> ALORS RETOUR ... FIN WLangage.book Page 87 Mardi, 23. avril 2013 1:59 13 88 Partie 2 : Syntaxe de base du WLangage Dans tous les cas, si la <Condition> est vrifie, les oprations effectues sont les suivantes : Sortie du bloc d'instructions. Sortie du traitement (ou de la procdure) en cours. Autres instructions permettant de sortir d'une bou- cle ou d'une procdure Plusieurs instructions sont possibles : RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle et sortie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle et excution de la suite du traitement (ou de la procdure) en cours. La fonction Ferme permet de sortir de la boucle (ou de la procdure) et de fermer la fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. 4.2.3 Instruction RENVOYER L'instruction RENVOYER permet de sortir du traite- ment (ou de la procdure) en cours en renvoyant un compte rendu. L'instruction RENVOYER peut tre utilise dans : une procdure. une boucle de type POUR. une boucle de type POUR TOUT. une boucle de type BOUCLE. une boucle de type TANTQUE. Syntaxe Procdure Procdure <Nom de la procdure> ([<Param- tre>]) SI <Condition> ALORS RENVOYER <Valeur renvoyer> SINON RENVOYER <Valeur renvoyer> FIN Instruction POUR POUR <Variable de contrle> = <Valeur ini- tiale> A <Valeur finale> [PAS <x>] SI <Condition> ALORS RENVOYER <Valeur> FIN Instruction POUR TOUT POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS RENVOYER <Valeur> FIN Instruction BOUCLE BOUCLE ... SI <Condition> ALORS RENVOYER <Valeur ren- voyer> ... FIN Instruction TANTQUE TANTQUE <Condition 1> ... SI <Condition> ALORS RENVOYER <Valeur> ... FIN Dans tous les cas, si la <Condition> est vrifie, les oprations effectues sont : Renvoi d'un compte rendu au traitement appe- lant. Sortie du bloc d'instructions. Sortie du traitement (ou de la procdure) en cours. Autres instructions permettant de sortir d'une bou- cle ou d'une procdure Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle et sortie du traite- ment (ou de la procdure) en cours. SORTIR : Sortie de la boucle et excution de la suite du traitement (ou de la procdure) en cours. La fonction Ferme permet de sortir de la boucle (ou de la procdure) et de fermer la fentre ou la page en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. 4.2.4 Instruction SORTIR L'instruction SORTIR permet de sortir d'un bloc d'instructions et d'excuter la suite du traitement en cours. L'instruction SORTIR peut tre utilise dans les boucles de type : POUR. POUR TOUT. BOUCLE. TANTQUE. Remarque : L'instruction SORTIR ne peut pas tre utilise pour sortir d'une procdure. Utilisez les mots-cls RETOUR ou RENVOYER. WLangage.book Page 88 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 89 Syntaxe Instruction POUR POUR <Variable de contrle> = <Valeur ini- tiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement> Instruction POUR TOUT POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement> Instruction BOUCLE BOUCLE ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement> Instruction TANTQUE TANTQUE <Condition> ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement> Dans tous les cas, si la <Condition> est vrifie, les oprations effectues sont les suivantes : Sortie du bloc d'instructions. Excution de la suite du traitement en cours. Autres instructions permettant de sortir d'une bou- cle Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle et sortie du traite- ment (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traite- ment appelant. Sortie de la boucle et sortie du traitement (ou de la procdure) en cours. La fonction Ferme permet de sortir de la boucle et de fermer la fentre en cours. Attention : Il n'est pas possible d'utiliser les instruc- tions RETOUR et RENVOYER dans un mme traite- ment. WLangage.book Page 89 Mardi, 23. avril 2013 1:59 13 90 Partie 2 : Syntaxe de base du WLangage 5. MOTS RSERVS Plusieurs mots du WLangage sont des mots rser- vs, permettant deffectuer des actions spcifiques : 5.1 Externe Le mot-cl EXTERNE permet de : intgrer un fichier texte contenant du WLangage dans une application (voir l'utilisation 1). dclarer un objet externe (voir l'utilisation 2). Utilisation 1 : Intgrer un fichier texte dans une application / un site L'intgration d'un fichier texte avec le mot-cl EXTERNE est identique une copie du fichier texte sous l'diteur de code.
Syntaxe EXTERNE <Nom du fichier> Le nom du fichier correspond au nom du fichier texte contenant du code WLangage intgrer dans lapplication / le site. Ce fichier est un fichier texte classique, cr sous n'importe quel diteur de texte. Il est possible de spcifier un chemin complet (par exemple : "C:\WDProjet\MesConst.wl"). Si le che- min n'est pas spcifi, le fichier est recherch successivement : dans le rpertoire du projet. dans le rpertoire "Personnel\Externe" de WinDev / WebDev. Inclure des constantes L'inclusion de fichier est particulirement utile pour dcrire des constantes communes plusieurs pro- jets ou utilises par le systme d'exploitation. Utili- sez le mot-cl EXTERNE pour inclure dans le code un fichier contenant des constantes communes. Plusieurs fichiers dfinissant des constantes sont fournis en standard avec WinDev / WebDev : WinConst.wl : Constantes standard de Windows. Limites.wl : Constantes correspondant aux limi- tes des types de donnes WinDev / WebDev. ListeDefinitionHF.wl : Constantes HyperFileSQL utilises pour la journalisation. Except.wl : Constantes utilises pour la gestion des exceptions KeyConst.wl : Constantes standard de Windows utilises pour les touches du clavier. Ces constantes peuvent tre utilises avec la fonction ToucheEnfonce, dans les traitements optionnels "Touche Enfonce" ou "Touche rel- che" en utilisant la variable _EVE.wParam. Utilisation 2 : Dclarer un objet externe Le mot-cl EXTERNE permet de dclarer une varia- ble qui existera uniquement lors de l'excution de l'application / du site. Par exemple, il est possible dutiliser le mot-cl EXTERNE pour manipuler une fentre / page pr- sente dans une bibliothque externe (charge avec la fonction ChargeWDL). Syntaxe EXTERNE <Nom de l'objet externe> <Nom de lobjet externe> correspond au nom de l'objet externe (fichier, variable, constante, ...) dclarer. Externe MaFentre MaPage MaSource Modulo MoiMme MonChampPopup MonEtat MonFichier MonParent STOP // Intgration du fichier // "WinConst.wl" // Constantes standard de Windows EXTERNE "WinConst.wl" EXTERNE MaFentre ChargeWDL("User1.WDL") Ouvre(MaFentre) WLangage.book Page 90 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 91 5.2 MaFentre Le mot-cl MaFentre permet de manipuler la fen- tre courante. Lors de l'excution de la fentre, le mot-cl MaFentre est remplac par la fentre et non par le nom de la fentre. Le mot-cl MaFentre s'utilise alors comme une fentre. Intrt : Le mot-cl MaFentre permet de rendre un code local (champ, bouton, ...) ou global (procdure globale, classe, ...) indpendant de la fentre en cours. Syntaxe MaFentre Manipulation de la fentre en cours Le mot-cl MaFentre est toujours remplac par la fentre en cours. Par exemple : Utilisation de la proprit ..Titre Passage en paramtre : Le mot-cl MaFentre peut tre utilis uniquement dans les traitements manipulant la fentre en cours (par exemple, dans les traitements associs un champ, une fentre, ...). Il n'est pas possible d'utiliser le mot-cl MaFentre dans un tat. Utilisation de MaFentre dans une procdure Le mot-cl MaFentre peut tre utilis dans une procdure (locale ou globale) uniquement si la pro- cdure manipule la fentre en cours. Le mot-cl MaFentre fait alors rfrence la fentre en cours. Dans le cas d'une procdure locale, le mot-cl MaFentre correspond la fentre laquelle appartient la procdure. Fonctions du WLangage et fentre en cours Pour dsigner la fentre en cours dans les fonc- tions du WLangage acceptant un nom de fentre en paramtre, utilisez : soit une chane vide. soit directement le mot-cl MaFentre. 5.3 MaPage Le mot-cl MaPage permet de manipuler la page courante. Lors de l'excution de la page, le mot-cl MaPage est remplac par la page et non par le nom de la page. Le mot-cl MaPage s'utilise alors comme une page. Intrt : Le mot-cl MaPage permet de rendre un code local (champ, bouton, ...) ou global (procdure globale, classe, ...) indpendant de la page en cours. Syntaxe MaPage Manipulation de la page en cours Le mot-cl MaPage est toujours remplac par la page en cours. Par exemple : Utilisation de la proprit ..Titre Passage en paramtre : Le mot-cl MaPage peut tre utilis uniquement dans les traitements manipulant la page en cours (par exemple, dans les traitements associs un champ, une page, ...). Il n'est pas possible d'utili- ser le mot-cl MaPage dans un tat. Utilisation de MaPage dans une procdure Le mot-cl MaPage peut tre utilis dans une pro- cdure (locale ou globale) uniquement si la proc- dure manipule la page en cours. Le mot-cl MaPage fait alors rfrence la page en cours. Dans le cas d'une procdure locale, le mot-cl MaPage correspond la page laquelle appartient la procdure. Fonctions du WLangage et page en cours Pour dsigner la page en cours dans les fonctions du WLangage acceptant un nom de page en para- mtre, utilisez : soit une chane vide. soit directement le mot-cl MaPage. // Rcupration du titre de la // fentre en cours TitreFentre = MaFentre..Titre MaFentre..Titre = ... "Saisissez vos donnes" TitreEnCours = MaFentre..Titre AppelProcedure(MaFentre) // Rcupration du titre de la page // en cours TitrePage = MaPage..Titre MaPage..Titre = ... "Saisissez vos donnes" TitreEnCours = MaPage..Titre AppelProcedure(MaPage) WLangage.book Page 91 Mardi, 23. avril 2013 1:59 13 92 Partie 2 : Syntaxe de base du WLangage 5.4 MaSource Le mot-cl MaSource permet de manipuler la source de donnes (fichier de donnes, vue ou requte) courante. Lors de l'excution du projet, ce mot-cl est automatiquement remplac par la source de donnes en cours. Intrt : Le mot-cl MaSource permet de : rendre le code indpendant de la source de don- nes en cours. accder la valeur d'une rubrique de l'enregistre- ment en cours dans la source de donnes en cours. rcuprer le nom de la source de donnes pour effectuer un traitement HyperFileSQL. Syntaxe MaSource Limite Le mot-cl MaSource est utilisable uniquement dans les traitements associs : un tat. une table fichier. 5.5 Modulo Retourne le reste d'une division entire. Remarque : Modulo peut tre utilis aussi bien en tant que mot-cl ou en tant que fonction du WLan- gage. Syntaxe Fonction Modulo <Reste de la division> = Modulo ... (<Dividende>,<Diviseur>) Mot-cl Modulo <Reste de la division> = <Dividende> ... Modulo <Diviseur> 5.6 MoiMme Le mot-cl MoiMme permet de manipuler le champ en cours. Lors de l'excution du projet, le mot-cl MoiMme est remplac par le champ et non par le nom du champ. Le mot-cl MoiMme s'utilise alors comme un champ. Intrt : Le mot-cl MoiMme permet de rendre un code local (champ, rubrique, ...) ou global (proc- dure globale, classe, ...) indpendant du champ en cours. Syntaxe MoiMme Manipulation du champ en cours Le mot-cl MoiMme est toujours remplac par le champ en cours. Par exemple : Rcupration de la valeur du champ en cours : // Rcupration du nom de la source // de donnes en cours dans l'tat SourceDonne = MaSource..Nom // Rcupration du nom du client // en cours d'impression SI MaSource.NomCli = "Martin" ALORS TotalHT..CouleurFond = iRougeClair FIN // Rcupration du reste de // la division // ResteDivision = Modulo(21,4) // ResteDivision vaut 1 // quivalent : ResteDivision = 21 Modulo 4 -- chaque modification d'une combo // Appel de la procdure MasqueMajus MasqueMajus() --Procdure MasqueMajus // Masque 1re lettre maj // (combo saisie) Procdure MasqueMajus() Valeur = MoiMeme SI Taille(Valeur) > 1 ALORS PosCurseur = MoiMeme..Curseur MoiMeme = ... Majuscule(Valeur[[1]])+... Minuscule(Valeur[[2 Taille(... Valeur)]]) MoiMeme..Curseur = PosCurseur FIN ValeurChamp = MoiMme WLangage.book Page 92 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 93 Modification de la valeur du champ en cours : Utilisation d'une proprit (proprit Libell par exemple) : Passage en paramtre : Si aucun champ n'est en cours, une erreur du WLangage est gnre. Utilisation de MoiMme dans une procdure Le mot-cl MoiMme peut tre utilis dans une pro- cdure (locale ou globale) uniquement si la proc- dure est appele dans un traitement associ un champ. Le mot-cl MoiMme fait alors rfrence au champ en cours. Le mot-cl MoiMme permet de rendre une proc- dure "gnrique" : le nom du champ ne figure pas en toutes lettres. Cette procdure peut alors tre appele pour plusieurs champs. Fonctions du WLangage et champ en cours Pour dsigner le champ en cours dans les fonctions du WLangage acceptant un nom de champ en paramtre, utilisez : soit une chane vide. soit directement le mot-cl MoiMme. 5.7 MonChampPopup Le mot-cl MonChampPopup permet de manipuler le champ qui a ouvert une fentre popup. En excu- tion, le mot-cl MonChampPopup est remplac par : le champ qui a ouvert la fentre popup (c'est-- dire le champ depuis lequel la fonction OuvrePo- pup ou OuvrePopupPosition a t appele) le champ prcis dans la fonction OuvrePopup- Position si le mode d'affichage poSelonChamp a t choisi. Dans tous les cas, le mot-cl MonChampPopup est remplac en excution par le champ correspondant et non par le nom du champ. Le mot-cl Mom- ChampPopup s'utilise alors comme un champ. Intrt : Le mot-cl MonChampPopup permet de rendre un code local (champ, bouton, ...) ou global (procdure globale, classe, ...) indpendant de la fentre popup en cours. Syntaxe MonChampPopup Manipulation du champ qui a ouvert la fentre popup Le mot-cl MonChampPopup est toujours remplac par le champ qui a ouvert la fentre de type Popup. Il est donc possible de le manipuler directement depuis le code de la fentre popup. Par exemple : Passage en paramtre Le mot-cl MonChampPopup peut tre utilis uni- quement dans les traitements manipulant la fen- tre popup en cours (par exemple, dans les traitements associs un champ, ...). Il n'est pas possible d'utiliser le mot-cl MonChampPopup dans un tat ou dans une fentre qui n'est pas de type Popup. Utilisation de MonChampPopup dans une proc- dure Le mot-cl MonChampPopup peut tre utilis dans une procdure (locale ou globale) uniquement si la procdure est appele dans un traitement associ un champ de la fentre popup ou dans un traite- ment de la fentre popup. Le mot-cl MonChamp- Popup fait alors rfrence au champ qui a ouvert la fentre popup. Le mot-cl MonChampPopup permet de rendre une procdure "gnrique" : le nom du champ ne figure pas en toutes lettres. Cette procdure peut alors tre appele pour plusieurs champs. Fonctions du WLangage et fentre en cours Pour dsigner le champ qui a ouvert la fentre popup en cours dans les fonctions du WLangage acceptant un nom de champ en paramtre, utilisez directement le mot-cl MonChampPopup. MoiMme = "Dupond" MoiMme..Libell = "Nom des clients" LibellChamp = MoiMme..Libell AppelProcedure(MoiMme) SI MonChampPopup..Type = ... TypBouton ALORS MonChampPopup..Libell = ... "Slection en cours" FIN AppelProcedure(MonChampPopup) WLangage.book Page 93 Mardi, 23. avril 2013 1:59 13 94 Partie 2 : Syntaxe de base du WLangage 5.8 MonEtat Le mot-cl MonEtat permet de manipuler l'tat cou- rant. Lors de l'excution du projet, le mot-cl MonE- tat est remplac par l'tat et non par le nom de l'tat. Le mot-cl MonEtat s'utilise alors comme un tat. Intrt : Le mot-cl MonEtat permet de rendre un code local (champ, rubrique, ...) ou global (proc- dure globale, classe, ...) indpendant de l'tat en cours. Syntaxe MonEtat Manipulation de l'tat en cours Le mot-cl MonEtat est toujours remplac par l'tat en cours. Par exemple : Utilisation d'une proprit (proprit ..Marge- Basse par exemple) : Passage en paramtre : Le mot-cl MonEtat peut tre utilis uniquement dans les traitements manipulant l'tat en cours (par exemple, dans les traitements associs un champ, une rubrique, ...). Il n'est pas possible d'utiliser le mot-cl MonEtat dans une fentre. Utilisation de MonEtat dans une procdure Le mot-cl MonEtat peut tre utilis dans une pro- cdure (locale ou globale) uniquement si la proc- dure manipule l'tat en cours. Le mot-cl MonEtat fait alors rfrence l'tat en cours. Dans le cas d'une procdure locale, le mot-cl MonEtat correspond l'tat auquel appartient la procdure. 5.9 MonFichier Le mot-cl MonFichier permet de connatre dans un trigger le fichier de donnes qui dclenche le trigger. Lors de l'excution, ce mot-cl est automati- quement remplac par le fichier de donnes en cours. Intrt : Le mot-cl MonFichier permet de faire des triggers gnriques, sans faire d'indirections sur la variable H.NomFichier. Il est ainsi possible de mani- puler le fichier de donnes, ses proprits ou encore ses rubriques. 5.10 MonParent Le mot-cl MonParent permet de manipuler : le superchamp courant partir d'un lment du superchamp. Lors de l'excution de la fentre / page, le mot- cl MonParent est remplac par le superchamp et non par le nom du superchamp. Le mot-cl MonParent s'utilise alors comme un super- champ. Intrt : Le mot-cl MonParent permet de rendre le code des champs du superchamp (champ, bouton, ...) ou des fonctions associes au super- champ indpendant du nom du superchamp. l'tat courant partir d'un des champs de l'tat. la fentre / page courante partir d'un des champs de la fentre / page. Syntaxe MonParent // Rcupration du nom de l'tat // en cours MonEtat = MonEtat..Nom MonEtat..MargeBasse = 15 ResMarge = MonEtat..MargeBasse AppelProcedure(MonEtat) // Code du bouton de slection NomFichier=fSlecteur(... fExtraitChemin(... NomFichier, fRpertoire), ... fExtraitChemin(NomFichier, ... fFichier+fExtension), ... "Slectionner un fichier", ... "Tous les fichiers (*.*)"+TAB+... "*.*", "") // La valeur du superchamp // correspond // au fichier slectionn MonParent..Valeur = NomFichier WLangage.book Page 94 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 95 Manipulation du superchamp en cours Le mot-cl MonParent est toujours remplac par le superchamp en cours. Par exemple, passage en paramtre : Le mot-cl MonParent peut tre utilis uniquement dans les traitements manipulant le superchamp en cours (par exemple, dans les traitements associs un champ du superchamp, dans les procdures associes au superchamp, ...). Utilisation de MonParent dans une procdure Le mot-cl MonParent peut tre utilis dans une procdure associe au superchamp en cours. Le mot-cl MonParent fait alors rfrence au super- champ en cours. 5.11 STOP (appel du dbogueur) Le mot-cl STOP permet d'appeler le dbogueur du WLangage lors d'un test sous l'diteur (pour plus dtails, consultez laide en ligne). Aprs excution de ce mot-cl, le test en cours s'effectuera dans le dbogueur. Syntaxe Lancement du dbogueur STOP Lancement du dbogueur avec condition STOP SI <Condition> Mode de lancement du dbogueur Pour lancer le dbogueur lors d'un test, il est possi- ble d'utiliser : le mot-cl STOP dans l'diteur de code. un point d'arrt dans l'diteur de code (Option "Edition .. Points d'arrt" ou raccourci clavier [Ctrl][B], clic de la souris dans la marge). la combinaison des touches [Ctrl][Break] lors de l'excution du test (sauf en WebDev). Tracer/ Dboguer un projet Pour tracer un projet ds le dbut de son excution, sous le volet "Projet", dans le groupe "Mode test", cliquez sur "Mode test" et slectionnez loption "Tracer le projet" (raccourci clavier [Alt][F9]). Excutable Le mot-cl STOP prsent dans le code d'un excu- table n'a aucune action. AppelProcedure(Monparent) // Ouverture fentre Ouvre(FentreSaisie) STOP // Lancement du dbogueur WLangage.book Page 95 Mardi, 23. avril 2013 1:59 13 96 Partie 2 : Syntaxe de base du WLangage 6. PROCDURE ET FONCTION 6.1 Prsentation Une procdure permet d'associer un identificateur un bloc d'instructions. La procdure peut ensuite tre appele dans un traitement. Une fonction permet de dfinir un sous-programme qui effectue plusieurs instructions avant de retour- ner une valeur au programme appelant. Diffrence entre une procdure et une fonction : une procdure ne retourne pas de rsultat. une fonction retourne un rsultat. En WLangage, il n'existe pas de distinction entre les procdures et les fonctions. Les procdures et les fonctions sont gres de la mme faon. Une pro- cdure comme une fonction peut retourner ou non un rsultat. Les procdures et les fonctions peuvent avoir un nombre de paramtres fixe ou variable. La syntaxe de dclaration est la mme pour les pro- cdures et les fonctions. Pour plus de dtails, con- sultez-la Dclarer une procdure / une fonction, page 99. La syntaxe d'appel est la mme pour les procdu- res et les fonctions. Pour plus de dtails, consultez Appeler une procdure / une fonction, page 100. Il est possible de crer des procdures multisyn- taxes. Pour plus dtails, consultez Surcharger une fonction WLangage, page 102. Une procdure (une fonction) peut tre globale ou locale. Pour plus de dtails, consultez le paragra- phe suivant. 6.2 Procdure / fonction globale et locale 6.2.1 Dfinition Les procdures peuvent tre de deux types : Procdure globale : utilisable dans tous les trai- tements du projet. Cette procdure globale est mmorise dans le projet. Procdure locale : utilisable dans tous les traite- ments dpendant de l'objet (fentre, page ou tat) dans lequel cette procdure a t dclare. Cette procdure locale est mmorise dans l'objet. Important : Il ne faut pas dclarer deux procdures avec le mme nom (notamment une procdure glo- bale et une procdure locale). Rappel : En WLangage, il n'existe pas de distinction entre les procdures et les fonctions. Les syntaxes de dclaration et d'utilisation dcrites pour les pro- cdures sont les mmes pour les fonctions. 6.2.2 Procdure globale Procdures globales et collections de procdures Les procdures globales sont mmorises dans des collections de procdures, associes au projet. Les procdures globales dclares dans le traite- ment d'initialisation d'un projet peuvent tre appe- les depuis tous les traitements : du projet. des fentres / pages (traitements de la fentre / page, de ses champs et des procdures locales associes). des tats (traitements de l'tat, de ses champs et des procdures locales associes). Conseil : Si une procdure est utilise par une seule fentre / page, il est conseill de dcrire cette procdure comme locale la fentre / page. La fentre / page est alors "indpendante". Procdures globales serveur et navi- gateur En WebDev, un projet correspondant un site dyna- mique contient au moins deux collections de proc- dures (une "serveur" et une "navigateur"). Lors de la cration du projet : la collection de procdures serveur par dfaut a pour nom "Procdures globales de <Nom Projet>" (fichier ".WDG") la collection de procdures navigateur par dfaut a pour nom: "Procdures globales de <Nom pro- jet>_Navigateur" (fichier ".WWN") Remarque : une collection de procdures globale Navigateur est convertie en collection de procdure WLangage.book Page 96 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 97 Javascript. Cette collection de procdures Javas- cript est enregistre dans le rpertoire "<Nom Pro- jet>_WEB" sous le nom "<Nom Projet>.JS". Limite : Les procdures globales serveur ne peu- vent pas appeler des procdures globales naviga- teur et inversement. Crer une procdure globale 1. Depuis lditeur de code Pour crer une procdure globale depuis l'diteur de code : Mthode 1 : Sous le volet "Code", dans le groupe "Procdures", droulez "Nouveau" et slectionnez l'option "Nouvelle procdure globale" (raccourci clavier [Shift] [F4]). Mthode 2 : Slectionnez l'option "Crer une pro- cdure .. Crer une procdure globale vide" du menu contextuel. En WebDev : Si le code en cours est un code serveur, la proc- dure globale est cre dans la collection de pro- cdures serveur. Si le code en cours est un code navigateur, la procdure globale est cre dans la collection de procdures navigateur. Pour crer directement une procdure globale serveur, sous le volet "Code", dans le groupe "Pro- cdures", droulez "Nouveau" et slectionnez l'option "Nouvelle procdure globale (serveur)". Pour crer directement une procdure globale navigateur, sous le volet "Code", dans le groupe "Procdures", droulez "Nouveau" et slectionnez l'option "Nouvelle procdure globale (naviga- teur)". Remarque : Pour transformer une partie de code dj saisi en une procdure globale : 1. Slectionnez le code correspondant. 2. Utilisez l'option "Crer une procdure .. Crer une procdure globale contenant le code slec- tionn" du menu contextuel. 3. Indiquez le nom de la procdure. La procdure est cre, le code correspondant est remplac par l'appel de la procdure avec les paramtres nces- saires. 2. Depuis le volet "Explorateur de projet" Pour crer une procdure globale depuis le volet "Explorateur de projet" : 1. Slectionnez le dossier "Procdures". 2. Slectionnez la collection de procdures voulue. 3. Affichez le menu contextuel de la collection de procdures et slectionnez l'option "Nouvelle proc- dure globale". 4. Saisissez le nom de la nouvelle procdure glo- bale et validez. Remarque : Il est possible d'afficher la liste des procdures globales dans lexplorateur de projet double-cliquant sur le dossier "Procdures" (rac- courci clavier [Ctrl] [F8]) de l'diteur de code. Suppression dune procdure globale 1. Depuis lditeur de code Pour supprimer une procdure globale depuis l'di- teur de code : 1. Cliquez sur le bandeau de la procdure dans l'diteur de code. 2. Dans le menu contextuel, slectionnez "Suppri- mer". 2. Depuis le volet "Explorateur de projet" Pour supprimer une procdure globale depuis le volet "Explorateur de projet" : 1. Slectionnez le dossier "Procdures". 2. Slectionnez la collection de procdures voulue. 3. Affichez le menu contextuel de la collection de procdures et slectionnez l'option "Supprimer". Test dune procdure globale 1. Depuis lditeur de code Pour tester une procdure globale : 1. Affichez la procdure globale sous l'diteur. 2. Cliquez sur le bouton [GO]. 3. La fentre de description du test de la procdure s'affiche. Cette fentre permet de : Saisir les diffrents paramtres de la proc- dure. Lancer le test de la procdure (bouton [Tester la procdure]). Vrifier la valeur de retour. 2. Depuis le volet "Explorateur de projet" Pour tester une procdure globale : 1. Slectionnez le dossier "Procdures" de l'explo- rateur de projet. 2. Slectionnez le nom de la procdure globale tester. 3. Slectionnez l'option "Tester la procdure" du menu contextuel. 4. La fentre de description du test de la procdure s'affiche. Cette fentre permet de : Saisir les paramtres de la procdure. Lancer le test de la procdure (bouton [Tester la procdure]). Vrifier la valeur de retour. WLangage.book Page 97 Mardi, 23. avril 2013 1:59 13 98 Partie 2 : Syntaxe de base du WLangage Procdure globale publique ou prive Une procdure globale est publique par dfaut : elle est accessible depuis n'importe quel code. Dans certains cas, il est ncessaire de restreindre l'accs une procdure globale en la rendant "Pri- ve". Dans ce cas, la procdure globale et accessi- ble uniquement par une autre procdure globale prsente dans la collection de procdures. Pour modifier le mode d'accs une procdure globale : 1. Slectionnez la procdure globale dans le volet "Explorateur de projet". 2. Dans le menu contextuel de la procdure, slec- tionnez le nouveau mode d'accs : publique. priv. La couleur du bandeau de la procdure change en fonction de son mode d'accs : dbut de bandeau rouge : procdure prive. dbut de bandeau habituel : procdure publique. 6.2.3 Procdure locale Procdures locales une fentre / page Les procdures locales dclares dans une fentre / page peuvent tre appeles depuis tous les traitements : de la fentre / page. des champs de la fentre / page. des procdures locales associes la fentre / page. Ces procdures sont mmorises dans la fentre / page. Attention : Les procdures locales d'une fentre ne peuvent pas tre utilises par ses fentres soeurs. Les procdures locales dclares dans une fen- tre fille ne peuvent pas tre utilises dans sa fentre mre. Procdures locales un tat Les procdures locales dclares dans un tat peu- vent tre appeles depuis tous les traitements : de l'tat. des champs de l'tat. des procdures locales associes l'tat. Ces procdures sont mmorises dans l'tat. Cration dune procdure locale 1. Depuis lditeur de code : Pour crer une procdure locale l'lment en cours depuis l'diteur de code : Mthode 1 : Sous le volet "Code", dans le groupe "Procdures", droulez "Nouveau" et slectionnez loption "Nouvelle procdure locale" (raccourci clavier [F4]). En WebDev : - Pour crer une procdure locale serveur, sous le volet "Code", dans le groupe "Procdures", drou- lez "Nouveau" et slectionnez loption "Nouvelle procdure locale (Serveur)". - Pour crer une procdure locale navigateur, sous le volet "Code", dans le groupe "Procdu- res", droulez loption "Nouveau" et slectionnez l'option "Nouvelle procdure locale (Navigateur)". Mthode 2 : Slectionnez l'option "Crer une pro- cdure .. Crer une procdure locale vide" du menu contextuel. En WebDev : - Pour crer une procdure locale serveur, slec- tionnez l'option "Crer une procdure .. Crer une procdure locale (Serveur)". - Pour crer une procdure locale navigateur, slectionnez l'option "Crer une procdure .. Crer une procdure locale (Navigateur)". Remarque : Pour transformer une partie de code dj saisi dans une procdure locale en une proc- dure locale : 1. Slectionnez le code correspondant. 2. Utilisez loption "Crer une procdure .. Crer une procdure contenant le code slectionn" du menu contextuel. 3. Indiquez le nom de la procdure. La procdure est cre, le code correspondant est remplac par l'appel de la procdure avec les paramtres nces- saires. Remarque en WebDev : Si le code slectionn est un code serveur, la procdure cre sera une pro- cdure serveur. Si le code slectionn est un code navigateur, la procdure cre sera une procdure navigateur. 2. Depuis lexplorateur de projet : Pour crer une procdure locale depuis le volet "Explorateur de projet" : 1. Slectionnez l'lment associ la procdure locale (fentre, page, tat, ...). 2. Droulez les options de l'lment et slection- nez l'option "Procdures locales" de l'lment. 3. Affichez le menu contextuel et slectionnez l'option "Nouvelle procdure locale". WLangage.book Page 98 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 99 4. Saisissez le nom de la nouvelle procdure locale et validez. Remarque : Il est possible dafficher la liste des procdures locales depuis lexplorateur de projet (dossier "Procdures locales" de llment) ou en utilisant le raccourci clavier [F8] de l'diteur de code. 6.3 Collection de procdures 6.3.1 Dfinition Les procdures globales sont contenues dans des collections de procdures. Une collection de procdures permet de : partager des procdures globales entre plusieurs dveloppeurs, pour un mme projet. partager des procdures globales entre plusieurs projets. bloquer uniquement cette collection lors de modifications apportes dans une procdure glo- bale. modifier une ou plusieurs procdures globales mme si le projet est en cours de modification par un autre utilisateur. Les collections de procdures d'un projet WinDev ou WinDev Mobile peuvent tre partages avec un projet WebDev. Attention : Seul le code compatible avec WebDev doit tre utilis dans la collection de procdures partage. 6.3.2 Cration d'une collection de procdu- res Pour crer une collection de procdures : 1. Dans le volet "Explorateur de projet", slection- nez loption "Procdures". 2. Dans le menu contextuel (clic droit de la souris), slectionnez l'option "Nouvelle collection de proc- dures". 6.3.3 Importation d'une collection de proc- dures Une collection de procdures peut tre importe dans un projet. Vous pourrez alors utiliser dans votre projet des procdures de cette collection importe. Pour importer une collection de procdures : 1. Dans le volet "Explorateur de projet", option "Pro- cdures", slectionnez l'option "Importer une col- lection de procdures" du menu contextuel. 2. Slectionnez la collection de procdures importer. 3. Confirmez l'ajout de la collection slectionne dans votre projet. 6.4 Dclarer une procdure / une fonction 6.4.1 Syntaxe La dclaration d'une procdure est la mme qu'il s'agisse d'une procdure globale ou d'une proc- dure locale. Important : Il ne faut pas dclarer deux procdures avec le mme nom (notamment une procdure glo- bale et une procdure locale). Dclarer une procdure avec paramtres PROCEDURE <Nom de la procdure>(<Paramtres>) <Code de la procdure> Dclarer une procdure sans paramtre PROCEDURE <Nom de la procdure>() <Code de la procdure> Dclarer une procdure avec paramtres variables PROCEDURE <Nom de la procdure>([<param- tres>,]*) <Code de la procdure> Remarque : Pour des raisons de lisibilit des pro- grammes, le mot-cl PROCEDURE peut tre rem- plac par le mot-cl FONCTION. 6.4.2 Sortie d'une procdure Pour forcer la sortie d'une procdure, utilisez le mot-cl Retour. Dans la procdure, tous les traite- ments suivant le mot-cl Retour ne sont pas excu- ts. Par exemple : PROCEDURE Calcul(Dividende)... SI Dividende = 0 ALORS ... Erreur("Division par 0 ... "impossible") Retour SINON ... FIN WLangage.book Page 99 Mardi, 23. avril 2013 1:59 13 100 Partie 2 : Syntaxe de base du WLangage Remarques : Si la procdure renvoie un rsultat, utilisez le mot-cl Renvoyer. Il n'est pas possible d'utiliser les mots-cls Retour et Renvoyer dans le mme traitement. 6.4.3 Renvoi d'un rsultat Pour retourner le rsultat d'une procdure au traite- ment appelant, utilisez le mot-cl Renvoyer. Par exemple : Conseil : Pour les procdures qui retournent un rsultat, il est conseill d'utiliser le mot-cl FONC- TION au lieu de PROCEDURE pour faciliter la lec- ture du code. Important : Il ne faut pas forcer la sortie d'une pro- cdure qui renvoie un rsultat avec le mot-cl Retour. En effet, l'appel de la procdure attend un compte-rendu qui ne serait pas retourn en cas de sortie force de la procdure. 6.5 Appeler une procdure / une fonction L'appel d'une procdure est le mme qu'il s'agisse d'une procdure globale ou d'une procdure locale. Rappel : En WLangage, il n'existe pas de distinction entre les procdures et les fonctions. Les syntaxes de dclaration et d'utilisation dcrites pour les pro- cdures sont les mmes pour les fonctions. Dans le cas dune procdure multisyntaxe, lappel de la bonne syntaxe est rsolu lexcu- tion. Pour plus de dtails, consultez Surcharger une fonction WLangage, page 102. Syntaxe : Appeler une procdure [<Valeur retourne> = ] <Nom de la proc- dure>([<Paramtres>]) Remarques : Pour des raisons de lisibilit des programmes, le mot-cl PROCEDURE peut tre remplac par le mot-cl FONCTION. Pour excuter une procdure d'une fentre ouverte, il suffit d'utiliser la fonction ExcuteTrai- tement. 6.6 Paramtre d'une procdure / une fonction Il est possible de passer des paramtres une pro- cdure. Ce paragraphe aborde les thmes suivants : le typage des paramtres. le passage de paramtres. les paramtres locaux. les paramtres optionnels. les paramtres variables (procdures nombre de paramtres variables). Rappel : En WLangage, il n'existe pas de distinction entre les procdures et les fonctions. Les procdu- res et les fonctions sont gres de la mme faon. 6.6.1 Typage des paramtres Type des paramtres par dfaut La description du type de paramtre n'est pas obli- gatoire. Par dfaut, le type de la variable passe en paramtre lors de l'appel de la procdure est utilis dans la procdure. Par exemple : PROCEDURE Trouve(Fichier,Cl,Valeur) HLitRecherche(Fichier,Cl,Valeur) SI HTrouve=Vrai ALORS Renvoyer Vrai SINON Renvoyer Faux FIN // Appel de la procdure Trouve qui // retourne un boolen SI Trouve(Client,NumCli,Numro) ALORS Info("Numro de client trouv") SINON Info("Numro de client" ... "inexistant") FIN Indice est un entier // Appel de la procdure MaProc MaProc(Indice) -- Dclaration procdure MaProc PROCEDURE MaProc(Compteur) // Compteur est de type entier Compteur += 1 WLangage.book Page 100 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 101 Il est ainsi possible d'utiliser une mme procdure pour plusieurs types de variables. Forcer le typage des paramtres Pour forcer le typage des paramtres, utilisez la syntaxe suivante : PROCEDURE <Nom de la procdure>(... <Paramtre 1> est un(e) <Type>,... <Paramtre 2> est un(e) <Type> ,... <Paramtre N> est un(e) <Type> ) Le type de la variable passe en paramtre (lors de l'appel de la procdure) doit tre identique au type dcrit dans la dclaration de la procdure. Si ce n'est pas le cas, une erreur est gnre lors de la compilation du projet, de la fentre ou de l'tat. Dans l'exemple suivant, la variable "Indice" n'est pas de type rel : une erreur sera gnre lors de la compilation du projet, de la fentre ou de l'tat. 6.6.2 Passage de paramtres Lors de l'appel d'une procdure, les paramtres peuvent tre : passs par adresse passs par valeur. Passage de paramtres par adresse Par dfaut, lors de lappel dune procdure, les paramtres sont passs par variable (par adresse). Si le paramtre est modifi dans la procdure, le traitement appelant la procdure rcuprera le paramtre avec sa valeur modifie. Pour passer un paramtre par variable une proc- dure, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom de la variable passe en paramtre>) Par exemple : Passage de paramtres par valeur Lors de l'appel d'une procdure, les paramtres peuvent tre passs par valeur. Si le paramtre est modifi dans la procdure, le traitement appelant la procdure rcuprera le paramtre avec sa valeur NON modifie. Solution 1 : Pour passer un paramtre par valeur une procdure, utilisez la syntaxe suivante : <Nom de la procdure>((<Nom de la variable passe en paramtre>)) Par exemple : Solution 2 : Utilisation de paramtres "local" dans la procdure Lors de la dclaration d'une procdure, les varia- bles passes en paramtre peuvent devenir locales cette procdure. Pour cela, il suffit de faire prc- der le paramtre local par le mot-cl LOCAL. Par exemple : PROCEDURE MaProc(LOCAL Indice, LOCAL Compteur, Numro) Si ce paramtre est modifi dans la procdure, le traitement appelant la procdure rcuprera le paramtre avec sa valeur NON modifie. Passage dun champ, dune fentre ou dun tat Cet lment (champ, fentre, page ou tat) est alors manipul comme un objet "classique". Pour passer un lment en paramtre une procdure, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom lment>) Par exemple : Remarques : MoiMme permet de manipuler le champ en cours. MaFentre permet de manipuler la fentre en cours. Indice est un entier = 7 // Appel de la procdure MaProc MaProc(Indice)
-- Dclaration de la procdure MaProc PROCEDURE MaProc(Indice est un rel) ... Indice est un entier = 1 // Avant l'appel de la procdure, // Indice vaut 1 AjouteUn(Indice) // Aprs l'appel de la procdure, // Indice vaut 2
-- Dclaration de la procdure PROCEDURE AjouteUn(Compteur) Compteur += 1 Indice est un entier = 1 // Avant l'appel de la procdure, // Indice vaut 1 AjouteUn((Indice)) // Aprs l'appel de la procdure, // Indice vaut toujours 1 -- Dclaration de la procdure PROCEDURE AjouteUn(Compteur) Compteur += 1 // Appel procdure ChampVisible ChampVisible(ChampAdresse) -- Dclaration de la procdure PROCEDURE ChampVisible(ChampAdresse) ChampAdresse..Visible = Faux WLangage.book Page 101 Mardi, 23. avril 2013 1:59 13 102 Partie 2 : Syntaxe de base du WLangage MaPage permet de manipuler la page en cours MonEtat permet de manipuler l'tat en cours. 6.6.3 Paramtre optionnel Certains paramtres passs une procdure peu- vent tre optionnels. Lors de la dclaration de la procdure, les paramtres optionnels doivent tre dcrits en dernire position ( droite), avec une valeur par dfaut prcde du signe "=" : PROCEDURE <Nom de la procdure>(... <Paramtres obligatoires>,... <Paramtre optionnel 1> = <Valeur>,... <Paramtre optionnel 2> = <Valeur>,...) Par exemple : Pour conserver la valeur par dfaut d'un paramtre optionnel, utilisez le caractre "*" lors de l'appel de la procdure. Par exemple : 6.6.4 Procdure nombre de paramtres variables Si la procdure utilise un nombre de paramtres variables, il est ncessaire dans le code de la pro- cdure de pouvoir manipuler les diffrents param- tres passs la fonction. Ces manipulations sont ralises grce au mot-cl MesParamtres. Exemple : Procdure de dcalage de champs : Les champs passs en paramtre sont dcals de 10 pixels. L'indexation des paramtres commence toujours 1 quel que soit le nombre de paramtres obligatoi- res ou le nombre de paramtres optionnels. L'utilisation d'un nombre de paramtres variables est disponible avec : les procdures, les mthodes de classes, le code de dclaration des globales de fentres, pages ou tats. 6.7 Surcharger une fonction WLangage 6.7.1 Dfinition La surcharge d'une fonction WLangage permet d'utiliser une fonction personnelle du mme nom que la fonction WLangage. Par exemple, au lieu d'utiliser la fonction standard du WLangage Info, il est possible d'utiliser une pro- cdure personnelle nomme Info. A chaque fois que la fonction Info sera utilise, ce sera la fonction personnelle qui sera excute. 6.7.2 Comment le faire ? Pour surcharger une fonction WLangage : 1. Crez une nouvelle procdure dans votre projet (procdure locale ou globale). Cette procdure doit avoir les caractristiques suivantes : le mme nom que la fonction WLangage sur- charger. le mme nombre de paramtres que la fonction WLangage surcharger. Ces paramtres doivent galement tre du mme type que ceux de la fonction WLangage. 2. Lorsque le nom de la fonction / procdure sera utilis dans le projet (ou dans la fentre / page si la procdure cre est locale), la procdure personna- lise sera utilise la place de la fonction WLan- gage. 6.7.3 Diffrencier la fonction WLangage et la fonction personnalise Si vous avez surcharg une fonction WLangage, pour utiliser la fonction originale, il suffit de prfixer le nom de la fonction par les lettres WL. La syntaxe utiliser est la suivante : WL.<Nom de la fonction> Par exemple, pour surcharger la fonction Trace du WLangage, il est possible d'utiliser le code suivant : -- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, CoulTrait = ... iJauneClair) ... -- appel de la procdure Dessin(10,15) -- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, ... CoulTrait = iJauneClair) ... -- Traitement d'appel de la procdure Dessin(10,15,*,iVertClair) // Procdure de dcalage de champs PROCEDURE DcaleChamp(*) POUR I = 1 A ... MesParamtres..Occurrence MesParamtres[I]..X +=10 FIN PROCEDURE Trace(Information1) Message("Lancement d'une trace") WL.Trace(Information1) WLangage.book Page 102 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 103 6.8 Surcharge de prototype 6.8.1 Prsentation Les procdures et les mthodes de classes peu- vent avoir plusieurs syntaxes. Par exemple, une procdure peut avoir : une syntaxe qui prend en paramtre une chane. une syntaxe qui prend en paramtre un entier. Il est ainsi possible d'avoir diffrentes syntaxes pour une mme procdure ou une mme mthode avec des paramtres et du code diffrents. A l'ex- cution, le moteur dtermine automatiquement la syntaxe appeler en fonction du nombre et du type des paramtres passs. Cette technologie est souvent prsente sous diff- rentes appellations et englobe diffrents objectifs. Parmi ces appellations, on retrouve les termes suivants : Multisyntaxe, Surcharge de prototype, Overload, Dynamic dispatch, Polymorphisme paramtrique, etc. Cette fonctionnalit est disponible pour : Les procdures globales. Les procdures locales. Les mthodes de classe y compris les Construc- teurs. Dans la suite de ce document : le terme multisyntaxe sera utilis. le mot-cl "Procdure" sera utilis pour dsigner une procdure globale, une procdure locale ou bien une mthode. 6.8.2 Comment le faire ? Ajouter des syntaxes une proc- dure Pour ajouter une syntaxe une procdure existante : 1. Dans l'explorateur de projet, slectionnez la pro- cdure. 2. Affichez le menu contextuel de la procdure et choisissez l'option "Ajouter une syntaxe". 3. Une nouvelle syntaxe est automatiquement cre dans l'diteur de code. Remarques : La cration d'une procdure de mme nom pro- pose automatiquement d'ajouter une nouvelle syntaxe la procdure existante. Si une procdure a plusieurs syntaxes, le nombre de syntaxes est affich dans l'explorateur de pro- jet ( ct du nom de la procdure). Supprimer une des syntaxes dune procdure Pour supprimer une syntaxe : 1. Affichez le code de la procdure dans l'diteur de code. 2. Dans le bandeau de la syntaxe, choisissez l'option "Supprimer" du menu contextuel. 3. Vous pouvez : supprimer la syntaxe courante. supprimer toutes les syntaxes (dans ce cas, la procdure est supprime). 6.8.3 Gestion du multisyntaxe en excution Mcanisme de base Le mcanisme de base est le suivant : dtermina- tion dynamique de la syntaxe selon le nombre et le type des paramtres Le moteur d'excution recherche la syntaxe : dont le nombre de paramtres correspond. pour laquelle le nombre de conversions est mini- mal. Si deux syntaxes sont quivalentes, c'est la pre- mire dans l'ordre de l'diteur de code qui est ex- cute. Dynamic dispatch Dans le cas d'une procdure plusieurs syntaxes dont les paramtres attendent des instances de classe, le moteur d'excution utilise la mthode du "Dynamic dispatch" pour dterminer la syntaxe appeler. Considrons l'exemple suivant : une classe "ClasseBase" deux classes "ClasseDrive1" et WLangage.book Page 103 Mardi, 23. avril 2013 1:59 13 104 Partie 2 : Syntaxe de base du WLangage "ClasseDrive2" qui hritent de "ClasseBase". Mthodes virtuelles Pour la gestion des mthodes virtuelles, plusieurs aspects peuvent tre pris en compte : 1er aspect : une syntaxe de la mthode de la classe drive redfinit une syntaxe de la mthode de la classe de base : 2me aspect : une syntaxe supplmentaire dans la mthode de la classe drive : 3me aspect : cas particulier lorsque la mthode de la classe de base et la mthode de la classe drive ont chacune une seule syntaxe avec des prototypes diffrents : Le compilateur ne peut pas dcider si la mthode de la classe drive est une redfinition de celle de la classe de base ou une nouvelle syntaxe. Pour provoquer une redfinition, il faut ajouter l'attribut d'extension <redfinition> la mthode de la classe drive : . Pour provoquer une multisyntaxe, il faut ajouter l'attribut d'extension <multisyntaxe> la mthode de la classe drive. // Premire syntaxe PROCEDURE p(LOCAL p est ClasseBase) // Seconde syntaxe PROCEDURE p(LOCAL p est ClasseDrive1) // Appels pBase est ClasseBase dynamique // Initialisation pBase = allouer ClasseBase p(pBase)// premire syntaxe // Initialisation pBase = allouer ClasseDrive1 p(pBase)// seconde syntaxe // Initialisation pBase = allouer ClasseDrive2 p(pBase)// premire syntaxe ClasseBase PROCEDURE meth(s est une chaine) PROCEDURE meth(n est un entier) ClasseDrive PROCEDURE meth(n est un entier) // appel oBase est ClasseBase oBase.meth("A") // appelle la 1re syntaxe dans la classe ClasseBase oBase.meth(1) // appelle la 2me syntaxe dans la classe ClasseBase oDrive est ClasseDrive oDrive.meth("A") // appelle la 1re syntaxe dans la classe Classe- Base oDrive.meth(1) // appelle la 1re syntaxe dans la classe ClasseDrive ClasseBase PROCEDURE meth(p) PROCEDURE meth(s est une chane) ClasseDrive PROCEDURE meth(n est un entier) // appel oBase est ClasseBase oBase.meth("A")// appelle la 2me syntaxe dans la classe ClasseBase oBase.meth(1)// appelle la 1re syn- taxe dans la classe ClasseBase oDrive est ClasseDrive oDrive.meth("A")// appelle la 2me syntaxe dans la classe ClasseBase oDrive.meth(1)// appelle la 1re syntaxe dans la classe ClasseDrive ClasseBase PROCEDURE meth(s est une chane) ClasseDrive PROCEDURE meth(n est un entier) PROCEDURE mthode(...) <redfini- tion> PROCEDURE mthode(...) <multisyn- taxe> WLangage.book Page 104 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 105 7. GESTION DES EXCEPTIONS 7.1 Prsentation En cas d'erreur de programmation dans une appli- cation / un site, le mcanisme de scurit du WLangage est activ. Un message d'erreur apparat alors l'utilisateur final / linternaute, et l'excution du programme se termine. Pour attnuer les consquences des erreurs de programmation, WinDev / WebDev propose diver- ses solutions : l'affichage d'un message d'erreur personnalis (non disponible en WebDev). le mcanisme des exceptions. Il est alors possi- ble de personnaliser la gestion de l'erreur. Attention : ces solutions permettent uniquement de grer des erreurs de programmation. Ces solu- tions ne permettent pas de grer des erreurs d'ex- cution (du type criture impossible dans un fichier en lecture seule). 7.1.1 Affichage d'un message personnalis Pour afficher un message personnalis lors d'une erreur de programmation, il suffit de saisir le texte de l'erreur lors de la cration de l'excutable. Il est ainsi possible, sans la moindre programma- tion d'afficher un message du type : "Problme dans l'application XXX : Notez le texte de l'erreur et contactez notre support technique au xx.xx.xx.xx.xx". 7.1.2 Mcanisme des exceptions Le mcanisme des exceptions permet de traiter les cas d'erreur par programmation. Si un traitement d'exception est dclench, aucun message d'erreur n'est affich, et le code de l'exception est excut. Ce code permet de raliser toutes les oprations ncessaires : pour sortir "correctement" de l'application / du site en cours si l'erreur est fatale pour rendre la main l'utilisateur / linternaute si l'erreur est corrigible. WinDev / WebDev propose deux types de traite- ment des exceptions : les exceptions gnrales : le traitement d'excep- tion est valable pour l'ensemble d'un objet (pro- jet, fentre, page, tat, ...) les exceptions spcifiques : le traitement d'exception est valable uniquement sur une por- tion de code dtermine. les exceptions automatises : la gestion des exceptions se met en place directement depuis l'interface de WinDev, WebDev et WinDev Mobile. 7.2 Mcanisme des exceptions gnrales 7.2.1 Prsentation Un traitement d'exception gnral est disponible pour l'ensemble des composants de l'objet auquel il est associ. Ce traitement d'exception sera utili- sable tant que l'objet est disponible. Un traitement d'exception gnral peut tre dclar dans n'importe quel traitement. Quelques exemples : si le traitement d'exception est dclar dans le code d'initialisation du projet, il est valide pour toute erreur se produisant dans le projet. si le traitement d'exception est dclar dans le code d'initialisation d'une fentre (code de dcla- ration des globales dune page ou code douver- ture d'un tat), il est valide pour toute erreur survenant dans la fentre / page, un champ de la fentre / page, une procdure locale la fentre / page. Ce traitement d'exception n'est plus valide la fermeture de la fentre / page. si le traitement d'exception est dclar dans un traitement quelconque, il est valide pour toute erreur se produisant dans ce traitement. Ce trai- tement d'exception ne sera plus valide une fois le traitement termin. Ainsi, un traitement d'excep- tion dclar dans un code de clic d'un bouton ne sera valide que dans ce traitement et dans tou- tes les procdures appeles partir de ce traite- ment. WLangage.book Page 105 Mardi, 23. avril 2013 1:59 13 106 Partie 2 : Syntaxe de base du WLangage 7.2.2 Syntaxes de dclaration Traitement de l'exception sur une ligne QUAND EXCEPTION <Traitement exception sur 1 ligne> <Suite du code> Traitement de l'exception sur plusieurs lignes QUAND EXCEPTION <Code du traitement de l'exception> FIN <Suite du code> 7.2.3 Dclaration de plusieurs traitements d'exceptions gnrales Dclaration des traitements d'exceptions gnra- les dans un mme traitement Le second traitement d'exception remplacera le premier traitement d'exception partir de la dcla- ration du second traitement d'exception. Exemple : Dans la procdure Exemple, si une erreur survient : dans le <Code1> : aucune gestion des exceptions n'est active sauf si une procdure d'exception a t dfinie dans le code appelant (dans la fen- tre en cours ou dans le projet) dans le <Code 2> : le traitement des exceptions actif est <Traitement Exception 1> dans le <Code 3> : le traitement des exceptions actif est <Traitement Exception 2 Dclaration de traitements d'exception dans des traitements diffrents Si des traitements d'exception sont dclars dans des objets imbriqus (par exemple projet et fentre / page, ou fentre / page et champ), le traitement d'exception du plus petit objet masque le traite- ment d'exception principal pendant la dure de vie de cet objet. Exemple, si les deux traitements d'exception sui- vants sont dclars : traitement d'exception A dclar dans le code d'initialisation d'un projet traitement d'exception B dclar dans le code d'initialisation d'une fentre / page Pour toutes les erreurs rencontres dans la fentre / page, le traitement d'exception B sera utilis et masquera le traitement d'exception A. Imbrication de traitements d'exception dans des traitements diffrents : grer l'exception par un niveau suprieur Si des traitements d'exception sont dclars dans des objets imbriqus (par exemple projet et fentre / page, ou fentre / page et champ), il est possible de grer l'erreur dans le traitement d'exception du niveau suprieur. Il suffit d'utiliser le mot-cl EXCEPTION dans le trai- tement d'exception. Exemple : 7.2.4 Remarques gnrales Un traitement d'exception ne peut tre utilis qu'une seule fois Un traitement d'exception ne peut tre utilis qu'une seule fois. Si une seconde exception sur- vient, le traitement d'exception ne sera pas ex- cut. Si un traitement d'exception d'un niveau suprieur existe, ce traitement d'exception sera excut. Pour r-activer un traitement d'exception aprs utili- sation, utilisez la fonction ExceptionActive. Atten- tion, cette fonction doit tre manipule avec prcaution. Par exemple : un traitement d'exception gnrale a t dclar au niveau de la fentre et au niveau du projet. PROCEDURE Exemple() <Code 1> QUAND EXCEPTION <Traitement exception 1> FIN <Code 2> QUAND EXCEPTION <Traitement exception 2> FIN <Code 3> // Code d'initialisation du projet QUAND EXCEPTION // on arrte l'application FinProgramme FIN
// Procdure globale ValeurChamp // renvoie la valeur du champ // renvoie "" si il n'existe pas PROCEDURE ValeurChamp(sNomChamp) QUAND EXCEPTION // si c'est l'erreur de code // ChampInconnu, on renvoie "" SI ExceptionInfo(errCODE) = ... ChampInconnu ALORS RENVOYER "" // si c'est une autre erreur, // on appelle le gestionnaire // d'erreur du projet EXCEPTION FIN WLangage.book Page 106 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 107 Une premire erreur de programmation survient dans la fentre / page. Cette erreur est traite par le traitement d'exception de la fentre / page. Une seconde erreur survient dans la fentre / page. Cette erreur est traite par le traitement d'exception du projet. Qualit du code WLangage du traitement de l'exception Il n'est pas possible de dclarer un traitement d'exception l'intrieur d'un autre traitement d'exception. Il est recommand de veiller la qua- lit du code dans les traitements d'exception car toute erreur provoquera l'affichage de la fentre / page standard du mcanisme de scurit du WLan- gage. Qualit du code suivant un traitement d'exception Aprs l'excution d'un traitement d'exception, le code WLangage suivant le traitement est excut. Il est recommand de veiller la qualit de ce code (pour viter l'affichage d'un message d'erreur). Exemple : Dans le code suivant, la ligne {"Champ1"}..valeur = 5 dclenche le traitement d'exception. A la fin du traitement d'exception la mme ligne de code est rexcute : l'exception a dj t traite et le mcanisme de scurit du WLangage est dclench. Pour viter ce problme, il est conseill en fin du traitement d'exception : soit de s'assurer que le problme est corrig et ne se reproduira plus. soit d'utiliser les mots-cls RETOUR et RENVOYER pour sortir du traitement en cours soit d'utiliser la fonction RepriseSaisie pour ren- dre la main l'utilisateur. soit dutiliser la fonction FinProgramme pour fer- mer l'application. 7.2.5 Cas particulier Un traitement d'exception gnrale ne peut pas tre dclar dans les instructions composes de type : POUR BOUCLE TANTQUE Dans ce type d'instruction, utilisez le traitement d'exception spcifique. 7.3 Mcanisme des exceptions spcifiques 7.3.1 Prsentation Un traitement d'exception spcifique permet de traiter uniquement un code risque (c'est--dire un code pouvant provoquer une exception). L'excep- tion sera dclenche si une erreur de programma- tion survient dans le code spcifi. Ce traitement d'exception spcifique sera utilisable uniquement dans le traitement dans lequel il est dclar. Remarques Un traitement d'exception spcifique peut tre dclar dans n'importe quel traitement. Un traitement d'exception spcifique est priori- taire sur un traitement d'exception gnral. 7.3.2 Syntaxes de dclaration Traitement de l'exception simple QUAND EXCEPTION DANS <Code pouvant provoquer une exception> FAIRE <Code de traitement de l'exception> FIN <Suite du code> Traitement de l'exception avanc QUAND EXCEPTION DANS <Code pouvant provoquer une exception> FAIRE <Code de traitement de l'exception> SINON <Code utilis si l'exception n'est pas dclenche> FIN <Suite du code> 7.4 Mcanisme des exceptions automatises La gestion des exceptions peut tre personnalise par traitement. Vous pouvez choisir d'utiliser un traitement auto- matique d'exception, ou opter pour une gestion avance grce diffrentes fonctions WLangage. WLangage.book Page 107 Mardi, 23. avril 2013 1:59 13 108 Partie 2 : Syntaxe de base du WLangage Important : La gestion automatique des erreurs et des exceptions fonctionne uniquement pour le trai- tement pour lequel elle est dfinie. 7.4.1 Mise en place Pour mettre en place la gestion automatique des exceptions : 1. Affichez sous l'diteur de code, le traitement dans lequel les exceptions doivent tre traites : code d'initialisation, code de clic, procdure, ... 2. Dans l'en-tte du code, cliquez sur "Quand exception par programme". 3. La fentre qui s'affiche permet de spcifier le type de traitement automatique effectuer : Excuter le traitement d'erreur ("CAS EXCEP- TION:" dans le code) Excuter une procdure de traitement d'excep- tion. 7.4.2 Excuter le traitement d'erreur ("CAS EXCEPTION:" dans le code) Si cette option est slectionne, une ligne de code est ajoute dans le code en cours "CAS EXCEPTION : ". Les lignes de code suivant cette ti- quette seront excutes lorsqu'une exception sera rencontre dans les lignes de code prcdentes (ou dans un traitement appel par ces lignes de code). Cette option est conseille pour regrouper par exemple tous les traitements d'exception pouvant survenir. 7.4.3 Excuter une procdure de traitement d'exception Si cette option est slectionne, lorsqu'une excep- tion sera rencontre dans le traitement en cours (ou dans les traitements appels par le traitement en cours), la procdure indique sera automatique- ment excute pour traiter l'erreur. Cette option est conseille si vous possdez dans votre application une procdure existante traitant les exceptions. L'appel cette procdure sera automatique ds qu'une exception est rencontre. Aucun test faire. Dans cette procdure, il est possible de renvoyer une des constantes prsentes dans le tableau ci- dessous. En fonction de la constante renvoye, WinDev/Web- Dev effectuera le traitement correspondant. 7.5 Fonctions de gestion des exceptions Les fonctions suivantes permettent de grer les exceptions :
Ces fonctions sont dtailles dans laide en ligne. OpAnnuler Relance l'exception OpFinTraite- ment La fonction ayant dclench l'erreur renvoie une erreur et le traitement en cours s'arrte. quivalent RepriseSaisie OpFinPro- gramme La fonction ayant dclench l'erreur renvoie une erreur et le programme s'arrte. quivalent FinProgramme OpRelancePro- gramme Termine l'application et relance automatiquement l'application. ExceptionActive R-active le traitement d'exception en cours si l'exception a pu tre corrige. ExceptionAffiche Affiche la fentre standard des exceptions avec le contenu de l'exception courante. ExceptionChangePara- mtre Paramtre le comportement automatique adopter en cas d'exception dans le trai- tement en cours. ExceptionDclenche Dclenche artificiellement le mcanisme de scurit de WLangage en provoquant une exception. Cette exception peut alors tre traite par un code d'exception prvu cet effet. ExceptionInfo Rcupre des informations sur l'exception en cours. ExceptionPropage Propage une exception. Cette fonction doit tre excute dans un traitement d'exception et permet de relancer le mcanisme de traitement des exceptions. ExceptionRetaurePara- mtre Rtablit le traitement d'exception d'un traitement. Ce traitement d'exception a t modifi dans le traitement en cours par un appel la fonction ExceptionChangePa- ramtre. WLangage.book Page 108 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 109 8. PROGRAMMATION ORIENTE OBJET (POO) 8.1 Prsentation de la POO (Programmation Oriente Objet) La programmation oriente objet (appele "POO") est une mthode de programmation dans laquelle les programmes sont organiss comme des ensem- bles d'objets. Chaque objet reprsente une ins- tance d'une certaine classe, toutes les classes tant des membres d'une hirarchie de classes unifie par des relations d'hritage. La POO utilise donc des objets. Chaque objet est une instance d'une certaine classe. Les classes sont relies l'une l'autre par des relations d'hritage WLangage et POO Le WLangage est orient objet, en effet : il supporte les objets les objets ont une classe associe les classes peuvent hriter d'attributs venant de "super classes" Important : L'objet de ce chapitre n'est pas de dcrire les concepts de la programmation oriente objet, mais uniquement de dcrire comment dcla- rer les classes, les mthodes et les objets en WLan- gage. Ce chapitre donne les syntaxes de la POO en WLangage et le principe de la cration d'un pro- gramme orient objet en WLangage. Le lecteur est suppos connatre les classes, les objets, les hritages, ... Si vous ne connaissez pas la POO, nous vous con- seillons de lire des manuels spcialiss sur la POO avant de lire la suite de ce chapitre. 8.2 Concepts de la POO 8.2.1 Classe Une classe rassemble la description d'une struc- ture de donnes (les membres) et les traitements (les mthodes) qui manipulent cette structure. Une classe dfinit donc un type de donne et son comportement. Pour plus de dtails, consultez le paragraphe Classe, membres et mthodes, page 110. 8.2.2 Objet Une classe permet de crer des objets. Chaque objet cr possde les membres dcrits dans sa classe et peut-tre manipul par les mthodes de sa classe. On dit qu'un "objet est une instance de la classe". Une classe peut tre considre comme un modle qui dfinit les membres et les mthodes commu- nes plusieurs objets. Un membre est un paramtre de l'objet. Une mthode permet d'agir sur l'objet, pour modifier ses membres par exemple. Pour plus de dtails, consultez le paragraphe Objet, page 114. WLangage.book Page 109 Mardi, 23. avril 2013 1:59 13 110 Partie 2 : Syntaxe de base du WLangage 8.2.3 Constructeur et destructeur La notion de Constructeur et Destructeur est impor- tante puisquelle permet un appel automatique de mthode lors de la cration d'un objet et lors de sa destruction. La mthode Constructeur associe une classe est automatiquement appele lors de la dclara- tion d'un objet de la classe. Cela permet de s'assu- rer que les traitements d'initialisation de l'objet (affectation des membres, par exemple) ne seront pas oublis par le dveloppeur. La mthode Destructeur associe une classe est automatiquement appele lors de la suppression de l'objet (sortie de procdure dans laquelle l'objet a t dclar). Cela permet de librer sans risque d'oubli les ressources utilises par l'objet (zone mmoire, par exemple). Elle peut aussi tre utilise pour mettre jour un fichier relatif l'objet. Pour plus de dtails, consultez le paragraphe Constructeur et destructeur, page 113. 8.2.4 Hritage L'hritage permet d'inclure les caractristiques d'une classe existante (classe de base) dans une nouvelle classe (classe drive). Cela permet de crer un nouveau type de donne partir d'un type connu, dans le but de lui ajouter des fonctionnali- ts, ou d'en modifier le comportement. La classe de base ne sera donc pas modifie. Une classe peut hriter d'une ou de plusieurs autres classes dont elle devient une sous-classe. Une classe drive hrite donc des membres et des mthodes de sa ou ses classes mres, en plus de ses propres membres et mthodes. Il n'est pas ncessaire de dupliquer les membres et mthodes de la ou des classes mres. Pour plus de dtails, consultez le paragraphe Hri- tage de classe, page 115. 8.2.5 Encapsulation de donnes L'encapsulation des donnes est sans aucun doute la notion la plus importante de la POO. Cette techni- que permet de garantir que les donnes membres de l'objet ne seront pas modifies tort par des fonctions (mthodes) extrieures l'objet. Il est ainsi possible d'interdire un utilisateur d'un objet l'accs certain ou tous ses membres. Les mem- bres dont l'accs est interdit sont appels mem- bres privs. Il n'est possible d'y accder qu' partir des mtho- des prvues cet effet dans la classe. 8.3 Classe, membres et mthodes Une classe est compose de : donnes, appeles membres constantes procdures, appeles mthodes. Une mthode est une procdure spcialement crite pour manipuler les objets de la classe. Pour utiliser une classe, il faut dclarer un ou plu- sieurs objets. Tous les objets d'une classe donne sont identiques par leur forme et leur comporte- ment, mais leurs membres contiennent des don- nes diffrentes. Par dfaut les membres d'une classe sont publics, ils sont accessibles aussi bien par une mthode de la classe que par un traitement du projet ou de ses lments (champ, fentre, page, ...) Exemple de classe : La classe "Fichier" est compose des membres : Nom, Extension, Rpertoire La classe "Fichier" a les mthodes suivantes : SlectionFichier() pour slectionner un fichier et affecter les membres de l'objet Fichier avec le fichier slectionn TailleFichier() pour connatre la taille du fichier de l'objet Fichier 8.3.1 Dclaration de la classe <NomClasse> est une classe <Dclaration des membres> FIN ClasseSystme est une classe Nom est une chane FIN Membre Mthode WLangage.book Page 110 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 111 8.3.2 Dclaration des membres [<Accs>] [CONSTANT] [GLOBAL] <Nom du membre> est un <Type du membre> Les paramtres importants de cette syntaxe sont les suivants : <Accs> : Optionnel Permet de restreindre l'accs ce membre de la classe. 3 niveaux sont disponibles : Priv : accs autoris depuis un code de la classe Protg : accs autoris depuis un code de la classe ou un code d'une classe drive Public (par dfaut) : accs autoris depuis n'importe quel code de la classe ou du pro- jet. CONSTANT : Optionnel Modifie les contraintes d'accs, en autorisant un accs en lecture. Protg CONSTANT : La valeur du membre peut tre lue et modifie depuis un code de la classe, uniquement lue depuis un code d'une classe drive, et inaccessible depuis un autre code de l'application. Public CONSTANT : La valeur du membre peut tre lue et modifie depuis un code de la classe ou d'une classe drive, et unique- ment lue depuis un autre code de l'applica- tion. GLOBAL : Optionnel Dfinit un membre global. Ce membre existera en dehors des objets. Il pourra tre utilis sans instancier un objet. Si plusieurs objets sont dclars, un membre global est commun tous les objets. <Nom du membre> Nom identifiant le membre. <Type du membre> Type du membre choisi parmi les types disponi- bles du WLangage. 8.3.3 Dclaration des constantes CONSTANT <Nom constante> = ... <Valeur de la constante> ou CONSTANT <Nom constante> = <Valeur de la constante> <Nom constante> = <Valeur de la constante> FIN Les paramtres importants de cette syntaxe sont les suivants : <Nom de la constante> Nom de la constante. Une constante est publi- que. <Valeur de la constante> Valeur associe la constante. Cette valeur ne variera pas au cours du programme. 8.3.4 Dclaration des mthodes Fonction [<Accs>] [Globale] [VIRTUELLE] <Nom de la classe>::<Nom de la mthode> ([<Paramtre1>, ... [<ParamtreN>]]) ou Procdure [<Accs>] [Globale] [VIRTUELLE] <Nom de la classe>::<Nom de la mthode> ([<Paramtre1>, ... [<ParamtreN>]]) Les paramtres importants de cette syntaxe sont les suivants : <Accs> : Optionnel Permet de restreindre l'accs cette mthode. 3 niveaux sont disponibles : Priv : la mthode peut tre appele unique- ment depuis un code de la classe Protg : la mthode peut tre appele uni- quement depuis un code de la classe ou un code d'une classe drive Public (par dfaut) : la mthode peut tre appele depuis n'importe quel code de la ClasseSystme est une classe Nom est une chane Priv Taille est un entier FIN CONSTANT K=5 CONSTANT K=5 J=10 FIN Procdure Globale ... ClasseSystme::VoirObjet(obj) // Le membre priv Taille est // accessible depuis le code de // la classe Info("Nom : "+Obj:Nom + ... "Taille : "+Obj:Taille) Fonction Globale ... ClasseSystme::Essai(a,b) Renvoyer a+b WLangage.book Page 111 Mardi, 23. avril 2013 1:59 13 112 Partie 2 : Syntaxe de base du WLangage classe ou du projet. Globale : Optionnel Dfinit une mthode globale. Cette mthode ne travaillera pas sur un objet particulier : il n'est pas ncessaire de disposer d'un objet de la classe pour appeler cette mthode. Cette classe permet aussi de manipuler les membres globaux. Virtuelle : Optionnel Dfinit une mthode virtuelle. Par dfaut, une mthode redfinie est virtuelle. <Nom de la classe> Nom identifiant la classe. <Nom de la mthode> Nom identifiant la mthode. <Paramtre 1 .... Paramtre N> Paramtres optionnels passer la mthode. Porte identifie par la couleur du bandeau Une mthode d'une classe peut tre publique, pri- ve ou protge. La couleur de dbut de bandeau de l'vnement change en fonction de la porte de la mthode : dbut de bandeau rouge : mthode prive. dbut de bandeau orange : mthode protge. dbut de bandeau habituel : mthode publique. Suppression dune mthode Une mthode peut tre supprime : directement depuis le volet "Explorateur de pro- jet" (option "Supprimer" du menu contextuel) depuis l'diteur de code, par le menu contextuel du bandeau de la mthode (option "Supprimer"). 8.3.5 Cration et dclaration des proprits Une proprit est un lment de code possdant deux traitements : un traitement de rcupration de la valeur et un traitement d'affectation de la valeur. Une proprit peut tre utilise comme une varia- ble ou un membre (rcupration directe de la valeur, affectation par le symbole '=', ...). Lors de l'excution : Toute opration ncessitant la lecture de la pro- prit excute le traitement de rcupration de la valeur. Ce traitement doit renvoyer une valeur. Toute opration ncessitant l'criture de la pro- prit excute le traitement d'affectation de la valeur qui doit traiter un paramtre. Cration dune proprit de classe Pour crer une proprit de classe : 1. Dans l'explorateur de projet, affichez les diff- rentes classes disponibles (droulez le dossier "Classes"). 2. Slectionnez la classe voulue. Affichez le menu contextuel de la classe et slectionnez l'option "Nouvelle proprit". 3. Saisissez le nom de la proprit dans la fentre qui s'ouvre et validez. 4. L'diteur de code affiche les traitements lis la proprit : Traitement de rcupration de la proprit. Ce traitement contient : soit le mot-cl "RENVOYER" qui permet d'obtenir la valeur de la proprit. soit le mot-cl "RETOUR =" pour renvoyer la valeur de la proprit. Traitement d'affectation de la proprit. Ce traite- ment permet de donner une valeur la proprit. Cette valeur est passe en paramtre. Ce traite- ment ne doit pas renvoyer de rsultat. Remarque : Une nouvelle proprit peut galement tre cre depuis le menu contextuel d'un membre. Les procdures manipulent alors automatiquement le membre spcifi. Pour plus de dtails, consultez laide en ligne. Droits daccs une proprit Si le traitement de rcupration est vide, la lecture de la proprit est interdite. Une erreur de compila- tion apparatra sous l'diteur et une erreur se pro- duira galement en excution. Si le traitement d'affectation est vide, l'criture de la proprit est interdite. Une erreur de compilation apparatra sous l'diteur et une erreur se produira galement en excution. Les traitements de rcupration et d'affectation peuvent tre publics, privs ou protgs. Les droits d'accs de la proprit correspondent aux droits les moins restrictifs des deux traitements. Les proprits peuvent tre globales. Une proprit est globale la classe lorsque les traitements de rcupration et d'affectation sont globaux. Si l'un des traitements est global, tous les traitements doi- vent l'tre sinon une erreur de compilation est affi- che. Pour plus de dtails, consultez laide en ligne. WLangage.book Page 112 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 113 8.4 Constructeur et destructeur Par dfaut, lors de la cration d'une classe sous l'diteur de code les mthodes Constructeur et Destructeur sont automatiquement cres. La mthode Constructeur, si elle est dfinie par le dveloppeur, est automatiquement appele lors de l'instanciation d'un objet. Elle permet par exemple d'effectuer des initialisations sur l'objet ou relatives l'objet (affectation des membres, vrifications...) La mthode Destructeur, si elle est dfinie par le dveloppeur, est automatiquement appele lors de la suppression de l'objet (sortie de procdure dans laquelle l'objet a t instanci). Elle permet par exemple d'effectuer les traitements de libration de ressources... Les mthodes Constructeur et Destructeur ne peu- vent pas contenir les fonctions Evnement, Timer, Multitache, DnDEvnement, DDEEvnement, AppelDLL32, ... 8.4.1 Constructeur de la classe Dclaration du constructeur Syntaxe : PROCEDURE [<Accs>] Constructeur([<Param- tres>]) Les paramtres importants de cette syntaxe sont les suivants : <Accs> 3 niveaux d'accs sont disponibles : PUBLIC (par dfaut) : Le constructeur est accessible en dehors de la classe. PROTEGE : Le constructeur est accessible dans la classe et dans les classes drives. PRIVE : Le constructeur est accessible uni- quement dans la classe. <Paramtres> Paramtres optionnels du constructeur. 8.4.2 Constructeur des classes de base et des membres Si une classe de base ou un membre de type classe possde un constructeur, ce constructeur est automatiquement appel sans paramtre. Il faut : soit attribuer des valeurs par dfaut aux param- tres du constructeur (de la classe de base ou du membre) soit appeler explicitement le constructeur en lui passant les paramtres. Appel de la mthode constructeur pour construire une classe Syntaxe : Constructeur <NomClasse>(<Paramtres>) o <NomClasse> Nom identifiant la classe <Paramtres> Paramtres du constructeur. Appel de la mthode constructeur pour construire un membre Syntaxe : Constructeur <Nom Membre>(<Paramtres>) o <NomMembre> Nom identifiant le membre de la classe <Paramtres> Paramtres du constructeur. 8.4.3 Mthode Destructeur Dclaration de la mthode Procdure <NomClasse>::Destructeur() Le destructeur n'accepte aucun paramtre. ClasseSystme est une classe Nom est une chane FIN WLangage.book Page 113 Mardi, 23. avril 2013 1:59 13 114 Partie 2 : Syntaxe de base du WLangage 8.5 Objet Pour accder une classe, il faut dclarer l'objet comme tant de la classe manipuler, on parle d'instanciation d'un objet. Une instance est un objet qui appartient une classe donne. Pour manipuler un objet, il faut 1. dcrire sa classe, 2. dclarer l'objet comme tant de la classe. Un objet peut tre pass en paramtre une fonc- tion ou une procdure. Remarque : Il est possible d'instancier dynamique- ment un objet une classe. Pour plus de dtails, consultez instanciation dynamique. Exemple d'objet : "FichierSource" est un objet de la classe "Fichier". Pour cet objet, il est possible de manipuler les membres "Nom", "Extension"... 8.5.1 Dclaration d'un objet <NomObjet> est [un] [objet] <NomClasse> ([<Paramtres>]) Les paramtres importants de cette syntaxe sont les suivants : <NomObjet> Nom identifiant l'instance de la classe. <Nom classe> Nom identifiant la classe, dfini lors de la cra- tion de la classe sous l'diteur de code. <Paramtres> Paramtres optionnels du constructeur. 8.5.2 Les membres d'un objet Un membre d'un objet est une donne associe l'objet. Un objet possde ncessairement tous les membres dcrits dans la classe. Un membre est galement appel proprit de l'objet. Les membres d'un objet correspondent tous les membres dfinis pour la classe d'origine de l'objet. Rappel : un membre est dclar dans la classe. 8.5.3 Les mthodes d'un objet Les mthodes d'un objet sont des fonctionnalits associes l'objet. Un objet possde ncessaire- ment toutes les mthodes dcrites dans la classe. Ces mthodes peuvent tre appeles de diffren- tes faons selon le lieu de l'appel. 1. Appeler une mthode appartenant un objet diffrent de l'objet en cours <Nom Objet> : <Nom Mthode> ([<Paramtres>]) La mthode est recherche parmi les mthodes de la classe de l'objet. Si la mthode n'est pas trou- ve, elle est recherche parmi les mthodes des classes anctres de la classe de l'objet. 2. Appeler une mthode de l'objet en cours : <Nom Mthode> ([<Paramtres>]) 3. Appeler une mthode d'une classe anctre qui a t redfinie <Nom Objet> : <Nom Classe> :: <Nom Mthode> ([<Paramtres>]) 4. Appeler une mthode de classe gnrale <Nom Classe>::<Nom Mthode>([<Paramtres>]) 8.5.4 Dure de vie d'un objet L'objet est cr lors de sa dclaration. Par dfaut l'objet est local. L'objet est automatiquement dtruit la fin du traitement contenant sa dclaration : Un objet dclar global dans le code de dclara- tion des globales d'une fentre / page sera dtruit la fin du traitement de fermeture de la fentre / page. Un objet dclar global dans le code d'initialisa- tion d'un projet sera dtruit la fermeture du pro- jet. FichierSource est un objet Fichier FichierSource est un Fichier FichierS est un Fichier FichierD est un Fichier ch1,ch2 sont des Chanes // Mthode de slection d'un fichier FichierS:SlectionFichier() FichierD:SlectionFichier() // Appel de la mthode de vrif. // de l'espace disponible SI FichierS:EspaceRestant(... FichierD:Repertoire[[1]]) alors ch1= FichierS:Repertoire+"\"+... FichierS :Nom+"."+ ... FichierS Extension ch1= FichierD :Repertoire+"\"+... FichierD :Nom+"."+ ... FichierD :Extension fCopieFichier(FichierS,FichierD) SINON Erreur("Espace non suffisant") FIN WLangage.book Page 114 Mardi, 23. avril 2013 1:59 13 Partie 2 : Syntaxe de base du WLangage 115 8.6 Instanciation dynamique d'un objet Un objet peut tre associ dynamiquement une classe, on parle alors d'instanciation dynamique de l'objet. L'instanciation dynamique d'objet permet de crer un objet un instant donn et de librer cet objet lorsqu'il n'est plus utilis. Pour instancier un objet, il faut : 1. dclarer un objet dynamique 2. instancier l'objet Remarque : la libration de l'objet est automatique lorsquil n'est plus utilis. Toutefois, il est possible de forcer la destruction de l'objet (pour provoquer l'excution du destructeur par exemple). 8.6.1 Dclaration d'un objet dynamique <NomObjet> est [un][objet] <NomClasse> dyna- mique Les paramtres de cette syntaxe sont les suivants : <NomObjet> : Nom identifiant l'instance de la classe. <Nom classe> : Nom identifiant la classe, dfini lors de la cration de la classe sous l'diteur de code. 8.6.2 Instancier un objet dynamique <NomObjet> = ... allouer un <Nom Classe> [<Paramtres>]) Les paramtres de cette syntaxe sont les suivants : <NomObjet> : Nom identifiant l'instance de la classe. <Nom classe> : Nom identifiant la classe, dfini lors de la cration de la classe sous l'diteur de code. <Paramtres> : Paramtres optionnels du cons- tructeur. 8.6.3 Librer un objet dynamique Librer <NomObjet> 8.7 Hritage de classe L'organisation hirarchique en classe et sous classe a permis de crer la notion d'hritage. Autrement dit un objet de la sous-classe A (classe drive) qui possde les mmes caractristiques que la classe B (classe anctre), plus certaines qui lui sont propres, hrite d'emble des caractristi- ques de la classe B sans qu'il soit ncessaire de dupliquer les programmes dans l'objet de la sous- classe A. Ainsi le nombre de lignes de code dimi- nue. L'hritage est le mcanisme par lequel la classe en cours de description utilise les mthodes et les membres dfinis dans les classes existantes. La classe existante est appele Classe anctre ou classe de base. La nouvelle classe est appele Classe drive. La Classe drive englobe la classe anctre et y ajoute de nouvelles mthodes et de nouveaux membres. Le but de l'hritage est de rcuprer pour une classe, les mthodes dveloppes pour une autre classe, en y ajoutant les spcificits de la nouvelle classe. Une classe drive permet ses objets d'accder toutes les mthodes et tous les membres de ses classes anctres; tout se passe comme si les mthodes et les membres des classes anctres fai- saient partie de la classe drive. Caractristiques d'un hritage : Un hritage peut tre multiple. Dans ce cas la classe drive peut tre drive de plusieurs classes anctres. Un hritage peut tre priv ou public (par dfaut). Si l'hritage est public, il est possible d'accder aux mthodes et aux membres hrits depuis l'extrieur de la classe. Si l'hritage est priv, seules les mthodes de la classe drive peuvent accder aux mthodes et aux membres hrits. Fichier est une classe Nom est une Chane Extension est une Chane Rpertoire est une Chane Fin FichierSource est un objet Fichier dynamique //... //crer l'objet //FichierSource =Allouer un Fichier //traitement sur l'objet ... //... //librer l'objet //Liberer FichierSource WLangage.book Page 115 Mardi, 23. avril 2013 1:59 13 116 Partie 2 : Syntaxe de base du WLangage 8.7.1 Syntaxe <NomClasseDrive> est une classe [PRIVE, PROTEGE, PUBLIC] Un objet <NomClasseAnctre> <Nom Membre classe Drive> est <Type membre> ... FIN Les paramtres importants de cette syntaxe sont les suivants : <NomClasseDrive> : Nom identifiant la classe drive en cours de dclaration. PRIVE : Mot-cl optionnel. Indique si l'hritage est priv ou non. Si ce mot n'est pas prcis, l'hritage est public. <NomClasseAnctre> : Nom de la classe anc- tre. <Nom Membre classe Drive> : Nom du mem- bre de la classe drive. Ce membre sera utilisa- ble uniquement dans un objet de la classe drive. <Type du membre> : Type du membre, choisi parmi les types disponibles. 8.7.2 Redfinition de mthodes Dans une classe drive, une mthode de la classe de base peut tre redfinie en crant dans la classe drive une mthode de mme nom que celle de la classe de base. La redfinition de mthode permet de modifier le comportement de la mthode dfinie dans la classe de base; la classe drive peut ventuelle- ment redfinir la mthode en fonction de ses besoins. Par dfaut, la mthode redfinie est une mthode virtuelle. Remarque : la surcharge d'une mthode (utilisation de deux mthodes de mme nom dans la mme classe) n'est pas gre en WLangage. Note : le mot-cl Objet permet d'accder l'objet courant l'intrieur d'une mthode. Fichier est une Classe Nom est une Chane Extension est une Chane Rpertoire est une Chane Fin
InfoFichier est une classe un objet Fichier TailleF est un entier DateF est une Chane HeureF est une Chane Fin WLangage.book Page 116 Mardi, 23. avril 2013 1:59 13 PARTIE 3 Gestion des champs, des fentres et des pages WLangage.book Page 117 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 118 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 119 1. GESTION DES FENTRES 1.1 Prsentation Les fentres constituent l'interface principale d'une application WinDev. En effet, c'est grce aux fen- tres que les utilisateurs vont pouvoir consulter et manipuler des informations. Ces informations peu- vent tre dynamiques et provenir par exemple de fichiers de donnes, de requtes ou tre statiques, saisies directement dans les champs de la fentre. WinDev et WinDev Mobile proposent plusieurs fonc- tions permettant de grer les fentres. Ce chapitre prsente : les fonctions de gestion des fentres. les fonctions MDI. les fonctions de gestion des menus. 1.2 Fonctions de gestion des fentres Les fonctions permettant de grer les fentres sont les suivantes : WD WDMobile Abandonne Ferme la fentre en cours en excutant ventuellement le code du bouton de type "ABANDON" ChangeFentre- Source Change dynamiquement la fentre affiche dans un champ fentre interne ChangeGabarit Change le gabarit d'une fentre. DlaiAvantFerme- ture Limite le temps d'affichage d'une fentre (lorsque le temps spcifi est coul, le code d'un bouton de la fentre est excut) DsactiveFAA Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ, sur une fentre ou sur l'application en cours. EnumreElment Enumre les fentres d'un projet EnumreSousEl- ment Enumre les groupes ou les menus d'une fentre. ExcuteFAA Excute une Fonctionnalit Automatique d'une Application (FAA) sur un champ ou une fentre. FenActiveGFI Active ou dsactive le GFI FenAdapteHauteur Adapte la hauteur de la fentre au contenu des champs. FenAdapteLargeur Adapte la largeur de la fentre au contenu des champs. FenAdapteTaille Adapte la taille de la fentre au contenu des champs. La fentre se redimensionne pour afficher les champs de manire optimale (sans ligne vide et sans ascenseur) FenAnimationFer- meture Modifie le type et la dure des animations utilises lors de la fermeture des fentres de l'application FenAnimationOuver- ture Modifie le type et la dure des animations utilises lors de louverture des fentres de l'application FenAnimationSui- vante Modifie le type et la dure de la prochaine animation de fentre FenChangeAlias Modifie l'alias d'une fentre FenColleFormulaire Colle le contenu d'un formulaire stock dans le presse-papiers. FenCopieFormulaire Copie le contenu d'un formulaire dans le presse-papiers. FenDsactiveEffet Dsactive des effets visuels du moteur graphique de WinDev. Cette fonction est utile pour permettre une application de fonctionner sur un poste ayant des capacits gra- phiques limites ou pour le mode TSE si la bande passant est limite. FenDonneHauteurA- dapte Renvoie la hauteur d'une fentre, adapte au contenu des champs. WLangage.book Page 119 Mardi, 23. avril 2013 1:59 13 120 Partie 3 : Gestion des fentres, des pages et des champs FenDonneLargeurA- dapte Renvoie la largeur d'une fentre, adapte au contenu des champs. FenEffetInactif Active ou dsactive le GFI FenEnCours Identifie la fentre en cours de saisie FenEnExcution Identifie la fentre contenant le code du WLangage en cours d'excution FenEtat Identifie ou modifie l'tat d'une fentre FenExtHaut Renvoie la hauteur totale d'une fentre FenExtLarg Renvoie la largeur totale d'une fentre FenExtPosX Renvoie la position horizontale d'une fentre par rapport au coin haut gauche de l'cran FenExtPosY Renvoie la position verticale d'une fentre par rapport au coin haut gauche de l'cran FenForceGFI Force le GFI (Grisage des Fentres Inaccessibles) sur une fentre mme si cette fen- tre n'est pas inaccessible. FenHauteurBarreI- cone Renvoie ou modifie la hauteur actuelle de la zone "Barre d'icnes" de la fentre mre MDI en cours FenImageFond Modifie l'image de fond d'une fentre en prcisant le mode d'affichage de cette image FenInitialise Permet de savoir si le code de fin d'initialisation d'une fentre a t excut. FenIntHaut Renvoie la hauteur interne d'une fentre FenIntLarg Renvoie la largeur interne d'une fentre FenIntPosX Renvoie la position horizontale de la zone interne d'une fentre par rapport au coin haut gauche de l'cran FenIntPosY Renvoie la position verticale de la zone interne d'une fentre par rapport au coin haut gauche de l'cran FenOrientation Modifie ou rcupre lorientation daffichage de la fentre courante. FenPrcdente Identifie la fentre qui tait en cours de saisie avant la fentre actuellement en cours de saisie FenRectangleEcran Renvoie les coordonnes de l'cran qui contient une fentre. FenRepeint Re-dessine immdiatement les champs de la fentre ncessitant une mise jour gra- phique FenTaille Renvoie ou modifie le mode d'affichage d'une fentre, modifie la hauteur et/ou la lar- geur d'une fentre, dplace une fentre et modifie sa hauteur et/ou sa largeur FenTailleUtile Change dynamiquement la taille utile de la fentre interne affiche dans un champ fentre interne. FenTauxGFI Permet de connatre ou de modifier le taux de grisage des fentres utilisant le GFI Ferme Ferme une fentre WinDev (en renvoyant si ncessaire une valeur) Iconise Iconise une fentre WinDev ImageFentre Cre l'image de la fentre spcifie dans un fichier BMP InitFentre Initialise les champs zro (ou non) et lance les traitements d'initialisation des champs et de la fentre Maximise Affiche une fentre WinDev dans sa taille maximale MultitacheRepeint Re-dessine immdiatement les champs de la fentre ncessitant une mise jour gra- phique NombreFentre Calcule le nombre de fentres de l'application en cours actuellement ouvertes Ouvre Ouvre une fentre modale WinDev OuvreFille Ouvre une fentre fille non modale OuvrePopup Ouvre une fentre popup OuvrePopupPosition Ouvre une fentre popup selon une position dfinie OuvreSoeur Ouvre une fentre soeur non modale RAZ R-initialise les champs de la fentre en cours. Restaure Affiche une fentre WinDev dans sa taille initiale WLangage.book Page 120 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 121 1.3 Fonctions MDI Les fonctions permettant de grer les fentres MDI sont les suivantes : 1.4 Fonctions de gestion des menus WinDev et WinDev Mobile proposent plusieurs fonc- tions du WLangage spcifiques aux options de menu : StyleDessin Permet de connatre et de modifier le mode d'affichage des boutons griss ainsi que le mode d'affichage du cadre translucide des fentres de votre application. TitreEnCours Modifie le titre de la fentre en cours et la barre de titre TitreSuivant Modifie le titre de la prochaine fentre ouvrir Utilise Ouvre une fentre WinDev et ferme toutes les autres fentres prcdemment ouvertes Pour plus de dtails sur ces fonctions, et pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WinDev Mobile), consultez laide en ligne. MDIActive Identifie ou active une fentre fille MDI en avant-plan MDIEnumreFille Renvoie l'alias de la fentre fille MDI spcifie MDIMenuFentre Modifie l'agencement des fentres filles MDI MDIMre Identifie le nom de la fentre mre MDI MDIOuvre Ouvre une fentre fille MDI Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev. ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert EnumreMenu Renvoie le nom de la nime option de menu EnumreSousElment Utilise dans une boucle, cette fonction permet d'numrer les menus drou- lants ou les menus contextuels d'une fentre ou d'un champ. grMenu Active ou dsactive le menu contextuel d'un graphe. MenuAjoute Ajoute un menu contextuel dans un menu MenuAjouteMenu Ajoute un nouveau menu dans une fentre. Ce menu pourra contenir d'autres menus, des options de menu, des sparateurs, MenuAjouteOption Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. MenuAjouteOptionURL Ajoute une nouvelle option de menu la fin d'un menu prsent dans une page. Cette option de menu excute une URL passe en paramtre et affiche la page correspondante. MenuAjouteSparateur Ajoute un nouveau sparateur dans un menu. MenuClone Clone un menu ou une option de menu ainsi que le code associ. MenuDmarque Enlve la marque devant l'option de menu MenuEtat Identifie l'tat d'une option de menu : active, inactive ou invisible MenuExiste Indique si une option de menu existe dans un menu. WLangage.book Page 121 Mardi, 23. avril 2013 1:59 13 122 Partie 3 : Gestion des fentres, des pages et des champs MenuInsreMenu Insre un menu avant un autre menu dans une fentre. Le menu insr pourra contenir d'autres menus, des options de menus, des sparateurs, MenuInsreOption Insre une nouvelle option une position spcifique. Cette option de menu excute une procdure passe en paramtre. MenuInsreSparateur Insre un sparateur dans un menu. MenuInvisible Rend une option de menu invisible MenuLibell Identifie ou modifie le libell d'une option de menu MenuMarquage Permet de savoir si la marque est prsente devant l'option de menu MenuMarque Positionne la marque devant l'option de menu MenuSelectMoins Dsactive (grise) une option de menu MenuSelectPlus Active une option de menu MenuSupprime Supprime un menu ou une option de menu OuvreMenuContextuel Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours PiloteMenu Pilote le prochain menu qui sera ouvert, puis excute automatiquement une option de ce menu indique en paramtre. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev. WLangage.book Page 122 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 123 2. GESTION DES PAGES 2.1 Prsentation Les pages constituent l'interface principale d'un site WebDev. En effet, c'est grce aux pages que les internautes vont pouvoir consulter et manipuler des informations. Ces informations peuvent tre : dynamiques et provenir par exemple de fichiers de donnes, requtes, ... Ces informations varient en fonction des demandes des internau- tes. statiques. Ces informations sont fixes et ne changent pas. 2.2 Fonctions de gestion des pages Les fonctions permettant de grer les pages sont les suivantes : WB AnnuleContexteAWP Supprime du contexte AWP une variable ajoute par la fonction DclareContex- teAWP. CelluleAfficheDialogue Affiche une cellule dans la page avec un effet de GFI (Grisage des Fentres Inac- cessibles). CelluleFermeDialogue Masque une cellule affiche dans la page via la fonction CelluleAfficheDialogue. ChangeAction Permet de spcifier l'action effectue en cas de dsynchronisation entre la page HTML affiche dans le navigateur et le contexte de page sur le serveur ChangeDestination Change par programmation le cadre de destination de la page en cours aprs l'ex- cution d'un clic de bouton ConfigureContexteAWP Dfinit le mode de fonctionnement des contextes AWP. ContexteExiste Permet de savoir si un contexte de page existe sur le serveur. ContexteFerme Ferme un contexte de page ContexteOuvre Ouvre un contexte de page sans renvoyer les informations vers le navigateur DclareContexteAWP Permet de dclarer une liste de variables dont la valeur sera persistante entre les affichages successifs des pages AWP. Enumrechamp Enumre les champs d'une page. EnumreSousElement Enumre les sous-lments d'une page FramesetActualise Actualise un frameset affich dans le navigateur de l'internaute partir du con- texte prsent sur le serveur FramesetAffiche Affiche un frameset dans le navigateur de l'internaute FamesetUtilise Affiche un frameset WebDev dans le navigateur de l'internaute et ferme tous les contextes de pages et de frameset en cours IdentifiantContexteAWP Renvoie l'identifiant du contexte AWP. PageActiveGFI Active ou dsactive le GFI lors de l'affichage d'une page modale. PageActualise Actualise une page affiche dans le navigateur de l'internaute partir du contexte prsent sur le serveur PageAdresse Permet d'obtenir l'adresse Internet d'une page WebDev PageAffiche Affiche une page dans le navigateur de l'internaute PageAfficheDialogue Affiche une page de manire modale (cre un dialogue avec l'utilisateur). PageCourante Renvoie le nom de la page contenant le code WLangage en cours d'excution. PageExiste Vrifie si la page est actuellement affiche dans le navigateur de l'internaute WLangage.book Page 123 Mardi, 23. avril 2013 1:59 13 124 Partie 3 : Gestion des fentres, des pages et des champs 2.3 Fonctions de gestion des menus WebDev propose plusieurs fonctions du WLangage spcifiques aux options de menu : PageFermeDialogue Ferme la page courante. Cette page a t ouverte avec la fonction PageAfficheDia- logue. Une valeur de retour peut tre renvoye la page appelante. PageInitialisation Remet zro (ou non) les champs de la page encours et lance les traitements d'ini- tialisation des champs PageParamtre Renvoie la valeur d'un paramtre pass la page en cours PagePosition Fait dfiler une page pour position un champ dans la partie visible de la page (le plus haut) dans le navigateur PagePrcdente Renvoie le nom de la page prcdente PageSemiDynami- queAffiche Affiche une page semi-dynamique dans le navigateur de l'internaute partir d'une page WebDev dynamique ou statique. PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI. PageUtilise Affiche une page WebDev dans le navigateur de l'internaute et ferme tous les con- textes de pages en cours PageValide Valide la page spcifie et lance l'excution d'un bouton PageVersASP Envoie les donnes d'une page affiche sous le navigateur vers un serveur ASP PageVersEmail Envoie les donnes d'une page affiche sous le navigateur dans un email PageVersJSP Envoie les donnes d'une page affiche sous le navigateur vers un serveur JSP PageVersPHP Envoie les donnes d'une page affiche sous le navigateur vers un serveur PHP PopupAffiche Affiche une popup dans la page avec un effet de GFI (Grisage des Fentres Inacces- sibles). PopupAnime Affiche une popup dans une cellule de la page. PopupFerme Masque une popup affiche dans la page via la fonction PopupAffiche. SiteAdresse Renvoie l'adresse Internet de connexion un site dynamique WebDev situ sur le mme serveur SiteDynamiqueAffiche Affiche un site dynamique (cr avec WebDev) dans le navigateur de l'internaute partir d'une page WebDev dynamique ou statique Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents types de code (code Serveur et code Navi- gateur), consultez laide en ligne. ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert EnumreMenu Renvoie le nom de la nime option de menu MenuAjouteMenu Ajoute un nouveau menu dans une fentre. MenuAjouteOption Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. MenuAjouteOptionURL Ajoute une nouvelle option de menu la fin d'un menu prsent dans une page. Cette option de menu excute une URL passe en paramtre et affiche la page correspondante. MenuAjouteSparateur Ajoute un nouveau sparateur dans un menu. MenuInsreSparateur Insre un sparateur dans un menu. MenuSupprime Supprime un menu ou une option de menu Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 124 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 125 3. GRER LE BOUTON "PRCDENT" DANS UNE PAGE 3.1 Prsentation Le bouton "Prcdent" ou "Back" du navigateur per- met l'internaute d'afficher les pages prcdentes dj consultes. Dans un site WebDev, chaque page HTML affiche sur le navigateur est associe un contexte de page, prsent sur le serveur. Chaque action effec- tue dans une page affiche par le navigateur doit entraner une action identique sur le contexte de page correspondant prsent sur le serveur. Or l'utilisation du bouton "Prcdent" du navigateur permet de raliser une action uniquement sur le navigateur : la page affiche sur le navigateur et son contexte prsent sur le serveur peuvent donc tre dsynchroniss en cas d'utilisation du bouton "Prcdent" du navigateur. 3.1.1 Deux mthodes de gestion du bouton "Prcdent" du navigateur Pour viter tout problme li la dsynchronisation entre les pages affiches sur le navigateur et les contextes correspondants prsents sur le serveur, WebDev met votre disposition deux modes de gestion du bouton "Prcdent" du navigateur : Solution 1 : Empcher le retour sur cette page depuis le bouton "prcdent" du navigateur. Si le bouton "Prcdent" du navigateur est utilis pour afficher la page, cette action n'aura aucun effet. Solution 2 : Gestion de la synchronisation (solu- tion par dfaut) Pour chaque action effectue dans une page depuis le navigateur, un test de synchronisation entre la page HTML et son contexte est automati- quement ralis. Deux modes de gestion de la synchronisation sont possibles : synchronisation par dfaut (mode utilis par dfaut lors de la cration d'une nouvelle page). synchronisation programme. 3.1.2 Exemple de dsynchronisation Voici un exemple de site : Une page du navigateur contient une table fichier reli au fichier de donnes ITEM et un lien "Sui- vant". Le fichier de donnes ITEM ne contient quune rubrique, chaque enregistrement est constitu dune lettre de lalphabet. La page permet dafficher 6 lignes de la table, le lien "Suivant" permet dafficher les 6 suivantes. A louverture de la page, la table affiche les 6 pre- miers enregistrements du fichier de donnes (de A F). Voici un enchanement d'actions faites par l'utilisateur : 1. clic sur le lien "Suivant" Rsultat : le serveur se positionne sur les 6 enre- gistrements suivants de ITEM et renvoie au naviga- teur leurs contenus. Le navigateur affiche la page suivante de la table avec les 6 nouveaux contenus (G L). 2. clic sur "Prcdent" du navigateur Rsultat : le navigateur affiche la page prcdant la premire action. La table affiche contient les lettres A F. Le serveur na pas t sollicit, il est donc toujours positionn sur les enregistrements G L. 3. clic sur "Suivant" Rsultat : le serveur se positionne sur les 6 enre- gistrements suivants de ITEM (donc de M R). Le navigateur se synchronise avec le serveur et affi- che les mmes lments : linternaute a l'impres- sion que certaines informations ne sont pas affiches. Ce dysfonctionnement peut avoir des consquen- ces inattendues lors dune modification dun enre- gistrement du fichier de donnes (modification de l'enregistrement qui n'est pas celui visualis par l'internaute par exemple). Rappel : chaque action sur le navigateur doit entraner une action du serveur : le serveur envoie alors une rponse au navigateur. Or le clic sur le bouton "Prcdent" du navigateur tant une action navigateur indpendante de votre site WebDev, la deuxime condition peut ne pas tre ralise. WB WLangage.book Page 125 Mardi, 23. avril 2013 1:59 13 126 Partie 3 : Gestion des fentres, des pages et des champs 3.2 Empcher lutilisation du bouton "Prcdent" Si le bouton "Prcdent" du navigateur est utilis pour afficher la page, cette action n'aura aucun effet. 3.2.1 Fonctionnement La dsactivation de la fonction "Page prcdente" du navigateur entrane l'insertion du code Javas- cript suivant dans la page HTML gnre : Lors de l'excution de la page sous un navigateur, il sera impossible de revenir sur cette page par la tou- che "Prcdent" du navigateur. Remarques : Lutilisation du bouton "Prcdent" du navigateur peut entraner un clignotement de la page. Ce mcanisme peut tre mis en chec si un clic sur le bouton [STOP] du navigateur intervient avant lexcution de l'instruction forward() par le navigateur. 3.2.2 Mise en place Pour dsactiver le bouton "Prcdent" du naviga- teur pour une page prcise : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bou- ton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez loption "Empcher le retour sur cette page depuis le bouton "Prc- dent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du naviga- teur pour un frameset : 1. Affichez l'onglet "Dtail" de la fentre de descrip- tion du frameset (option "Description" du menu contextuel de la frame). 2. Cochez loption "Empcher le retour sur ce fra- meset depuis le bouton "Prcdent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du naviga- teur pour toutes les pages du projet : 1. Affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Des- cription"). 2. Cliquez sur longlet "Options". 3. Cochez loption "Empcher le retour sur la page depuis le bouton "Prcdent" du navigateur". 4. Validez. Cette option sera automatiquement prise en compte pour toutes les nouvelles pages du site. 3.3 Gestion de la synchronisation 3.3.1 Prsentation Grce au mcanisme de synchronisation des pages, lors de chaque action effectue dans une page une vrification de synchronisation est auto- matiquement ralise. Cette vrification consiste vrifier si la page affiche sur le navigateur corres- pond bien au contexte de page prsent sur le ser- veur. Deux modes de gestion de la synchronisation sont disponibles : 1. Gestion de la synchronisation par dfaut. 2. Gestion de la synchronisation par programma- tion, dans le code de synchronisation de la page. 3.3.2 Synchronisation par dfaut Le mcanisme de synchronisation par dfaut est dclench uniquement si l'option "Utiliser le mca- nisme de synchronisation des pages" est slection- ne pour la page. En cas de dsynchronisation, un message daver- tissement informe l'internaute que laction deman- de na pu tre effectue. La page correspondant au contexte prsent sur le serveur est raffiche. Le site peut continuer fonctionner. Pour mettre en place la gestion de la synchronisa- tion dans une page : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bou- ton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez l'option "Utiliser le mcanisme de synchronisation des pages". 3. Validez. Cette page sera automatiquement <SCRIPT LANGUAGE="JavaScript"> history.forward() </SCRIPT> WLangage.book Page 126 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 127 incluse dans l'historique des pages du navigateur : il sera possible de revenir sur cette page par la tou- che "Prcdent" du navigateur. Pour mettre en place la gestion de la synchronisa- tion dans toutes les pages du projet : 1. Affichez la description du projet. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Dans longlet "Options", cochez l'option "Utiliser le mcanisme de synchronisation des pages". 3. Validez. Les pages du projet seront automatique- ment incluses dans l'historique des pages du navigateur : il sera possible de revenir sur ces pages par la touche "Prcdent" du navigateur. Remarques : Ce mode de gestion ne ncessite aucun code WLangage particulier. Pour les champs de la page ne ncessitant pas une gestion de la synchronisation (bouton "Fer- mer" par exemple) il est possible de dbrancher le mcanisme de synchronisation : il suffit de cocher l'option "Dsactiver le mcanisme de syn- chronisation des pages pour ce champ" dans longlet "Avanc" de la description du champ. Le message d'avertissement peut tre personna- lis (voir le paragraphe suivant). 3.4 Synchronisation par programmation Pour grer la synchronisation par programmation : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bou- ton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez l'option "Utiliser le mcanisme de synchronisation des pages". 3. Configurez si ncessaire les champs de la page pour lesquels la synchronisation ne doit pas tre gre. Pour chaque champ dclenchant une action sur le serveur, il est possible de paramtrer si la gestion de la synchronisation de la page doit tre effectue (option par dfaut) ou ignore lors de cette action. Pour ignorer la gestion de la synchronisation, il suf- fit de cocher l'option "Dsactiver le mcanisme de synchronisation des pages pour ce champ" dans longlet "Avance" de la description du champ. 4. Saisissez le code ncessaire la gestion person- nalise de la synchronisation dans le code de syn- chronisation de la page. Utilisez la fonction ChangeAction dans le code de synchronisation de la page. Cette fonction permet de dterminer l'action qui sera faite en cas de dsynchronisation de la page. Remarques : La fonction ChangeAction est initialise avec l'action "Ne rien faire" si une fonction du WLan- gage permettant d'afficher ou de rafficher une page est utilise dans le code de synchronisation de la page. Pour personnaliser le message de dsynchroni- sation, il suffit de saisir dans le code de synchro- nisation de la page : 1. le message personnalis. 2. le raffichage de la page en cours sur le ser- veur (avec la fonction PageActualise par exem- ple). Pour raliser une synchronisation partir des informations prsentes sur le poste de l'inter- naute, il est conseill de : 1. Utiliser un champ cach contenant l'identifiant de l'enregistrement affich et slectionn. 2. Rechercher dans le code de synchronisation l'enregistrement en cours sur le navigateur. Cette recherche est ralise partir de son identifiant contenu dans le champ cach. 3. Ractualiser la page. WLangage.book Page 127 Mardi, 23. avril 2013 1:59 13 128 Partie 3 : Gestion des fentres, des pages et des champs 4. DIALOGUER AVEC L'UTILISATEUR OU LINTERNAUTE 4.1 Prsentation WinDev, WebDev et WinDev Mobile permettent de dialoguer avec lutilisateur ou linternaute grce aux botes de dialogue. Il est possible dutiliser des botes de dialogue stan- dard (composes dune image, dun texte et de plu- sieurs boutons : OK, Annuler, Oui ou Non). WinDev permet galement dutiliser des botes de dialogue avances, permettant : dafficher un texte spcifique dans les boutons, pour une meilleure comprhension. de permettre une saisie lutilisateur. 4.2 Les botes de dialogue standard Les botes de dialogue sont des fentres standard permettant de dialoguer avec l'utilisateur. Il est ainsi possible de lui signaler une erreur, demander une confirmation, etc. Les botes de dialogue comportent toujours les mmes lments : Une icne permettant d'identifier rapidement le type du message affich : Information, Question ou Erreur. Un titre affich dans la barre de titre. Un ou plusieurs boutons permettant l'utilisa- teur / linternaute de choisir la rponse voulue. Le nombre et le type de ces boutons dpendent du type de la bote de dialogue utilise. Un texte sur une ou plusieurs lignes correspon- dant au message destin l'utilisateur/linter- naute. Plusieurs types de botes de dialogue sont disponibles : Les botes d'information ou d'erreur (fonction Avertissement, Info ou Erreur du WLangage). Par exemple : Les botes de question (fonction OuiNon du WLangage). Les botes de confirmation (fonction Confirmer du WLangage). Par dfaut, les botes de dialogue sont fermes uni- quement lors de l'action de l'utilisateur / linter- naute sur un des boutons de la bote. Si aucun bouton n'est enfonc, l'application / le site est blo- qu(e). Pour viter tout risque de blocage, il suffit d'utiliser la fonction DlaiAvantFermeture en indiquant la dure voulue avant la fermeture automatique de la bote de dialogue. WLangage.book Page 128 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 129 4.3 Les botes de dialogue avances 4.3.1 Prsentation Les botes de dialogue avances sont des fentres permettant de dialoguer avec l'utilisateur. Ces fen- tres permettent de grer : l'interrogation directive : l'utilisateur rpond une question grce des boutons contenant le texte de l'action effectuer. la saisie immdiate, en proposant l'utilisateur de saisir directement dans la bote de dialogue la valeur voulue. 4.3.2 Interrogation directive La scurit des donnes d'une application dpend aussi de la rponse des utilisateurs aux questions poses dans les messages. Or il arrive souvent que les questions poses correspondent des textes ambigus. Par exemple "Voulez-vous annuler la sup- pression en cours ?" avec les boutons "Oui" ou "Non". Pour simplifier l'criture de ces messages, cha- que utilisation d'une fonction de dialogue avec l'uti- lisateur, WinDev propose : soit de slectionner un message dj existant soit de crer un nouveau message grce une fentre trs simple. Lorsque les diffrentes caractristiques du mes- sage sont saisies, le code correspondant est auto- matiquement gnr. Remarque : Le code gnr utilise la fonction Dia- logue. 4.3.3 Saisie immdiate Dans une application, il est souvent long et fasti- dieux de crer une fentre entire pour permettre uniquement la saisie d'un seul champ avec deux boutons "OK" et "Annuler". La fonction Saisie permet de simplifier cette mani- pulation. La fentre cre avec cette fonction per- met de saisir une donne (champ de saisie ou case cocher) et de valider ou d'annuler la saisie. 4.3.4 Base de messages WinDev propose une liste de messages par dfaut. Ces messages ne peuvent pas tre supprims. Lors de la cration d'un message, ce message est automatiquement ajout la base de messages. Par dfaut, la base de messages est prsente dans le rpertoire "Personnel\Messages" de WinDev. Pour modifier ce rpertoire : 1. Affichez les options du produit : sous le volet "Accueil", dans le groupe "Environnement", drou- lez "Options" puis slectionnez "Options gnrales de WinDev". 2. Dans longlet "Rpertoires", modifiez le rper- toire des messages. Pour supprimer un message de la base de messages : 1. Affichez l'diteur de code. 2. Sous le volet "Code", dans le groupe "Langues", droulez la liste "Traduire les chanes" et slection- nez loption "Interrogation directive". 3. Dans la fentre qui saffiche, slectionnez le message supprimer et cliquez sur licne "-". 4.4 Personnaliser les botes de dialogue Vos applications utilisent de nombreuses botes de dialogue systmes ? Pourquoi ne pas personnaliser ces fentres et leur donner le "look" de votre appli- cation ? WinDev permet d'intgrer facilement la fentre "WinDevMessageBox" dans vos applications. Cette fentre est une fentre d'information systme (une bote de dialogue) entirement personnalisable et pouvant tre utilise dans toutes vos applications. Aucun code n'est ncessaire. Lorsque cette fentre est intgre votre projet, les fonctions Info, Oui- Non, Confirmer et Erreur affichent automatique- ment la fentre "WinDevMessageBox". WD WD WLangage.book Page 129 Mardi, 23. avril 2013 1:59 13 130 Partie 3 : Gestion des fentres, des pages et des champs Rappel : Par dfaut, les botes de dialogue affi- ches sont des botes de dialogue standard et pos- sdent les caractristiques suivantes : fond gris. icne indiquant le type d'informations affiches. boutons standard de WinDev. Remarque : L'utilisation de cette fentre permet d'obtenir des botes de dialogues multilingues (ima- ges, libell des boutons, ...). Par dfaut, cette fen- tre gre le franais, l'anglais, l'allemand, l'espagnol, l'italien, le nerlandais et le portugais. Pour plus de dtails, consultez le paragraphe "Botes de dialo- gues multilingues". 4.4.1 Personnaliser les fentres dinforma- tion systme Pour personnaliser les fentres d'information systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cli- quez sur "Description"). 2. Dans longlet "Style", cochez l'option "Appliquer le thme de gabarit sur les fentres d'information systme" et validez. Les fentres "WinDevMessage- Box" et "WinDevDialogBox" sont automatiquement intgres dans votre application. Le gabarit de votre projet est appliqu sur ces fentres. La fentre "WinDevMessageBox" remplace la fen- tre d'information systme standard (affiches grce aux fonctions Avertissement, Info, OuiNon, OKAnnuler, Confirmer et Erreur). La fentre "WinDevDialogBox" remplace la fentre affiche par la fonction Dialogue. Conseils Ne modifiez ni le code des fentres "WinDevMes- sageBox"et "WinDevDialogBox", ni le code de leurs champs. Ne supprimez pas de champs. Si vous ajoutez des champs aux fentres "WinDe- vMessageBox" et "WinDevDialogBox", aucun code ne doit tre associ ces champs. Limitez les modifications de style de ces fentres et de leurs champs, et testez toutes ces modifica- tions. 4.4.2 Ne plus personnaliser les fentres dinformation systme Pour ne plus personnaliser les fentres d'informa- tion systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cli- quez sur "Description"). 2. Dans l'onglet "Style", dcochez l'option "Appli- quer le thme de gabarit sur les fentres d'informa- tion systme" et validez. 3. Supprimez les fentres "WinDevMessageBox" et "WinDevDialogBox" de votre projet : soit depuis le graphe du projet soit depuis le volet "Explorateur de projet". 4. Si ncessaire, supprimez le fichier correspon- dant aux fentres "WinDevMessageBox" et "WinDe- vDialogBox" du rpertoire de votre projet). 4.4.3 Botes de dialogues multilingues Pour obtenir des botes de dialogues multilingues : 1. Personnalisez les fentres d'information sys- tme (voir le paragraphe prcdent). 2. Saisissez les libells multilingues des diffrents boutons (option "Description" du menu contextuel). 3. Slectionnez les images multilingues des diff- rents champs image (option "Description" du menu contextuel). 4. Utilisez des chanes de caractres multilingues (raccourci [Ctrl]+[T]) dans la syntaxe des fonctions Info, OuiNon, Confirmer, Erreur, ... 4.5 Fermeture automatique des botes de dialogue WinDev permet de fermer automatiquement ces botes de dialogue pour viter tout blocage de l'application. En effet, par dfaut, les botes de dia- logue sont fermes uniquement lors de l'action de l'utilisateur sur un des boutons de la bote. Si aucun bouton n'est enfonc, l'application est blo- que. Pour viter tout risque de blocage, il suffit d'utiliser la fonction DlaiAvantFermeture en indiquant la dure voulue avant la fermeture automatique de la bote de dialogue. WD WDMobile WLangage.book Page 130 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 131 4.6 Dialogue avanc avec linternaute 4.6.1 Prsentation Dsormais, grce aux nouvelles technologies Web, les sites peuvent ressembler des applications Windows et afficher des botes de dialogues. Pour que l'internaute identifie rapidement la page active, le systme de grisage automatique des pages est automatiquement utilis. La page inac- tive est assombrie, et ainsi les pages actives sont plus visibles par l'internaute. 4.6.2 Les fonctions WLangage disponibles WebDev met votre disposition plusieurs fonctions permettant de dialoguer avec linternaute : Toutes ces fonctions permettent de dialoguer avec l'utilisateur et prennent en compte les paramtres du GFI dfinis par les fonctions suivantes : 4.6.3 Grer un dialogue avec des cellules Voici un exemple permettant de grer un dialogue l'aide d'une cellule prsente dans une page. Cette solution est conseille si seule une page du site doit proposer un dialogue avec l'internaute. Pour grer un dialogue avec une cellule, il suffit de : 1. Crer une cellule dans la page devant afficher le dialogue. Cette cellule permettra de dialoguer avec l'internaute. Cette cellule contient au minimum: un libell qui permet d'afficher le texte du dialo- gue. un bouton permettant de valider la bote de dialo- gue. 2. La cellule (et les champs qui la composent) est invisible. 3. Si ncessaire, il est possible d'ajouter des champs dans la cellule (image, ). 4. Le code du bouton de fermeture du dialogue prsent dans la cellule contient le code suivant : La fonction CelluleFermeDialogue permet de ren- dre invisible la cellule prcdemment affiche. 5. Pour dialoguer avec l'internaute depuis la page (par exemple partir d'un bouton de la page) il suf- fit d'utiliser la fonction CelluleAfficheDialogue, en prcisant le nom de la cellule utiliser pour le dia- logue. 4.6.4 Grer un dialogue avec des pages Voici un exemple permettant de grer un dialogue l'aide d'une page du site. Cette solution est con- seille si plusieurs pages du site doivent proposer un dialogue avec l'internaute. La page de dialogue pourra tre ouverte depuis n'importe quelle page du site. Pour grer un dialogue avec une page, il suffit de : 1. Crer un page (nomme par exemple PAGE_Info). Cette page permettra de dialoguer avec l'internaute. Cette page contient au minimum: une cellule qui dlimite la bote de dialogue. un libell qui permet d'afficher le texte. Ce libell est contenu dans la cellule. un bouton permettant de valider la bote de dialo- gue. Ce bouton est contenu dans la cellule. 2. Si ncessaire, il est possible d'ajouter des champs dans la cellule (images, ). Il est conseill de centrer la page dans le naviga- WB CelluleAfficheDialo- gue Affiche une cellule dans la page avec un effet de GFI (Gri- sage des Fentres Inaccessi- bles). Permet de simuler simplement une bote de dia- logue en code navigateur. CelluleFermeDialo- gue Masque une cellule affiche dans la page via la fonction CelluleAfficheDialogue. OKAnnuler Affiche un message dans une bote de dialogue standard proposant les rponses "OK" et "Annuler" et renvoie la rponse de l'utilisateur. OuiNon Affiche un message dans une bote de dialogue standard proposant les rponses "Oui" et "Non" et renvoie la rponse de l'utilisateur. PageAfficheDialo- gue Affiche une page de manire modale. Permet de crer un dialogue avec l'utilisateur. La page est affiche devant, et en arrire-plan se trouve la page ouvrante, grise par le mcanisme de GFI. PageFermeDialo- gue Ferme la page courante. Cette page a t ouverte avec la fonction PageAfficheDialo- gue. Une valeur de retour peut tre renvoye la page appelante. PageActiveGFI Active ou dsactive le GFI (Grisage des pages inaccessibles). PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI. CelluleFermeDialogue("MaCellule") WLangage.book Page 131 Mardi, 23. avril 2013 1:59 13 132 Partie 3 : Gestion des fentres, des pages et des champs teur. 3. Le code du bouton de fermeture du dialogue prsent dans la page contient le code suivant : La fonction PageFermeDialogue permet de ren- voyer une valeur la page qui a ouvert le dialogue. 4. Pour appeler la page de dialogue depuis une autre page, il suffit d'utiliser la fonction PageAffi- cheDialogue, en prcisant le nom de la page ouvrir, et si ncessaire les paramtres lui passer. Ces paramtres peuvent par exemple permettre de remplir dynamiquement le texte affich dans le libell. 4.6.5 Grer un dialogue avec OuiNon et OKAnnuler Les fonctions OuiNon et OKAnnuler permettent galement de grer un dialogue simple avec l'inter- naute. Ces fonctions permettent de poser une question l'internaute laquelle la rponse sera soit "Oui" ou "Non", soit "OK" ou "Annuler". Pour grer un dialogue avec les fonctions OuiNon et OKAnnuler, il faut : 1. Intgrer des pages internes spcifiques dans votre projet. Ces pages internes contiennent la bote de dialogue : WebDevOKAnnuler pour la fonction OKAnnuler. WebDevOuiNon pour la fonction OuiNon L'intgration de ces pages est ralise dans lassistant de cration de pages. Ces pages doi- vent tre enregistres dans votre projet avec le nom propos par dfaut. 2. Utiliser les fonctions OuiNon et OKAnnuler dans le code de l'application. 4.7 Fonctions de gestion des botes de dialogue Les fonctions permettant de grer les messages et les botes de dialogue sont les suivantes : PageFermeDialogue() Avertissement Affiche un message personnalis dans une fentre d'avertissement systme BulleActive Active ou non l'affichage des bulles d'aide Confirmer Afficher un message dans une fentre proposant les rponses "Oui", "Non" ou "Annuler" et retourner la rponse de l'utilisateur DlaiAvantFermeture Limite le temps d'affichage d'une bote de dialogue de type information ou d'erreur, de question, de confirmation Dialogue Affiche une bote de message et renvoie la valeur du bouton cliqu Erreur Affiche un message d'erreur personnalis dans une fentre d'erreur systme ErreurConstruit Affiche un message d'erreur personnalis dans une fentre d'erreur systme. Info Affiche un message personnalis dans une fentre d'information systme InfoConstruit Affiche un message personnalis dans une fentre d'information systme Jauge Affiche une jauge dans la barre de message de la fentre en cours Message Affiche (ou efface) un message dans la barre de message de la fentre en cours MessageAjouteCase Ajoute une nouvelle case dans la barre de message de la fentre en cours MessageSupprimeCase Supprime une case de la barre de message de la fentre en cours OKAnnuler Affiche un message dans une bote de dialogue standard proposant les rponses "OK" et "Annuler" et renvoie la rponse de l'utilisateur OuiNon Affiche un message dans une bote de dialogue standard proposant les rponses "Oui" et "Non" et renvoie la rponse de l'utilisateur Saisie Affiche un message en permettant l'utilisateur de saisir une information ToastAffiche Affiche un message de type "Toast". ToastsupprimeTout Supprime tous les toasts affichs par la fonction ToastAffiche. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 132 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 133 5. GESTION DU DRAG AND DROP 5.1 Qu'est-ce que le "Drag and Drop" ? Le "Drag and Drop" (ou "Glisser/Dplacer") permet de transfrer des donnes entre plusieurs champs grce la souris. Ces donnes peuvent tre dpla- ces entre plusieurs champs d'une mme applica- tion ou d'applications diffrentes. Il faut distinguer : La source, objet contenant les donnes copier ou couper. La cible, objet dans lequel les donnes doivent tre copies. Le "Drag and Drop" consiste : 1. Slectionner les donnes de la source avec la souris. 2. Cliquer sur le bouton gauche de la souris et le maintenir enfonc pendant le dplacement vers la destination 3. Relcher le bouton de la souris pour valider le transfert des donnes Si les donnes doivent tre copies, la touche CTRL doit tre maintenue enfonce pendant l'opration. WinDev permet deffectuer plusieurs types de "Drag and Drop" dans vos applications : Drag and Drop automatique pour les champs de saisie, les listes, les listes image, les arbres et les tables hirarchiques. Drag and Drop programm pour de nombreux types de champs. Drag and Drop programm entre l'explorateur Windows et une application WinDev. WebDev permet la gestion du Drag and Drop grce HTML 5. Il est possible de mettre en place : Drag and Drop automatique pour les champs de saisie, les listes, ... Drag and Drop programm pour de nombreux types de champs. 5.2 "Drag and Drop" automatique Pour certains types de champs, WinDev et WebDev proposent une gestion automatique du Drag and Drop. Aucune programmation spcifique n'est nces- saire. Il suffit de prciser dans la description du champ que le "Drag and Drop" doit tre gr. Vous ne devez en aucun cas : faire appel aux fonctions de gestion du Drag and Drop par programmation, procder l'activation des codes de gestion du Drag and drop dans les traitements des champs Dans le cas contraire, la gestion automatique sera dsactive : il faudra donc grer le Drag and Drop par programmation. 5.2.1 WinDev : Champs concerns par le Drag and Drop automatique En WinDev, le Drag and Drop automatique est dis- ponible sur les champs suivants : les champs de saisie, les listes, les listes image, les tables, les arbres. Cas particuliers : Drag and Drop entre deux tables : Pour raliser un "Drag and Drop" automatique entre deux tables : Le nombre de colonnes doit tre identique. Le contenu de la colonne 1 de la table source sera copi dans la colonne 1 de la table cible, idem pour la colonne 2, ... Les colonnes peuvent avoir des noms diffrents. Le type des colonnes peut tre diffrent. ATTENTION : Dans ce cas, les donnes peuvent tre altres ou perdues lors du transfert (con- versions automatiques). Dans ce cas, il est con- seill d'utiliser le Drag and Drop programm. 5.2.2 WebDev : Champs concerns par le Drag and Drop automatique En WebDev, le Drag and Drop automatique est dis- ponible sur les champs suivants : Champ Upload, Champ Libell, WLangage.book Page 133 Mardi, 23. avril 2013 1:59 13 134 Partie 3 : Gestion des fentres, des pages et des champs Champ Bouton, Champ Lien, Champ Image, Champ Libell format, Champ de saisie, Champ Liste, Champ Combo. Remarque : Actuellement, seul FireFox et Chrome grent pleinement le Drag and Drop par HTML 5. Si les nouvelles versions des diffrents navigateurs intgrent la gestion du Drag And Drop par HTML 5, cette fonctionnalit sera automatiquement gre par WebDev. 5.2.3 Configurer le "Drag and Drop" par dfaut Il est possible de configurer le "Glisser/Dplacer" par dfaut dans longlet "Dtail" de la fentre de description du champ. L'option "Est source" per- met de dfinir le champ comme "source" du "Glis- ser/Dplacer". L'utilisateur pourra slectionner le con- tenu du champ pour le dplacer vers un autre champ par exemple. L'option "Est cible" permet de dfinir le champ comme "Cible" du "Glisser/Dplacer". Ce champ pourra recevoir tout objet "lch" par l'utilisateur. Les deux options peuvent tre slectionnes en mme temps. 5.3 "Drag and Drop" programm Le "Drag and Drop" programm permet de grer entirement le "Glisser/Dplacer" entre diffrents types de champs. En fonction de son type, le champ peut tre source ou cible du "Drag and Drop". En WinDev, les champs suivants sont grs : Source du Drag and Drop : Uniquement les champs suivants : champ de sai- sie, liste, liste image, arbre, table, image et code- barres. Cible du Drag and Drop : Tous les types de champs sauf : jauge, ActiveX, OLE, forme, barre doutils, HTML, Web Camra et champ confrence. En WebDev, les champs suivants peuvent tre source et cible dun Drag and Drop programm : Champ de saisie Champ Libell Bouton Liste Image Champ d'affichage format Combo Lien Cellule Superchamp Modle de champs 5.3.1 Principe Pour raliser un "Drag and Drop" programm entre plusieurs champs d'une application WinDev, effec- tuez les manipulations suivantes : 1. Dans le code d'initialisation du champ source : Dfinissez qu'un "Drag and Drop" programm va tre ralis (proprit ..DnDSource). Dfinissez la procdure excute lors du dbut de l'action "Glisser" (fonction DndEvnement pour l'vnement DndDbutGlisser). 2. Dans le code d'initialisation du champ cible : Dfinissez qu'un "Drag and Drop" programm va tre ralis (proprit ..DndCible). Dfinissez la procdure excute lors du survol du champ (fonction DndEvnement pour l'vne- ment DndSurvol). Dfinissez la procdure excute lors du "Lcher" sur le champ (fonction DndEvnement pour l'v- nement DndLcher). 3. Dans chacune des procdures WLangage appe- les, dfinissez l'action excuter grce aux fonc- tions "Drag and Drop" du WLangage. 5.3.2 Programmation Plusieurs exemples de "Drag and Drop" programm sont livrs avec WinDev : WD Puzzle : Drag and Drop programm entre des images. Exemple unitaire de Drag and Drop (WinDev) : Drag and Drop programm entre des listes, entre des tables et des arbres. WLangage.book Page 134 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 135 Exemple didactique de Drag and Drop HTML 5 (WebDev) : Drag and Drop programm dans un site WebDev. 5.4 "Drag and Drop" depuis l'explorateur Le "Drag and drop" depuis l'explorateur consiste slectionner un ou plusieurs fichiers dans l'explora- teur de Windows et les transfrer dans un champ d'une fentre WinDev. Par exemple, l'exemple "WD Drag and Drop" permet ainsi d'afficher les fichiers image "dropps" depuis l'explorateur. 5.4.1 Principe Pour permettre un "Drag and Drop" depuis l'explora- teur vers une application WinDev, les diffrentes tapes sont les suivantes : 1. Activez la possibilit de raliser un "Drag and Drop" depuis l'explorateur (fonction ExplorerAc- cepte). 2. Pour traiter l'action effectue par l'utilisateur, associez une procdure du WLangage au lcher du fichier dans la fentre (fonction Evnement). 3. Dans la procdure appele chaque lcher de fichier dans la fentre, rcuprez les caractristi- ques des fichiers "dropps" grce la fonction ExplorerRcupre. 5.4.2 Fonctions spcifiques au "Drag and Drop" depuis l'explorateur Les fonctions suivantes permettent de grer le Drag and Drop depuis l'explorateur Windows vers une fentre d'une application WinDev : ExplorerAccepte : Active ou dsactive la possibi- lit de faire du "Drag and Drop" depuis lexplora- teur de Windows vers une fentre WinDev. ExplorerRcupre : Rcupre le nombre et le nom des fichiers "dropps". 5.4.3 Programmation Activation de la gestion du "Drag and Drop" depuis l'explorateur vers la fentre Pour activer la possibilit de "Drag and Drop" depuis l'explorateur vers une fentre, il suffit de dclarer dans le code d'initialisation de la fentre : La prise en compte du "Drag and Drop". L'vnement permettant de lier l'action du lcher (vnement Windows 563) une procdure WLangage spcifique (RecupFichiers dans notre exemple). Cette procdure est une procdure locale la fentre. Traitement des fichiers "dropps" Dans la procdure appele chaque "lcher" de fichiers dans la fentre, il est possible d'obtenir des renseignements et de traiter les fichiers concerns. Dans notre exemple, il est ainsi possible grce la fonction ExplorerRcupre de : connatre le nombre de fichiers "lchs" depuis l'explorateur, rcuprer le nom et le chemin de chaque fichier et de les afficher dans une nouvelle fentre. ExplorerAccepte(Vrai, "") Evnement("RecupFichiers", ... "*.", 563) // Nombre de fichiers poss dans // l'application par Drag and Drop nbFic est un entier nbFic =... ExplorerRcupre(_EVE.wparam) sNomFic est une chane // Rcupration de tous les fichiers i est un entier POUR i = 1 nbFic sNomFic = ExplorerRcupre(... _EVE.wparam, i) OuvreImage(sNomFic) FIN WLangage.book Page 135 Mardi, 23. avril 2013 1:59 13 136 Partie 3 : Gestion des fentres, des pages et des champs 5.5 Fonctions de gestion du "Drag and Drop" Les fonctions permettant de grer le Drag and Drop sont les suivantes : DnDAccepte Indique l'action accepte par la cible du glisser/dplacer et gre le curseur souris lors du glisser/dplacer DnDCurseur Gre le curseur souris lors du glisser/dplacer DnDDonne Indique le type des donnes et les donnes copier/dplacer lors du glisser/dpla- cer DnDDonneDisponible Teste si des donnes d'un type spcifi sont disponibles lors du glisser/dplacer DnDEvnement Indique la procdure excuter lors d'un vnement du glisser/dplacer DnDRcupre Rcupre les donnes d'un certain type lors du glisser/dplacer ExplorerAccepte Active ou dsactive la possibilit de faire du "Drag and Drop" de l'explorateur de Win- dows vers une fentre WinDev ExplorerRcupre Rcupre le nombre de fichiers "dropps" et le nom des fichiers "dropps" Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev. WLangage.book Page 136 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 137 6. GESTION DES CHAMPS 6.1 Prsentation WinDev, WebDev et WinDev proposent de nom- breux types de champs, facilement intgrables dans vos fentres ou vos pages. De nombreuses fonctions du WLangage permettent de manipuler par programmation ces champs. Il existe : des fonctions permettant de grer tous les types de champs. des fonctions permettant de grer un type de champs spcifique. Dans ce cas, le champ est associ une famille de fonctions facilement identifiable grce un prfixe simple. Par exem- ple, les fonctions prfixes par le mot "Arbre" per- mettent de grer les champs "Arbre", le prfixe "Table" est utilis pour grer les champs Table, ... Ce chapitre prsente toutes les fonctions WLan- gage utilisables sur les diffrents types de champs. Pour plus de dtails sur chaque type de champ, leurs principales caractristiques, ainsi que leur programmation en WLangage, consultez laide en ligne. 6.2 Fonctions gnrales de manipulation des champs Les fonctions suivantes permettent de manipuler les champs. Ces fonctions sont des fonctions gn- rales, pouvant tre utilises avec tout type de champs.
ActiveXEvnement Associe une procdure crite en WLangage un vnement d'un contrle ActiveX AjouteLien Ajoute un lien sur une portion de texte dans un champ de saisie AscenseurAffiche Affiche ou non un ascenseur dans un champ (champ de saisie ou liste) BulleActive Active ou dsactive le mcanisme d'affichage des bulles d'aide sur les champs BulleCouleur Modifie les couleurs des bulles d'aide pour la fentre en cours BulleDlai Permet de modifier le dlai attendre avant l'affichage des bulles d'aide et la dure d'affichage des bulles d'aide des champs ChampActif Dgrise un champ ou un groupe de champs d'une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. ChampAlias Identifie, modifie ou restaure la liaison fichier d'un champ ou d'un ensemble de champs ChampCauseEn- treSortie Indique l'origine de la modification du champ en cours de saisie ChampClone Cre un nouveau champ (ce nouveau champ est une copie d'un champ existant dans la fentre en cours) ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert ChampEnCours Renvoie le nom du champ en cours de saisie ChampErreur Personnalise le message d'erreur affich dans les champs, en cas d'impossibilit d'afficher la valeur ChampExiste Teste l'existence d'un champ dans une fentre / une page ChampGris Grise un champ ou un groupe de champs. Pendant cette opration, une animation sur les champs peut tre effectue. ChampInvisible Rend invisible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. ChampPrcdent Renvoie le nom du champ prcdemment en cours de saisie dans la fentre en cours ChampPremier Renvoie le nom du premier champ en saisie dans la fentre spcifie WLangage.book Page 137 Mardi, 23. avril 2013 1:59 13 138 Partie 3 : Gestion des fentres, des pages et des champs ChampSansEspace Indique si les espaces droite de la valeur prsente dans le champ sont supprims ChampSuivant Identifie le champ suivant en saisie ChampSupprime Supprime dfinitivement un champ ou une colonne de table ChampSurvol Identifie le champ survol par le curseur de la souris ChampVisible Rend visible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. ChangeStyle Modifie dynamiquement le style dun champ ChargeParamtre Lit une valeur persistante. La valeur persistante a t sauvegarde grce la fonc- tion SauveParamtre dans le fichier spcifi avec la fonction InitParamtre ColonneEnCours Connatre l'indice de la colonne indice en cours dans une table fichier ou une table mmoire CouleurSlection Change les caractristiques du bandeau de slection dans une table, une combo ou une liste DonneFocus Donne le focus au champ spcifi EcranPremier Dfinit le prochain champ qui sera en saisie dans la fentre en cours EnumreChamp numre les champs d'une fentre, dune page, d'un groupe, d'un onglet ou d'un superchamp HTMLNavigue Lance une opration de navigation dans un champ HTML IndiceEnCours Obtenir l'indice du champ en cours IndiceSuivant Renvoie le numro de la ligne suivante affiche dans la table en cours. InitParamtre Initialise la gestion des valeurs persistantes dans la base de registres Occurrence Obtenir le nombre d'occurrences d'un champ dans une fentre / une page OngletDuChamp Renvoie le nom du champ Onglet qui contient le champ spcifi OuvreMenuContex- tuel Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours ParamtreOrthogra- phe Permet de configurer la gestion du correcteur orthographique Open Office pour tous les champs de saisie de lapplication ParentObjet Identifie le "Parent" d'un objet graphique : champ, colonne, fentre, page, etc. RAZ R-initialise tous les champs de la fentre / page en cours RepriseSaisie Permet de reprendre la saisie sur le champ ou la fentre / page spcifie RTFAjoute Ajoute une chane de caractres (au format RTF ou non) la fin du contenu dun champ de saisie RTF RTFCharge Charge un fichier au format RTF dans un champ de saisie RTF RTFInsre Insre une chane de caractres au format RTF dans le contenu dun champ de saisie RTF RTFRecherche Recherche une chane de caractres dans un champ de saisie de type RTF RTFRemplace Remplace ou insre une chane de caractres dans un champ de saisie de type RTF RTFSlection Change ou liste les attributs du texte actuellement slectionn dans un champ de sai- sie de type RTF RTFVersTexte Renvoie le texte prsent dans un champ de saisie au format RTF sans les caractristi- ques de formatage propres au RTF SaisieAssisteAjoute Ajoute une ligne dans la liste des valeurs disponibles pour la saisie assiste dun champ de saisie. SaisieAssisteFerme Ferme la liste des valeurs proposes par la saisie assiste dun champ de saisie. SaisieAssisteOuvre Ouvre la liste des valeurs proposes pour la saisie assiste dun champ de saisie. SaisieAssisteSuppri- meTout Vide la liste des valeurs proposes pour la saisie assiste dun champ de saisie. SauveParamtre Sauve une valeur persistante dans la base de registres (ou dans un autre fichier sp- cifi avec la fonction InitParamtre) SupprimeParamtre Supprime un paramtre ou une srie de paramtres sauvs prcdemment. WLangage.book Page 138 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 139 TexteHauteur Calcule la hauteur en pixels d'un texte affich dans un champ de saisie, un libell ou une combo TexteLargeur Calcule la largeur en pixels d'un texte affich dans un champ de saisie, une combo ou un libell TexteVersHTML Convertit un texte en HTML Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne WLangage.book Page 139 Mardi, 23. avril 2013 1:59 13 140 Partie 3 : Gestion des fentres, des pages et des champs 7. PROPRITS DES FENTRES, DES PAGES ET DES CHAMPS Les proprits sappliquant aux fentres, aux pages et leurs champs sont les suivantes : Adresse Permet de connecter le flux avec un correspondant et de connatre l'adresse de la der- nire demande de connexion Affichage Permet de connatre et de modifier la vido actuellement affiche par le champ Conf- rence AffichageActif Permet de savoir si le rafrachissement de l'affichage d'un champ ou d'une fentre est activ ou non, et permet d'activer ou de dsactiver le rafrachissement rgulier du champ ou de la fentre Alias WinDev : Permet de connatre et de modifier l'alias d'une fentre WebDev : Renvoie le nom interne HTML/Javascript dun champ ou dune page Altitude Permet de connatre et de modifier l'altitude d'un champ Ancrage Permet de connatre l'ancrage actuel d'un champ et de modifier les caractristiques d'ancrage d'un champ AngleObservateur Permet de connatre et de modifier l'angle secondaire d'un champ carrousel. Permet de faire "pivoter" le champ. AngleTitre Permet de savoir si les titres des colonnes d'une table sont inclins et permet dincliner ou non les titres des colonnes d'une table (par exemple 45%). Animation Permet de connatre l'tat actuel de l'image anime et de lancer ou d'arrter l'animation d'une image ou dun libell anim AnimationInitiale Permet de connatre l'tat initial de l'animation dans un champ image ou dans un champ libell AvanceRapide Permet de connatre et de modifier la valeur de l'avance rapide d'un ascenseur AvecSaisie Permet de savoir si un champ Combo est avec ou sans saisie et permet de modifier cet tat. AxeXMax Permet de connatre la borne maximale des abscisses (axe X) d'un champ de type gra- phe. AxeXMin Permet de connatre la borne minimale des abscisses (axe X) d'un champ de type gra- phe. AxeYMax Permet de connatre la borne maximale des ordonnes (axe Y) d'un champ de type gra- phe. AxeYMin Permet de connatre la borne minimale des ordonnes (axe Y) d'un champ de type gra- phe. BandeauVisible Permet de savoir si le bandeau est visible sur une colonne de table (ou table hirarchi- que) et permet de rendre visible ou invisible le bandeau de slection sur une colonne de table. BarreDeMessage Permet de savoir si la barre de message d'une fentre est visible ou non et permet de rendre visible ou non la barre de message d'une fentre BorneMax Permet de connatre et de modifier la borne maximale d'un champ BorneMin Permet de connatre et de modifier la borne minimale d'un champ BoutonCalculatrice Permet de savoir et d'indiquer si un champ de saisie numrique ou montaire propose un bouton pour afficher une calculatrice en popup. BoutonCalendrier Permet de savoir et d'indiquer si un champ de saisie de type Date propose un bouton pour afficher un calendrier en popup. Bulle Permet de connatre/modifier le texte affich dans la bulle d'aide associe un champ WLangage.book Page 140 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 141 BulleAutomatique Permet d'autoriser ou non l'affichage des bulles automatiques sur les listes, les tables et les tables hirarchiques. BulleTitre Permet de connatre et de modifier le texte affich dans la bulle d'aide associe au titre d'une colonne de table CadrageHorizontal Permet de connatre et de modifier le cadrage horizontal d'un champ CadrageVertical Permet de connatre et de modifier le cadrage vertical d'un champ ClicDroit Permet de connatre et de modifier le nom du bouton qui sera excut lors d'un clic droit sur un objet Coche Permet de savoir si une option de menu possde une marque ( ) ou non et d'afficher ou non cette marque devant une option de menu CocheVisible Permet de savoir si la coche est visible ou non devant une ligne d'un champ Arbre. et permet de modifier la visibilit de la coche devant une ligne d'un champ Arbre. CompacteBarreOu- tils Permet de savoir si les barres d'outils de la fentre sont compactes et de compacter ou non les barres d'outils. ContenuInitial Permet de connatre le contenu initial d'une liste ou d'une combo mmoire Couleur Permet de connatre et de modifier la couleur du texte affich dans un champ CouleurFond Permet de connatre et de modifier la couleur de fond d'un champ CouleurJauge Permet de connatre et de modifier la couleur de progression (c'est--dire la couleur de la zone qui avance) dans un champ jauge, une colonne de type jauge ou une cellule de type jauge Curseur Permet de connatre et de modifier la position du curseur de la souris dans un champ CurseurSouris Permet de connatre et de modifier le curseur de survol dfinie pour un champ ou une fentre DateDbut Permet de connatre et de modifier la date de dbut d'une priode slectionne dans un champ Calendrier / Agenda / Planning. DateFin Permet de connatre et de modifier la date de fin d'une priode slectionne dans un champ Calendrier / Agenda / Planning. Dplaable Permet de savoir si une colonne de table peut tre dplace ou non par l'utilisateur et d'autoriser/empcher le dplacement d'une colonne de table par l'utilisateur DplaableParLe- Fond Permet de savoir si la fentre est dplaable par le fond et de rendre ou non la fentre dplaable par le fond DplacementRDV Permet de savoir et d'indiquer si l'utilisateur peut dplacer un rendez-vous dans un champ Planning ou dans un champ Agenda. Description Permet de connatre et de modifier la description associe une page. Dtection Permet de connatre et de modifier le mcanisme de dtection automatique des flux entrants DeviseAffichage Permet de connatre et de modifier la devise utilise lors de l'affichage et de la saisie d'une valeur dans un champ de saisie ou dans une colonne de type "Montaire + Euro" DeviseMmoire Permet de connatre et modifier la devise utilise lors de la manipulation dun champ de saisie ou dune colonne de type "Montaire + Euro" par programmation DnDCible Permet de connatre et de modifier le comportement du champ cible vis--vis du "Drag and Drop" DnDSource Permet de connatre et de modifier le comportement du champ source vis--vis du "Drag and Drop" DoubleClic Permet de connatre et de modifier le nom du bouton qui sera excut lors d'un double clic sur un objet Driver Permet de connatre les proprits du driver de capture vido associ un champ Web Camra DroiteAGauche Permet de connatre le sens d'criture rel, effectif sur un champ ou une colonne pr- sent dans une fentre. WLangage.book Page 141 Mardi, 23. avril 2013 1:59 13 142 Partie 3 : Gestion des fentres, des pages et des champs DureNonRponse Permet de connatre et de modifier dlai partir duquel la tentative de connexion sera considre comme "ayant chou" EffacementAuto- matique Permet de grer le mode "Effacement automatique" d'un champ de saisie. EffetVisuel Permet de grer un effet visuel sur un champ ou un groupe de champs d'une fentre. Ellipse Permet de connatre et modifier le mode de gestion de l'ellipse dans un champ libell, dans une liste ou dans une colonne de table de type Libell Emission Permet de connatre et modifier le type de donnes mises par le flux Enfonc Permet de connatre et modifier l'tat d'un bouton poussoir (bouton enfonc ou non) Enroul Permet de dfinir l'tat (enroul ou droul) qui sera utilis lors des prochains ajouts de ligne dans la table hirarchique. EnSaisie Permet de connatre et de modifier les options de saisie d'un champ ou d'un groupe de champs. Etat Permet de connatre et de modifier l'tat d'affichage d'un champ, d'un groupe de champs ou d'une fentre EtatInitial Permet de connatre l'tat initial d'un champ ou d'une fentre FichierParcouru Permet de connatre et de modifier le fichier ou la requte utilis pour l'affichage des enregistrements dans les zones rptes fichier, les tables fichier, les listes fichier ou les combos fichier Filtre Permet de connatre et de modifier le filtre utilis pour l'affichage des enregistrements dans les zones rptes fichier, les tables fichier, les listes fichier ou les combo fichier FinCurseur Permet de connatre/modifier la position de fin de slection du curseur de la souris FocusAuClic Permet de savoir si un champ prend le focus lors d'un clic et permet de modifier l'effet de prise de focus lors du clic sur un champ Format HTLM Permet de savoir si un champ de saisie accepte la saisie au format HTML et permet de modifier le format de saisie d'un champ de saisie. FormatMmoris Permet de connatre et de modifier le format de la valeur retourne pour les champs de saisie et les colonnes de type Date ou Heure Fusion Permet de savoir si les cellules d'une table (ou les titres de colonnes) sont fusionnes, et permet de fusionner les cellules d'une table (ou les titres de colonnes). GranularitDpla- cement Permet de connatre et de modifier la taille de la grille pour le dplacement des rendez- vous d'un champ Agenda ou d'un champ Planning. GranularitDure Permet de connatre et de modifier la taille de la grille utilise pour le redimensionne- ment des rendez-vous d'un champ Agenda ou d'un champ Planning. Gris Permet de savoir si un champ ou un groupe de champs est gris ou non et de griser ou dgriser un champ ou un groupe de champs. Groupe Permet de savoir si le champ appartient ou non un groupe de champs Hauteur Permet de connatre et de modifier la hauteur d'un champ, d'une fentre, dune ligne de table ou dune ligne de liste HauteurElment Permet de connatre et de modifier la hauteur des lments d'un champ Organigramme. HauteurImage Permet de connatre et de modifier la hauteur de la portion de l'image originale qui est affiche dans le champ image HauteurInitiale Permet de connatre la hauteur de cration d'un champ ou d'une fentre et de modifier la hauteur de base utilise pour l'ancrage des champs "en hauteur" HauteurJour Permet de connatre et de modifier la hauteur des jours dans un champ Planning avec les jours en ligne et les ressources en colonne. HauteurLigne Permet de connatre et de modifier la hauteur des lignes d'une liste, d'une table, d'une combo HauteurLigneMax Permet de connatre et de modifier la hauteur maximale des lignes dune table (cas des lignes multi-lignes redimensionnement automatique) WLangage.book Page 142 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 143 HauteurMax Permet de connatre et de modifier la hauteur maximale d'un champ ou d'une fentre HauteurMin Permet de connatre et de modifier la hauteur minimale d'un champ ou d'une fentre HauteurRessource Permet de connatre et de modifier la hauteur des ressources dans un champ Planning avec les ressources en ligne. HauteurRupture- Jour Permet de connatre et de modifier la hauteur des ruptures entre les jours dans un champ Planning avec les jours en ligne et les ressources en colonne. HeureOuvrableD- but Permet de connatre et de modifier l'heure de dbut des heures ouvrables utilises par un champ Agenda ou par un champ Planning. HeureOuvrableFin Permet de connatre et de modifier l'heure de fin des heures ouvrables utilises par un champ Agenda ou par un champ Planning HTMLAprs Permet de connatre et de modifier le code HTML insr aprs le champ. HTMLAvant Permet de connatre et de modifier le code HTML insr avant le champ. HTMLEntte Permet de connatre et de modifier le code HTML ajout dans l'en-tte de la page. HTMLFinPage Permet de connatre et de modifier le code HTML ajout la fin de la page. Identifiant Permet de connatre et modifier le nom sous lequel le poste en cours apparat pour les correspondants (correspond la prsentation du numro) Image Permet de connatre et de modifier l'image d'un champ (bouton, onglet, option de menu), d'un curseur (jauge, potentiomtre) ou de la barre d'outils d'une fentre de type mre MDI ImageDroule Permet de connatre/modifier l'image par dfaut d'une ligne droule dans une table hirarchique. ImageEnroule Permet de connatre/modifier l'image par dfaut d'une ligne enroule dans une table hirarchique. ImageEtat Permet de connatre et de modifier le nombre de dessins prsents dans l'image asso- cie un bouton ou dans l'image du curseur dans un potentiomtre ImageFond Permet de connatre et de modifier l'image de fond d'une fentre, l'image associe au cadre d'un bouton, l'image de fond d'une jauge ou d'un potentiomtre ImageFondEtat Permet de connatre et de modifier le nombre de dessins prsents dans l'image asso- cie au cadre d'un bouton ImageMode Permet de connatre et de modifier le mode d'affichage d'une image dans un champ image ImageTitre Permet de connatre et de modifier l'image affiche dans le titre d'une colonne de table ou de table hirarchique. Indication Permet de connatre et de modifier le texte d'aide affich dans le champ de saisie. Ce texte disparatra ds la saisie des premiers caractres. InterprteEtCom- mercial Permet de connatre et de modifier le mode d'interprtation du caractre '& JaugeSystme Permet de connatre et de modifier la jauge utilise comme jauge systme (dans la barre des tches) avec Windows 7 (et suprieur). Largeur Permet de connatre et de modifier la largeur d'un champ, d'une fentre ou dune colonne de table LargeurColonne Permet de connatre et modifier la largeur de chaque colonne d'une zone rpte multi- colonnes LargeurElment Permet de connatre et modifier la largeur des lments d'un champ Organigramme. LargeurImage Permet de connatre et de modifier la largeur de la portion de l'image originale qui est affiche dans le champ image LargeurInitiale Permet de connatre la largeur de cration d'un champ ou d'une fentre et de modifier la largeur de base utilise pour l'ancrage des champs "en largeur" LargeurJour Permet de connatre et de modifier la largeur des jours dans un champ Planning avec les jours en colonne et les ressources en ligne. WLangage.book Page 143 Mardi, 23. avril 2013 1:59 13 144 Partie 3 : Gestion des fentres, des pages et des champs LargeurMax Permet de connatre et de modifier la largeur maximale d'un champ ou d'une fentre LargeurMin Permet de connatre et de modifier la largeur minimale d'un champ ou d'une fentre LargeurRessource Permet de connatre et de modifier la largeur des ressources dans un champ Planning avec les ressources en colonne. LecteurMultimdia Permet de connatre ou de modifier le lecteur multimdia actuellement utilis par un champ vido pour lire les fichiers multimdia. LiaisonFichier Permet de connatre et de modifier la liaison d'un champ avec une rubrique d'un fichier Libell Permet de connatre et de modifier le libell d'un champ, le titre d'une fentre ou le titre dune page LienAutomatique Permet de connatre le mode de dtection automatique des liens dans les champs de saisie multi-lignes, et d'activer ou non ce mode. MasqueAffichage Permet de connatre et de modifier le masque d'affichage. MasqueSaisie Permet de connatre et de modifier le masque de saisie MaxFeuilleParLi- gne permet de connatre et de modifier le nombre maximum d'lments en ligne dans un champ Organigramme. MDIBas Permet de connatre et de modifier la distance entre le bord bas de la fentre mre MDI, et le bord bas de la zone MDI MDIDroite Permet de connatre et de modifier la distance entre le bord droit de la fentre mre MDI, et le bord droit de la zone MDI MDIGauche Permet de connatre et de modifier la distance entre le bord gauche de la fentre mre MDI, et le bord gauche de la zone MDI MDIHaut Permet de connatre et de modifier la distance entre le bord haut de la fentre mre MDI, et le bord haut de la zone MDI Mmoire Permet de savoir si le champ spcifi est une liste, une combo, une zone rpte ou une table mmoire ou fichier MmoriseFiltreFAA Permet de savoir et d'indiquer si les filtres poss par lutilisateur sur un champ Table ou Table hirarchique sont conservs entre 2 lancements de lapplication. MmoriseTriFAA Permet de savoir et d'indiquer si le tri effectu par lutilisateur sur un champ Table ou Table hirarchique est conserv entre 2 lancements de lapplication. MenuContextuel Permet de connatre et de changer le menu contextuel associ un champ Message Permet de connatre et de modifier le message d'aide Miniature Permet de connatre et de modifier limage associe un lment dune liste image ModeCarte Permet de connatre et de modifier le mode d'affichage de la carte dans le champ Carte ModeListeImage Change le mode daffichage de la liste image (passage dune liste image en liste classi- que et inversement) ModeLoupe Permet de connatre et de modifier le mode de gestion de la loupe dans le titre des colonnes de table ou de table hirarchique. ModeSaisie Permet de connatre et de modifier le mode de saisie sur un Smartphone. ModeTest Permet de savoir si la publicit affiche dans le champ Publicit est une publicit de test. ModificationDu- reRDV Permet de savoir et d'indiquer si lutilisateur peut modifier la dure dun rendez-vous dans un champ Planning ou Agenda. Modifi Permet de savoir si un champ a t modifi par l'utilisateur (clavier ou souris) MotDePasse Permet de savoir si un champ de saisie est de type "Mot de passe" MotsCls Permet de connatre et modifier les mots-cls associs une page. Multiligne Permet de savoir si un champ de saisie ou une colonne de table est multiligne Multislection Permet de connatre et de modifier le mode de slection d'une table, liste, zone rpte NbJourAffich Permet de connatre et de modifier le nombre de jours affichs dans un champ Agenda. NbLignesParPage Permet de connatre et de modifier le nombre de lignes dune table ou le nombre de rptitions dune zone rpte affiches dans une page WLangage.book Page 144 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 145 Nom Permet de connatre le nom d'un champ, d'un groupe de champs, d'une fentre ou dune page NombreColonne Permet de connatre le nombre de colonnes prsentes dans une liste multi-colonnes ou dans une table et de modifier le nombre de colonnes prsentes dans une liste multi- colonnes NombrePage Permet de connatre le nombre de pages prsentes dans un fichier image de type "multi- pages" NomComplet Permet de connatre le nom complet d'un champ, d'un groupe de champs ou d'une fen- tre NomFichierNaviga- teur Permet de connatre le nom original du fichier uploader prsent sur le poste de l'inter- naute. NomFichierServeur Permet de connatre le nom du fichier upload prsent sur le serveur. Note Permet de connatre et de modifier les notes associes un champ, une fentre ou une page Nouveau Permet de savoir si la ligne en cours dans une table ou dans une zone rpte vient d'tre cre grce aux fonctions TableAjoute, TableAjouteLigne, TableInsre et TableIn- sreLigne Num1erJourDeLaS emaine Permet de connatre et de modifier le 1er jour de la semaine affich dans un champ Calendrier, un champ Agenda ou un champ de saisie au format Date avec Calendrier. NumroAide Permet de connatre et de modifier le numro d'aide associ au champ NumroPage Permet de connatre et de modifier le numro de la page affiche dans un champ image (cas des fichiers image de type "multi-pages" NumTab Permet de connatre la position d'un champ dans l'ordre de navigation d'une fentre Occurrence Permet de connatre le nombre dlments OrientationEl- ment Permet de connatre et modifier l'orientation dun champ Organigramme. OrientationVerti- cale Permet de connatre et de modifier lorientation dun champ liste image ParcoursAuto Permet de savoir si le parcours dune zone rpte, d'une liste, d'une table ou d'une combo fichier est automatique ou programm PriodeAnimation Permet de connatre et de modifier la priode de rotation des champs Cube et Carrousel Plan Permet de connatre et de modifier le plan actif d'une fentre ou associer un champ un autre plan Police Permet de connatre et de modifier la police utilise dans un champ d'une fentre PoliceAlphabet Permet de connatre et de modifier l'alphabet actuellement utilis par la police d'un champ PoliceBarre Permet de connatre et de modifier l'attribut "Barr" pour le contenu d'un champ PoliceCondense Permet de savoir si les caractres du texte affich sont condenss ou non, et de con- denser ou non les caractres du texte affich PoliceEtendue Permet de savoir si les caractres du texte affich sont tendus ou non et d'tendre ou non les caractres du texte affich PoliceGras Permet de connatre et de modifier l'attribut "Gras" pour le contenu d'un champ PoliceItalique Permet de connatre et de modifier l'attribut "Italique" pour le contenu d'un champ PoliceLarge Permet de savoir si les caractres du texte affich sont largis ou non, et d'largir ou non les caractres du texte affich PoliceNom Permet de connatre et de modifier la police utilise dans un champ PoliceSouligne Permet de connatre et de modifier l'attribut "Soulign" pour le contenu d'un champ PoliceTaille Permet de connatre et de modifier la taille de la police utilise dans un champ PublicitCharge Permet de savoir si une publicit est actuellement charge dans le champ Publicit. Rception Permet de connatre et modifier le type de donnes reues par le flux WLangage.book Page 145 Mardi, 23. avril 2013 1:59 13 146 Partie 3 : Gestion des fentres, des pages et des champs Ressource Permet de connatre les ressources visibles dans un champ Planning et permet decon- natre la ressource du champ Planning correspondant l'indice spcifi RessourceSlec- tionne Renvoie le nom de la ressource correspondant la slection de lutilisateur dans un champ Planning RetraitGauche Permet de connatre et de modifier l'espace laiss gauche du texte dans les colonnes de table RichEdit Permet de savoir si un champ d'une fentre est de type RTF (Rich Text Format) RubriqueAffiche Permet de connatre ou de modifier la rubrique affiche dans une table, une zone rp- te, une liste ou une combo RubriqueAfficheI- mage Permet de connatre ou de modifier la rubrique correspondant l'image affiche dans une liste image RubriqueMmori- se Permet de connatre ou de modifier la rubrique mmorise d'une table, dune zone rp- te, d'une liste ou d'une combo RubriqueParcou- rue Permet de connatre et de modifier la rubrique utilise pour le parcours automatique des tables, des zones rptes, des listes ou des combos SaisieDirecteRDV Permet de savoir et d'indiquer si lutilisateur peut modifier directement le titre dun ren- dez-vous dans un champ Planning ou dans un champ Agenda. SaisieManuscrite Permet de connatre et de modifier le mode de saisie manuscrite dans les champs de saisie RTF. ScrollAuDoigt Permet de savoir si le contenu d'un champ peut tre dplac avec le doigt ("scroll au doigt") et permet dautoriser ou non un champ tre manipul directement avec le doigt ScuritHTML Permet de connatre et de modifier l'tat du mcanisme de scurit des champs de sai- sie au format HTML Slectionne Permet de savoir si une ligne dune liste ou dune table est slectionne et de slection- ner une ligne dune liste ou dune table SlectionPriode Permet de savoir et d'indiquer si l'utilisateur peut slectionner une priode dans un champ Planning ou dans un champ Agenda. SensEcriture Permet de connatre et de modifier le sens d'criture utilis dans une fentre ou dans un champ (utile pour la gestion des langues de type arabe ou hbreux). SousLibell Permet de connatre et de modifier le libell secondaire d'une option de slecteur. StyleFond Permet de modifier le style d'affichage du fond des cellules de tables et / ou de tables hirarchiques. Taille Permet de connatre et de modifier le nombre maximum de caractres contenus dans un champ d'une fentre ou dune page TauxAncrageBas Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe vertical TauxAncrageDroite Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe horizontal TauxAncrageHau- teur Permet de connatre et de modifier le taux d'ancrage en hauteur d'un champ TauxAncrageLar- geur Permet de connatre et de modifier le taux d'ancrage en agrandissement d'un champ sur l'axe vertical TexteSelectionn Permet de connatre et de modifier le texte slectionn dans un champ de saisie, une combo en saisie ou une colonne de table en saisie. Titre Permet de connatre et de modifier le titre d'une colonne de table, le titre d'une fentre ou dune page TitreNote Permet de connatre et de modifier le libell pour le dossier de programmation d'un champ, d'une fentre ou dune page TotauxActif Permet de connatre le mode de fonctionnement des calculs automatiques pour une table, et d'interdire ou de forcer les calculs automatiques dans une table WLangage.book Page 146 Mardi, 23. avril 2013 1:59 13 Partie 3 : Gestion des fentres, des pages et des champs 147 Triable Permet de savoir si une colonne peut tre choisie par l'utilisateur comme critre de tri de la table et d'autoriser/empcher l'utilisateur de choisir une colonne comme critre de tri de la table Trie Permet de savoir si une liste ou une combo mmoire est trie et de rendre une liste ou une combo mmoire trie TroisEtats Permet de connatre et de modifier le mode de gestion d'une option d'interrupteur Type Permet de connatre le type d'un objet TypeFichiers Permet de connatre et de modifier le filtre sur les fichiers propos dans le slecteur de fichiers du champ Upload. TypeSaisie Permet de connatre le type d'un champ de saisie ou d'une colonne de table Unicode Permet de savoir si un champ a une valeur Unicode et d'indiquer si un champ a une valeur Unicode URL Permet de connatre ladresse associe un lien, un bouton ou une image clicable Valeur Permet de connatre et de modifier la valeur d'un champ, d'une fentre ou dune page ValeurAffiche Permet de connatre la valeur actuellement affiche l'cran dans un champ d'une fentre ou dune page ValeurInitiale Permet de connatre la valeur initiale d'un champ d'une fentre ou dune page ValeurMmorise Permet de connatre la valeur qui sera mmorise lors de la slection d'un lment de la liste ValeurRenvoye Permet de connatre et de modifier la valeur renvoye par une fentre VrifieOrthographe Permet de savoir si la correction orthographique de OpenOffice est propose ou non dans un champ de saisie ou une colonne de table et de l'activer si ncessaire. Vertical Permet de savoir si un champ est horizontal ou vertical Vide Permet de savoir si une table, une zone rpte, une liste ou une combo est vide Visible Permet de savoir si un lment (champ, groupe de champs, fentre ou page) est visible et de rendre visible / invisible un lment (champ, groupe de champs, fentre ou page) VisibleHorsFentre permet de savoir si un bouton est visible mme si sa position (X,Y) le met en dehors du cadre de la fentre (entirement ou partiellement) et permet de modifier la visibilit d'un bouton "hors fentre" VisibleInitial Permet de savoir si un champ ou une fentre tait visible lors de sa cration X Permet de connatre et de modifier l'abscisse d'un champ, d'une colonne d'une table ou d'une fentre (position sur l'axe des X) XImage Permet de connatre et de modifier l'origine (abscisse) de l'image dans un champ image XInitial Permet de connatre et de modifier l'abscisse de cration d'un champ ou d'une fentre Y Permet de connatre et de modifier l'ordonne d'un champ ou d'une fentre YImage Permet de connatre et de modifier l'origine (ordonne) de l'image dans un champ image YInitial Permet de connatre et de modifier l'ordonne de cration d'un champ ancr "en bas" Zoom Permet de connatre et de modifier la valeur du zoom effectu dans un champ image Pour plus de dtails sur ces proprits, consultez laide en ligne. Pour connatre la disponibilit de ces proprits dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 147 Mardi, 23. avril 2013 1:59 13 148 Partie 3 : Gestion des fentres, des pages et des champs WLangage.book Page 148 Mardi, 23. avril 2013 1:59 13 PARTIE 4 Fonctions standard WLangage.book Page 149 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 150 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 151 1. MANIPULER LES NUMRIQUES 1.1 Prsentation De nombreuses fonctions de programmation per- mettent de : grer les valeurs numriques, raliser des calculs de trigonomtrie, manipuler les valeurs binaires, utiliser les matrices, raliser des calculs financiers et statistiques. 1.2 Les matrices De nombreuses fonctions du WLangage permettent de manipuler les matrices. Les matrices sont un outil mathmatique permet- tant de simplifier et de rsoudre de nombreux pro- blmes. Les calculs sur les matrices sont utiliss dans de nombreux domaines : conomie, physique, etc. Dans ces domaines, les problmes rencontrs peu- vent souvent se mettre sous la forme d'un systme d'quations. Le rsultat de ce systme d'quations peut tre calcul grce aux matrices. 1.2.1 Dfinition Une matrice est un ensemble ordonn de "n p" nombres, gnralement reprsent sous forme d'un tableau de n lignes et p colonnes. Les nombres composant la matrice sont les l- ments de la matrice. Chaque lment est identifi par sa ligne et sa colonne. Une valeur est associe chaque lment. Dans cette matrice, n = 2 lignes et p = 4 colonnes. La valeur de l'lment (ligne 2 , colonne 3) est 7. La dimension (ou taille) de la matrice correspond au nombre de lignes et au nombre de colonnes de la matrice considre. La taille de vos matrices peut tre gre dynami- quement. En effet, lors de sa cration, une matrice est vide : elle contient 0 ligne et 0 colonne. C'est une matrice de dimension 0 x 0. Il suffit d'initialiser un lment en ligne n et colonne p pour que la taille de la matrice devienne n x p. Par exemple, aprs l'initialisation d'un lment en ligne 6 et colonne 12, la taille de la matrice devient 6 x 12. 1.2.2 Manipulations des matrices Plusieurs fonctions du WLangage vous permettent de grer vos matrices. Ces fonctions commencent par les lettres "MAT". Ces fonctions permettent de : manipuler les matrices (cration, copie, inver- sion, compression, suppression), initialiser les lments des matrices, lire la valeur des lments des matrices, effectuer divers calculs sur les matrices (addi- tion, multiplication, transpose, dterminant, etc.), obtenir diverses informations sur les matrices (nombre de lignes, nombre de colonnes, etc.). Exemple Pour effectuer des calculs financiers, votre pro- gramme cre plusieurs matrices. Les lments des matrices peuvent tre initialiss. Plusieurs calculs sont possibles sur ces matrices. WLangage.book Page 151 Mardi, 23. avril 2013 1:59 13 152 Partie 4 : Fonctions standard 1.3 Les statistiques De nombreuses fonctions du WLangage permettent de raliser diffrentes statistiques. Les statistiques sont calcules partir de matrices. Les valeurs prises en compte pour le calcul des sta- tistiques sont les valeurs des lments d'une matrice. Les sries de valeurs correspondent une ligne (ou une colonne) d'une matrice. Par exemple, les valeurs de la ligne 1 de cette matrice sont 3, 2, 4, 5 et 6. Les fonctions permettant de raliser des calculs statistiques commencent par les lettres "Stat". Ces fonctions permettent de : calculer la variance et la covariance, calculer lcart-type, etc. 1.4 Calculs financiers De nombreuses fonctions du WLangage permettent de raliser diffrents calculs financiers. Ces calculs sont raliss partir de matrices. Les valeurs pri- ses en compte pour ces calculs sont les valeurs des lments d'une matrice. Les sries de valeurs correspondent une ligne (ou une colonne) d'une matrice. Les fonctions permettant de raliser des calculs financiers commencent par les lettres "Fin". Ces fonctions permettent de : calculer lamortissement dun bien selon plu- sieurs mthodes, calculer lcart-type, etc. 1.5 Fonction de gestion des numriques 1.5.1 Fonctions diverses Les fonctions de gestion des valeurs numriques sont les suivantes : Abs Calcule la valeur absolue d'une expression numrique (entire ou relle) ArcCosinus Calcule l'arc cosinus d'une valeur numrique (entire ou relle) ArcSinus Calcule l'arc sinus d'une valeur numrique (entire ou relle) ArcTang Calcule l'arc tangente d'une valeur numrique (entire ou relle) ArcTang2 Renvoie l'arc tangente 2 des valeurs passes en paramtre Arrondi Calcule la valeur arrondie d'une valeur numrique selon le nombre de dcimales prcis ArrondiInfrieur Renvoie la valeur arrondie d'une valeur numrique l'entier infrieur le plus pro- che ArrondiSuprieur Renvoie la valeur arrondie d'une valeur numrique l'entier suprieur le plus pro- che Conversion Convertit une valeur d'une unit dans une autre Cosinus Calcule le cosinus d'un angle CoTang Calcule la co-tangente d'un angle EstImpair Identifie un nombre impair EstPair Identifie un nombre pair Exp Calcule lexponentielle dune valeur numrique Factorielle Renvoie la factorielle d'un nombre entier Hasard Renvoie un nombre alatoire WLangage.book Page 152 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 153 1.5.2 Fonctions Binaire Les fonctions de gestion des valeurs binaires sont les suivantes : 1.5.3 Fonctions Matrice Les fonctions de gestion des matrices sont les suivantes : InitHasard Initialise le gnrateur de nombres alatoires Ln Calcule le logarithme nprien dune valeur numrique Log Calcule le logarithme dune valeur numrique Max Renvoie la plus grande des valeurs passes en paramtre Min Renvoie la plus petite des valeurs passes en paramtre Moyenne Calcule la moyenne de plusieurs lments NumriqueVersChane Renvoie une chane de caractres correspondant au nombre pass en paramtre PartieDcimale Renvoie la partie dcimale d'un nombre PartieEntire Renvoie la partie entire d'un nombre Puissance lve un nombre une puissance Racine Calcule la racine d'un nombre Sinus Calcule le sinus d'un angle Somme Calcule la somme des lments d'un tableau. Tang Calcule la tangente d'un angle Pour plus de dtails sur ces fonctions, et pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. ETBinaire Renvoie le rsultat du ET logique (bit bit) entre deux valeurs NONBinaire Renvoie le rsultat du NON logique (bit bit) d'une valeur OUBinaire Renvoie le rsultat du OU logique (bit bit) entre deux valeurs OUExclusifBinaire Renvoie le rsultat du OU Exclusif logique (bit bit) entre deux valeurs Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. MatAdditionne Additionne deux matrices de mme dimension MatCompresse Compresse la place mmoire occupe par une matrice MatCopie Cre la copie d'une matrice MatCre Cre une matrice MatDterminant Calcule le dterminant d'une matrice carre MatEcrit crit un lment dans une matrice MatErreur Identifie le type de la dernire erreur due une fonction de gestion de matrices MatExiste Teste l'existence d'une matrice en mmoire MatInverse Inverse une matrice carre MatLit Lit la valeur d'un lment d'une matrice MatLitColonne Lit la valeur de tous les lments d'une colonne d'une matrice MatLitLigne Lit la valeur de tous les lments d'une ligne d'une matrice MatMultiplie Multiplie deux matrices MatNbColonne Renvoie le nombre de colonnes d'une matrice MatNbLigne Renvoie le nombre de lignes d'une matrice MatRelAdditionne Additionne une valeur chaque lment d'une matrice MatRelMultiplie Multiplie chaque lment d'une matrice par une valeur MatRemplit Initialise tous les lments d'une matrice d'une taille donne MatSupprime Supprime une matrice existante MatTranspose Calcule la transpose d'une matrice WLangage.book Page 153 Mardi, 23. avril 2013 1:59 13 154 Partie 4 : Fonctions standard 1.5.4 Fonctions Financires Les fonctions financires sont les suivantes : 1.5.5 Fonctions Statistiques Les fonctions statistiques sont les suivantes : Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. FinAmortissement Cre une matrice d'amortissement pour le montant d'un emprunt un taux d'intrt constant pour une dure dfinie FinAmortissementDgressif Calcule la valeur de l'amortissement d'un bien pour une priode spcifique grce la formule de l'amortissement dcroissant taux fixe FinAmortissementLinaire Calcule la valeur de l'amortissement linaire d'un bien pour une priode donne FinErreur Renvoie le numro de la dernire erreur due une fonction financire FinIntrtPriode value pour une priode donne le montant des intrts dus pour un emprunt rembours par des versements priodiques constants avec un taux d'intrt constant FinNbVersement Renvoie le nombre de versements ncessaires pour rembourser un capital selon un taux FinTauxIntrt value le taux d'intrt pour un emprunt donn sur une priode avec des versements constants FinValActuelle Renvoie la valeur actuelle d'un investissement FinValActuelleNette Renvoie la valeur actuelle nette d'un investissement bas sur des flux financiers non constants FinValFuture Renvoie la valeur future d'un investissement (remboursements priodiques constants avec un taux d'intrt constant) FinValRemboursement Renvoie le montant de chaque remboursement priodique d'un investisse- ment remboursement et taux d'intrt constants Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. StatCorrlation Calcule le coefficient de corrlation entre deux sries de valeurs StatCovariance Calcule la covariance entre deux sries de valeurs StatEcartMoyen Calcule la moyenne des carts absolus des valeurs par rapport leur moyenne arith- mtique StatEcartType Calcule l'cart type d'une srie de valeurs StatEcartTypeP Calcule l'cart type d'une srie complte de valeurs StatErreur Calcule le numro de la dernire erreur due une fonction statistique StatMax Calcule la valeur maximale d'une srie de valeurs StatMin Calcule la valeur minimale d'une srie de valeurs StatMoyenne Calcule la moyenne arithmtique, gomtrique ou harmonique d'une srie de valeurs StatSomme Calcule le cumul d'une srie de valeurs StatVariance Calcule la variance d'une srie de valeurs StatVarianceP Calcule la variance d'une srie complte de valeurs Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 154 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 155 2. MANIPULER LES CHANES DE CARACTRES Les fonctions du WLangage permettent de raliser plusieurs types d'oprations sur les chanes de caractres.
Il est ainsi possible : de manipuler le contenu de la chane, d'effectuer des conversions et des cryptages. 2.1 Manipuler le contenu d'une chane Les fonctions du WLangage permettent aussi bien d'extraire des parties d'une chane de caractres (fonctions Gauche, Droite, Milieu par exemple) que d'effectuer des recherches dans une chane (fonc- tion Position ou Remplace par exemple). Certaines fonctionnalits proposes par les fonc- tions du WLangage peuvent aussi tre ralises grce aux oprateurs sur les chanes de caractres du WLangage. Plusieurs fonctions du WLangage permettent de simplifier les conversions et les cryptages des cha- nes de caractres. Il est ainsi possible par exemple de : convertir une chane au format ANSI ou OEM (fonctions AnsiVersOem et OemVersAnsi), convertir une chane au format ANSI ou UNICODE (fonctions AnsiVersUnicode et UnicodeVersAnsi), crypter ou dcrypter une chane de caractres (fonctions Crypte et Dcrypte), convertir une chane de caractres en phonti- que (fonction Phontique). Remarque : Pour toutes les conversions de type Chane/Date ou Chane/Heure, consultez le chapi- tre Manipuler des dates et des heures, page 159. Pour plus de dtails, consultez le paragraphe Op- rateurs sur chanes de caractres, page 71. 2.2 WinDev et lUnicode 2.2.1 Qu'est-ce que l'UNICODE L'Unicode est un systme de codage spcifiant un nombre unique pour chaque caractre. Ce codage est ralis sur 16 bits. Ce nombre est lisible quelle que soit la plate-forme, le logiciel et la langue utili- se. L'UNICODE peut prendre en compte tous les syst- mes d'criture de la plante. 2.2.2 WinDev et l'unicode Pour grer l'UNICODE, WinDev propose : le type Chane UNICODE deux fonctions de conversion : l'adaptation des fonctions de manipulation des chanes de caractres (Droite, Gauche, Milieu, Taille, TypeVar, ...) Ajout d'une constante permettant de savoir si une chane est de type Chane ANSI ou Chane Unicode l'adaptation des oprateurs de manipulation des chanes de caractres l'oprateur de concatnation (+) l'oprateur de comparaison (=) l'oprateur d'extraction ([[ ]]) l'oprateur de comparaison (<>) l'adaptation des fonctions de manipulation des fichiers texte (fEcrit, fEcritLigne, fLit, fLitLigne, fOuvre). AnsiVersUnicode Convertit une chane de caract- res au format ANSI (Windows) en une chane de caractres au for- mat UNICODE. UnicodeVersAnsi Convertit une chane de caract- res au format Unicode en une chane de caractres au format ANSI (Windows). WLangage.book Page 155 Mardi, 23. avril 2013 1:59 13 156 Partie 4 : Fonctions standard 2.3 Manipulation des chanes de caractres sous Pocket PC Le format par dfaut des chanes de caractres est diffrent sur un poste PC et sur un Pocket PC. En effet, sur les postes PC, les applications Win- dows manipulent gnralement des chanes de caractres au format ANSI. Au contraire, sur les Pockets PC, les applications Windows pour Pocket PC manipulent par dfaut des chanes de caract- res au format UNICODE. Chane de caractres Dans la plupart des cas, la manipulation des cha- nes de caractres l'aide des fonctions WLangage sera identique sous WinDev Mobile et sous WinDev standard. L'utilisation de formats de chanes de caractres diffrents est automatiquement gre par WinDev Mobile et entirement transparente pour le dveloppeur et l'utilisateur. Fichiers texte Sous Pocket PC, lors de l'utilisation de fichiers texte contenant des chanes de caractres au format ANSI, WinDev convertit automatiquement ces cha- nes de caractres au format UNICODE. Cette con- version est effectue mme si l'ouverture de ce fichier au format ANSI est explicitement demande. Cette conversion est totalement transparente. 2.4 Fonctions de gestion des chanes de caractres Les fonctions permettant de grer les chanes de caractres sont les suivantes : AnsiVersOem Convertit une chane de caractres au format ANSI (Windows) en une chane de carac- tres au format OEM (DOS) AnsiVersUnicode Convertit une chane de caractres au format ANSI (Windows) en une chane de carac- tres au format UNICODE Asc Calcule le code ASCII du caractre spcifi (le code ASCII utilis correspond la norme ANSI utilise par Windows) BufferVersHexa Convertit un buffer en une chane hexadcimale affichable (par exemple : "4A 5B 00"). Caract Renvoie le caractre correspondant au code ASCII spcifi (le code ASCII utilis corres- pond la norme ANSI utilise par Windows) CaractOccurren- ceType Renvoie le nombre de caractres vrifiant les informations de type donnes. CaractType Renvoie des informations sur le type d'un caractre. CaractUnicode Renvoie le caractre Unicode correspondant au code ASCII spcifi ChaneCommen- cePar Vrifie si une chane de caractres commence par une chane de caractres spcifique ou par une des chanes de caractres prsentes dans une liste. ChaneCompare Compare deux chanes de caractres ChaneConstruit Construit une chane de caractres en fonction d'un format et de paramtres ChaneFinitPar Vrifie si une chane de caractres se termine par une chane de caractres spcifique ou par une des chanes de caractres prsentes dans une liste. ChaneFormate Formate une chane de caractres selon les options choisies ChaneInverse Inverse les caractres d'une chane. ChaneOccurrence Calcule le nombre d'occurrences d'une chane de caractres spcifique dans une autre chane de caractres ChaneRcupre Rcupre une chane de caractres partir d'un format externe (C, etc.) ChaneSupprime Supprime toutes les occurrences d'une sous-chane l'intrieur d'une chane. ChaneVersDate Transforme une date sous forme de chane en une date au format AAAAMMJJ ChaneVersTableau Remplit un tableau une ou 2 dimensions avec le contenu d'une chane. ChaneVersUTF8 Convertit une chane ANSI ou UNICODE au format UTF8 Complte Renvoie une chane de caractres spcifique une taille dtermine. ComplteRep Ajoute si ncessaire le caractre "\" la fin d'une chane de caractres Compresse Compresse une chane de caractres ou un bloc mmoire (buffer) sous forme binaire Contient Permet de savoir si une sous-chane est contenue dans une chane. WLangage.book Page 156 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 157 Crypte Crypte une chane de caractres sous forme binaire ou sous forme ASCII DcomplteRep Enlve si ncessaire le caractre "\" ou "/" la fin d'une chane de caractres Dcompresse Dcompresse une chane de caractres ou un bloc mmoire (buffer) pralablement compress par la fonction Compresse Dcrypte Dcrypte une chane de caractres pralablement crypte par la fonction Crypte Dsrialise Transforme une chane ou un buffer en structure, classe, tableau Droite Extrait la partie droite d'une chane de caractres (c'est--dire les derniers caractres) EntierVersHexa Renvoie la chane hexadcimale d'une valeur numrique ExtraitChane Extrait une sous-chane d'une chane de caractres, en fonction d'un sparateur de chane donn Gauche Extrait la partie gauche d'une chane de caractres (les premiers caractres) HexaVersBuffer Convertit une chane reprsentant des octets en hexadcimal en un buffer binaire. HexaVersEntier Renvoie la valeur numrique d'une chane hexadcimale HTMLVersRTF Convertit une chane de caractres ou un buffer au format HTML en un texte au format RTF. HTMLVersTexte Convertit une chane de caractres ou un buffer au format HTML en un texte. Inverse Renvoie pour chaque caractre d'une chane de caractres le complment 255 (la chane de caractres est ainsi inverse) LigneVersPosition Renvoie la position du premier caractre d'une ligne dans un bloc de texte. Majuscule Convertit une chane de caractres en majuscules, en fonction des paramtres de localisation dfinis dans Windows (les accentuations sont conserves) Milieu Extrait une sous-chane d'une chane partir d'une position donne Minuscule Convertit une chane de caractres en minuscules, en fonction des paramtres de localisation dfinis dans Windows (les accentuations sont conserves) MotOccurrence Renvoie le nombre de mots d'une chane. MotVersTableau Remplit un tableau avec les mots d'une chane. NumriqueVers- Chane Transforme un numrique (entier, rel ou montaire) en une chane de caractres selon le format spcifi OemVersAnsi Convertit une chane de caractres au format OEM (Dos) en une chane de caractres au format ANSI (Windows) Phontique Dtecte si deux chanes de caractres sont phontiquement semblables (selon la pho- ntique franaise) Position Recherche la position d'une chane de caractres dans une autre chane de caractres PositionOccur- rence Recherche la X me position d'une chane de caractres dans une autre chane de caractres PositionVersLigne Renvoie le numro de la ligne auquel appartient un caractre connu par sa position dans un bloc de texte. Remplace Remplace toutes les occurrences d'un mot prsent dans une chane par un autre mot Rpte Concatne N rptitions d'une mme chane de caractres SansAccent Transforme les caractres accentus d'une chane de caractres en caractres non accentus SansCaractre Renvoie une chane de caractres sans les caractres spcifis situs gauche et droite SansEspace Renvoie une chane de caractres sans les espaces situs gauche et droite TableauVersChane Convertit un tableau 1 ou 2 dimensions en chane de caractres. Taille Renvoie la taille d'une chane de caractres (nombre de caractres) TailleCommune Renvoie le nombre de caractres communs deux chanes de caractres TailleVersChane Convertit une taille donne en octets en une chane de caractres formate en kilo- octets, mga-octets ou tera-octets TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres au for- mat XML WLangage.book Page 157 Mardi, 23. avril 2013 1:59 13 158 Partie 4 : Fonctions standard UnicodeVersAnsi Convertit une chane de caractres au format Unicode en une chane de caractres au format ANSI (Windows) UTF8VersChane Convertit une chane au format UTF8 en une chane ANSI ou une chane UNICODE URLDcode Dcode une URL encode (c'est--dire avec des caractres sous la forme de %xx) URLEncode Encode une URL avec uniquement un sous-ensemble de caractres ASCII Val Renvoie la valeur numrique d'une chane de caractres VrifieExpression- Rgulire Vrifie si une chane de caractres correspond un format spcifique, et rcupre les diffrentes sous-chanes constituant le format XMLVersTexte Convertit une chane de caractres au format XML en une chane de caractre au for- mat ANSI Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 158 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 159 3. MANIPULER DES DATES ET DES HEURES 3.1 Prsentation De nombreux moyens vous permettent de manipu- ler les dates et les heures dans vos applications : les champs de saisie de type Date ou de type Heure, les rubriques de fichiers de donnes de type Date ou de type Heure, les variables de type Date, Heure, DateHeure et Dure, les proprits sur les variables de type Date, Heure, DateHeure et Dure, les fonctions du WLangage de gestion des dates et des heures. 3.2 Diffrentes faons de manipuler les dates et les heures Selon le type de manipulation effectu sur les dates et les heures, il peut tre plus efficace d'utili- ser les variables ou les fonctions du WLangage. Les fonctions du WLangage sont conseilles : pour le formatage des dates ou des heures, ainsi que pour les oprations de conversion (conver- sion d'une date en entier, etc.), pour obtenir des informations sur les dates et les heures (validit de la date ou de l'heure, obtenir le jour en toutes lettres, etc.). L'utilisation des variables est conseille : pour tous les calculs effectus sur les dates et les heures (diffrence, calcul de dure, etc.), pour les extractions de partie de date ou d'heure (jour, mois, anne, etc.). 3.3 Manipuler les dates / heures prsentes dans des champs de saisie Il est possible de manipuler les valeurs prsentes dans les champs de saisie avec les variables de type date ou heure. Il suffit d'affecter la variable avec le contenu du champ. Pour plus de dtails, consultez les types Date (page 42), Heure (page 43), DateHeure (page 43) et Dure (page 43). 3.4 Fonctions de gestion des dates et des heures Les fonctions de gestions des dates et des heures sont les suivantes : Age Renvoie lge partir dune de naissance AnneEnCours Renvoie l'anne en cours sous forme d'entier ChaneVersDate Transforme une date sous forme de chane de caractres en une date au format AAAAMMJJ ChaneVersDure Transforme une dure sous forme de chane de caractres en une dure utilisa- ble par une variable de type Dure ChronoDbut Dmarre un chronomtre afin de mesurer la dure d'un traitement (en millise- condes) et permet de remettre zro un chronomtre existant ChronoFin Arrte un chronomtre et renvoie le temps coul (en millisecondes) depuis le dbut du chronomtrage (appel de la fonction ChronoDbut). ChronoPause Interrompt un chronomtre afin de mesurer la dure dun traitement. ChronoReprend Redmarre un chronomtre prcdemment arrt ChronoValeur Indique le temps coul depuis l'appel la fonction ChronoDbut DateDiffrence Calcule la diffrence de jours entre deux dates WLangage.book Page 159 Mardi, 23. avril 2013 1:59 13 160 Partie 4 : Fonctions standard DateDuJour Renvoie ou modifie la date systme DateHeureDiffrence Calcule la diffrence entre deux dates et heures DateHeureLocaleVersUTC Convertit une date et une heure exprime en date et heure locale (fuseau horaire, horaire d't, horaire d'hiver) en temps universel (UTC) DateHeureParDfaut Permet de dfinir la valeur par dfaut des variables de type Date, Heure, et Date- Heure DateHeureSys Renvoie ou modifie la date systme (date et heure du jour dfinies pour le poste en cours) DateHeureUTCVersLo- cale Convertit une date et une heure exprime en date et heure UTC (temps universel) en date et heure locale (fuseau horaire, horaire d't, horaire d'hiver). DateSys Renvoie ou modifie la date systme DateValide Teste la validit d'une date (entre le 01 janvier 0001 et le 31 dcembre 9999) DateVersChane Formate la date spcifie au format spcifi DateVersEntier Transforme une date en un entier DateVersJour Renvoie le jour correspondant une date donne DateVersJourEnLettre Renvoie le jour de la semaine en toutes lettres correspondant la date spcifie DateVersMoisEnLettre Renvoie le mois en toutes lettres correspondant la date spcifie DateVersNumroDeSe- maine Renvoie le numro de la semaine dans l'anne correspondant la date spcifie DernierJourDeLa Semaine Renvoie la date du dernier jour de la semaine correspondant une date donne. DernierJourDuMois Renvoie la date du dernier jour du mois spcifi DureVersChane Formate la dure spcifie au format spcifi EntierVersDate Transforme un entier en une date au format "AAAAMMJJ" EntierVersHeure Transforme un entier en une heure au format "HHMMSSCC" EntierVersJour Renvoie le jour de la semaine correspondant la date spcifie EntierVersJourEnLettre Renvoie le jour de la semaine en toutes lettres correspondant la date EntierVersMoisEnLettre Renvoie le mois en toutes lettres correspondant la date spcifie EntierVersNumroDe- Semaine Renvoie le numro de la semaine dans l'anne correspondant la date HeureDiffrence Calcule la diffrence en centimes de secondes entre deux heures HeureSys Renvoie ou modifie l'heure systme HeureValide Teste la validit d'une heure HeureVersChane Formate l'heure passe en paramtre selon le format "HH:MM:SS:CC" HeureVersEntier Transforme une heure en un entier JourFri Indique si un jour est fri ou non. JourFriAjoute Indique qu'un jour ou qu'une liste de jours est fri. JoufFriSupprimeTout Vide la liste de tous les jours fris. Maintenant Renvoie ou modifie l'heure systme NumrodeJourVersLet- tre Renvoie le nom du jour de la semaine en fonction de son numro. NumroDeMoisVersLe- trre Renvoie le nom du mois en fonction de son numro. MoisEnCours Renvoie le mois en cours NumroDeSemaine Renvoie le numro de la semaine dans l'anne correspondant la date Pques Renvoie la date de Pques pour une anne donne PremierJourDeLaSe- maine Renvoie la date du premier jour de la semaine (c'est--dire le Lundi). PremierJourDuMois Renvoie le premier jour du mois Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonc- tions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 160 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 161 4. MANIPULER LES GRAPHES 4.1 Prsentation WinDev / WebDev / WinDev Mobile mettent votre disposition un champ graphe (utilisable dans l'di- teur de fentres, de pages, et d'tats) ainsi que des fonctions qui permettent de crer et de manipuler des graphes. La plupart des applications et des sites manipulent un grand nombre de donnes numriques. Les gra- phes permettent une visualisation rapide et con- crte de ce type de donnes. Il est possible de raliser plusieurs types de graphes : Secteurs, Histogramme, Courbe, Nuage de points. Pour chacun des types de graphes, des options d'affichage permettent d'avoir des rendus diffrents. 4.2 Les diffrents types de graphes Les diffrents types de graphes sont les suivants : graphe de type secteur (ou camembert), graphe de type histogramme, graphe de type courbe, graphe de type nuage de points, graphe de type boursier, graphe en 3 dimensions. 4.2.1 Les graphes de type "Secteur" Un graphe en secteur (ou camembert) reprsente un cercle dcoup en secteurs. La taille de chaque secteur est proportionnelle une donne de la srie. Un graphe en secteur n'affiche jamais plus d'une srie de donnes. Il permet de mettre en vidence un lment particulirement important. 1. Angle de dpart. 2. Titre du graphe. 3. Lgende. 4. tiquette de secteur. 5. Couleur de secteur. 6. Relief. 7. Libell de secteur. 4.2.2 Les graphes de type "Histogramme" Les donnes sont interprtes comme des "barres" dont la hauteur est proportionnelle la valeur de la donne. Les graphes de type histogramme permettent de reprsenter l'volution des donnes sur une priode donne. Ils facilitent galement les compa- raisons entre des lments. Les catgories sont organises horizontalement et les valeurs verticalement afin de mettre en vi- dence leur variation dans le temps. 1. Libell des donnes. 2. Titre de l'axe vertical. 3. Graduation. 4. Titre du graphe. 5. Lgende. 6. ti- quette de srie. 7. Couleur de srie. 8. Libell de catgorie. 9 Espacement. 10. Relief. 11. Qua- drillage. WD WM WebDev WLangage.book Page 161 Mardi, 23. avril 2013 1:59 13 162 Partie 4 : Fonctions standard 4.2.3 Les graphes de type "Courbe" Dans les graphes de type courbe, les donnes sont interprtes comme des ordonnes successives de points. Les points de chaque srie sont ensuite relis entre eux par des traits. 1. Titre du graphe. 2. Titre de l'axe vertical. 3. Gra- duation. 4. Lgende. 5. tiquette de srie. 6. Cou- leur de srie. 7. Libell de catgorie. 8. Titre de l'axe horizontal. 9. Quadrillage. Les graphes de type courbe permettent de mettre en vidence les tendances des donnes. 4.2.4 Les graphes de type "Nuage de points" Un nuage de points (XY) reprsente la relation entre deux valeurs numriques dans deux sries de don- nes. Les sries impaires permettent d'identifier les abscisses des points, et les sries paires, les ordonnes des mmes points. Les nuages de points mettent en vidence des intervalles irrgu- liers, ils permettent aussi de grouper les donnes. Les graphes "nuage de points" sont couramment utiliss pour reprsenter des donnes scientifi- ques. 1. Titre de l'axe vertical. 2. Valeur Y. 3. Graduation. 4. Titre du graphe. 5. Lgende. 6. tiquette de srie. 7. Couleur de srie. 8. Valeur X. 9. Titre de l'axe horizontal. 4.2.5 Les graphes de type "Boursier" Les graphes de type bousier permettent de repr- senter les variations du cours d'une action. Trois types de graphes boursiers sont disponibles : Chandelier Barcharts Minmax 4.2.6 Les graphes en 3 dimensions Tous les types de graphes peuvent tre affichs en 3 dimensions. WLangage.book Page 162 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 163 4.3 Comment crer des graphes ? 4.3.1 Crer des graphes dans les diteurs Les diffrents diteurs de fentres, de pages et d'tats disposent d'un champ graphe. Lors de la cration de ce champ, les assistants vous posent diffrentes questions afin de dcrire le graphe qui va tre cr. La fentre de description du champ permet de modifier tout moment ces options. Les fonctions WLangage permettent galement de modifier les graphes affichs dans les champs Gra- phe. Il suffit d'indiquer le nom du champ Graphe dans les diffrentes fonctions. 4.3.2 Crer des graphes par programma- tion Une cinquantaine de fonctions WLangage permet- tent de manipuler les graphes. Ces fonctions per- mettent de crer les graphes, de les modifier, de changer des options d'affichage, etc. Les oprations raliser pour crer des graphes sont les suivantes : 1. Crez le graphe avec la fonction grCre. 2. Initialisez les donnes du graphe avec les fonctions : grAjouteDonne, pour les graphes de type courbe, secteur, ... grNuageAjouteDonneXY pour les graphes de type Nuage de points, grBourseAjouteDonne pour les graphes de type boursier. 3. Choisissez la destination daffichage du graphe avec les fonctions : grDestinationChamp pour afficher le graphe dans un champ Image, grDestinationFen pour afficher le graphe dans une fentre WinDev indpendante, grDestinationBmp, grDestinationEmf ou grDesti- nationWMF pour enregistrer directement le gra- phe dans des fichiers respectivement au format BMP, EMF ou WMF. 4. Dessinez le graphe avec la fonction grDessine. De nombreuses fonctions permettent de param- trer et de modifier l'apparence du graphe. Il est ainsi possible d'afficher une lgende, le titre des axes, etc. 4.3.3 Graphes et threads Un seul graphe peut tre manipul dans un thread. Consquences : Deux threads ne peuvent pas manipuler le mme graphe. Un graphe cr dans un thread est automatique- ment dtruit la fin de ce thread. Le graphe existe dans le thread qui contient l'appel la fonction grCre. 4.3.4 Valeurs par dfaut d'un graphe Les valeurs par dfaut d'un graphe sont les suivantes : Menu contextuel WinDev activ (paramtrable avec les fonctions grMenu et grOptionMenu). Graduation automatique des axes (paramtrable avec la fonction grGraduation). Les couleurs sont slectionnes selon un ordre pr-dfini parmi un ventail de 13 couleurs (para- mtrable avec la fonction grCouleurSrie). Les couleurs sont dgrades (paramtrable avec la fonction grDgrad). Taille fichier WinDev (paramtrable avec la fonc- tion grFenTaille). Taille fentre WinDev (paramtrable avec la fonc- tion grFenTaille). Taille image WebDev (paramtrable avec la fonc- tion grTailleImage). Pas d'tiquette pour les sries (paramtrable avec la fonction grEtiquetteSrie). Pas de libell pour les lments (paramtrable avec les fonctions grEtiquetteCatgorie et grLi- bell). Pas de lgende (paramtrable avec la fonction grLgende). Pas de titre pour le graphe (paramtrable avec la fonction grTitre). Pas de titre pour les axes (paramtrable avec la fonction grTitreAxe). Pas de quadrillage de fond (paramtrable avec la fonction grQuadrillage). Pas de donnes (ajout d'lments avec la fonc- tion grAjouteDonne). Pas de destination (paramtrable avec les fonc- tions grDestinationChamp, grDestinationFen et grDestinationWMF). Pas d'affichage du graphe (pour dessiner le gra- phe, utilisez la fonction grDessine). WLangage.book Page 163 Mardi, 23. avril 2013 1:59 13 164 Partie 4 : Fonctions standard Pas de relief (paramtrable avec la fonction grRe- lief). Pour les graphes en secteurs, l'angle de dpart est gal 0 (paramtrable avec la fonction grSecteurAngleDpart). Pour les histogrammes et les graphes boursiers de type Minimum/Maximum, l'espace entre deux catgories est gal 10 pixels (paramtrable avec la fonction grHistoEspacement). Pour les nuages de points, les points sont relis et de taille gale 1 (paramtrable avec les fonc- tions grNuageReliePoint et grNuageTaillePoint). 4.4 Exemples livrs avec WinDev WinDev est livr en standard avec plusieurs exem- ples de gestion des graphes : WD Graphe boursier : cet exemple permet de dessiner les diffrents types de graphes (boursier ou non boursier). WD Lissage de courbes : cet exemple permet de lisser un graphe de type courbe. 4.5 Fonctions de gestion des graphes Les fonctions de gestion des graphes sont les suivantes : grAjouteDonne Ajoute une donne dans un graphe grBourseAjouteDonne Ajoute une donne dans un graphe boursier grBulle Affiche et met en forme la bulle d'aide associe un graphe grChargeParamtre Restaure les paramtres de dessin d'un graphe. grCouleur Renvoie et initialise la couleur de diffrents lments du graphe. grCouleurSrie Initialise la couleur d'une srie ou d'une part de secteur grCre Cr un graphe d'un type spcifi grCrePolice Cre une police pour les graphes grDgrad Affiche les couleurs en mode dgrad ou non grDessine Dessine un graphe selon l'ensemble des paramtres fournis grDestinationBMP Dfinit un fichier au format BMP comme destination du graphe grDestinationChamp Dfinit un champ image comme destination d'un graphe grDestinationEMF Dfinit un fichier au format EMF comme destination du graphe grDestinationFen Dfinit une fentre comme destination d'un graphe grDestinationWMF Dfinit un mta fichier comme destination d'un graphe grDonutPourcentageTrou Modifie le pourcentage correspondant au rayon du trou d'un graphe de type beignet (ou donut). grEffaceDessin Efface le dessin d'un graphe grEpaisseurTrait Change la valeur de lpaisseur du trait dans un graphe de type courbe grEtiquetteCatgorie Initialise l'tiquette d'une catgorie de donnes (ou d'un secteur) d'un graphe grEtiquetteSrie Initialise l'tiquette d'une srie de donnes d'un graphe grExiste Teste l'existence d'un graphe en mmoire grFenTaille Dfinit la taille de la fentre contenant le graphe grGraduation Indique la frquence des graduations sur l'axe vertical/horizontal d'un graphe grHistoEspacement Indique l'espacement entre chaque catgorie de donnes dans un histo- gramme grImprime Imprime un graphe grIncrmenteDonne Ajoute une valeur une donne dans un graphe grInfoPoint Renvoie les coordonnes l'cran d'un point ou d'une valeur prsent dans un graphe. grInfoXY Renvoie des informations sur la srie prsente en un point du graphe grLgende Indique la prsence et la position de la lgende dans un graphe WLangage.book Page 164 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 165 grLibell Indique divers paramtres de lgende complmentaire dans un graphe grLissage Lisse un graphe par la mthode des splines cubiques grMAJAutomatiqueEtiquet- teCatgorie Identifie ou dfinit si les tiquettes de catgorie est mise jour chaque des- sin du graphe grMAJAutomatiqueSrie Lit et dfinit si une srie est mise jour chaque dessin du graphe grMasque Dfinit un masque daffichage des valeurs de la lgende complmentaire grMenu Active ou dsactive le menu contextuel d'un graphe grNuageAjouteDon- nesXY Ajoute une donne dans un graphe de type "Nuage de points" grNuageCouleurSrie Initialise la couleur d'une srie pour un graphe de type "Nuage de points" grNuageEtiquetteSrie Initialise l'tiquette d'une srie de donnes dans un graphe de type "Nuage de points" grNuageReliePoint Relie ou non les points dans un graphe de type "Nuage de points" grNuageTaillePoint Dfinit la taille des points dans un graphe de type "Nuage de points" grOptionMenu Modifie le texte d'une option du menu contextuel d'un graphe grOrientation Modifie l'orientation des axes d'un graphe grOrigine Modifie la graduation de dbut et de fin sur l'axe horizontal ou vertical d'un graphe grParamtre3DS Rcupre ou modifie un paramtre de dessin d'un graphe en mode 3D Spa- tiale grParamtre Rcupre ou modifie un paramtre d'un graphe. grPoliceEtiquette Modifie la police utilise pour les tiquettes d'un graphe grPoliceLgende Modifie la police utilise pour la lgende d'un graphe grPoliceTitre Modifie la police utilise pour le titre d'un graphe grPoliceTitreAxe Modifie la police utilise pour les titres des axes d'un graphe grQuadrillage Affiche ou rend invisible le quadrillage d'un graphe grRelief Indique la profondeur du relief pour les graphes en 3D grSauveBMP Sauvegarde un graphe pralablement dessin au format BMP grSauveEMF Sauvegarde un graphe pralablement dessin au format vectoriel EMF grSauveParamtre Sauve les paramtres d'un graphe sous forme d'une chane compress grSauveWMF Sauvegarde un graphe pralablement dessin au format vectoriel EMF grSecteurAngleDpart Indique l'angle de dpart de la premire part dans un graphe en secteurs grSecteurPartExcentre Excentre une part dans un graphe en secteurs grSrieAxeSecondaire Dtermine si une srie sera dessine sur laxe secondaire grSourceEtiquetteCatgorie Dfinit la source des tiquettes de catgorie grSourceSrie Dfinit la source d'une srie grSuperposeGraphe Permet d'afficher deux graphes de type diffrent dans le mme graphe grSupprimeSrie Supprime une srie de donnes d'un graphe grSupprimeTout Efface un graphe dessin et dtruit ce graphe grTailleImage Modifie la taille de limage contenant le graphe grTitre Modifie le libell et/ou la position du titre d'un graphe grTitreAxe Dfinit le titre de l'un des axes d'un graphe grType Modifie ou renvoie le type d'un graphe Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 165 Mardi, 23. avril 2013 1:59 13 166 Partie 4 : Fonctions standard 5. MANIPULER LES ZONES MMOIRE Les fonctions permettant de grer les zones mmoire sont les suivantes : MemAjoute Ajoute un lment dans une zone mmoire MemCre Cre une zone mmoire MemDernier Positionne sur le dernier lment d'une zone mmoire et renvoie la valeur de retour de cet lment MemEnCours Renvoie l'indice de l'lment en cours MemEnDehors Permet de savoir si le parcours effectu sur la zone de mmoire est en dehors de la zone de mmoire MemExiste Teste l'existence d'une zone de mmoire MemModifie Modifie un lment dans une zone mmoire MemOccurrence Renvoie le nombre d'lments prsents dans une zone de mmoire MemPositionne Positionne la zone mmoire sur un lment MemPrcdent Positionne sur l'lment prcdent d'une zone mmoire et renvoie la valeur de retour de cet lment MemPremier Positionne sur le premier lment d'une zone mmoire et renvoie la valeur de retour de cet lment MemRecherche Recherche un lment dans une zone mmoire MemRcupre Rcupre la valeur de retour d'un lment dans une zone mmoire MemSuivant Positionne sur l'lment suivant d'une zone mmoire et renvoie la valeur de retour de cet lment MemSupprime Supprime un lment dans une zone mmoire MemSupprime- Tout Vide et supprime une zone mmoire MemTrie Trie les lments prsents dans une zone mmoire MemTrouv Vrifie si l'lment recherch a t trouv MemValCl Renvoie la valeur ajoute ou modifie (par les fonctions MemAjoute ou MemModifie) de l'lment en cours dans une zone mmoire Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WD WebDev WLangage.book Page 166 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 167 6. MANIPULER DES FICHIERS EXTERNES 6.1 Prsentation De nombreuses fonctions WLangage vous permet- tent de grer des fichiers externes. Un fichier externe est un fichier accs direct, appel galement "fichier texte" par abus de lan- gage. Les fichiers externes peuvent tre de tout type (".TXT", ".INI", etc.). Les fichiers externes peu- vent contenir : des caractres lisibles (sous forme de chane de caractres), des caractres non lisibles (sous forme binaire). Attention : Il ne faut pas confondre fichiers exter- nes et fichiers HyperFileSQL. Les fichiers HyperFi- leSQL sont des fichiers de donnes au format WinDev/WebDev et doivent tre manipuls avec les fonctions HyperFileSQL. Trois groupes de fonctions permettent de manipuler : le contenu de vos fichiers externes, les fichiers prsents sur vos disques (copie de fichier par exemple), les rpertoires de vos disques (cration d'un rpertoire par exemple). 6.2 Manipulation du contenu des fichiers externes Il est possible de : crer, ouvrir et fermer vos fichiers externes, grer le blocage de vos fichiers externes, lire le contenu de vos fichiers externes : lecture d'une ligne ou d'un bloc d'octets (caractres), crire dans vos fichiers externes : criture d'une ligne, d'une chane de caractres ou d'une por- tion de mmoire, se dplacer dans vos fichiers externes. Exemple Votre programme gre un fichier de type ".INI" de taille suprieure 64 Ko. La taille de ce fichier ".INI" est trop importante pour manipuler ce fichier avec les fonctions INI. Utilisez les fonctions des fichiers externes pour manipuler ce fichier. Pour rcuprer le contenu de ce fichier : lisez le contenu du fichier et affectez ces informations lues dans une portion de mmoire. Pour modifier le contenu de ce fichier : ajoutez diverses informations dans ce fichier une position donne. Ce fichier ncessite d'tre partiellement bloqu pour une mise jour : bloquez ce fichier. Ce fichier sera uniquement accessible par l'application ou le site qui bloque le fichier. 6.3 Manipulation de fichiers Il est possible de : compresser et crypter des fichiers, connatre les caractristiques des fichiers, modifier et obtenir le nom et le chemin des fichiers, comparer le contenu de plusieurs fichiers, lister les fichiers d'un rpertoire en lanant une procdure effectuant un traitement pour chaque fichier. Exemple Votre programme gre des fichiers de taille impor- tante contenant des informations confidentielles. Cryptez et compressez ces fichiers avant de les transfrer sur votre rseau. Effectuez une recherche sur vos fichiers et excu- tez une procdure spcifique sur les fichiers trou- vs. WLangage.book Page 167 Mardi, 23. avril 2013 1:59 13 168 Partie 4 : Fonctions standard 6.4 Manipulation de disques et de leurs rpertoires Il est possible de : obtenir des informations sur les rpertoires et sur les disques accessibles, manipuler des rpertoires. 6.5 Fonctions de gestion des fichiers externes Les fonctions de gestion des fichiers externes sont les suivantes : ComplteRep Ajoute, si ncessaire, le caractre "\" la fin d'une chane de caractres. Cette fonction est utile pour la construction de noms de fichiers complets en cas d'incer- titude sur le format du chemin (par exemple si l'utilisateur saisit un chemin de fichier) DcompleteRep Enlve le caractre "/"' ou "\"' la fin d'une chane si ce caractre est prsent. Cette fonction est utile pour la construction de noms de fichiers complets en cas d'incertitude sur le format du chemin (par exemple si l'utilisateur saisit un chemin de fichier) fAttribut Identifie ou modifie les attributs d'un fichier fAttributLectureSeule Identifie ou modifie l'attribut "Lecture seule" d'un fichier fBloque Bloque entirement ou partiellement un fichier externe fChangeTaille Change la taille d'un fichier fChargeBuffer Charge le contenu d'un fichier texte dans une variable de type buffer fChargeTexte Charge le contenu d'un fichier texte dans tout champ ou variable texte (variable de type chane, champ de saisie d'une fentre ou dune page, un champ libell d'un tat, ...) fCheminCourt Renvoie le chemin complet court d'un fichier ou d'un rpertoire fCheminLong Renvoie le chemin complet long d'un fichier ou d'un rpertoire fCompacte Compresse un fichier fCompare Compare bit bit le contenu de deux fichiers fCopieFichier Copie un fichier fCopieFichieRpertoi- reWeb Copie un fichier image depuis le rpertoire des donnes de l'application (ou un de ses sous-rpertoires) vers le rpertoire "_WEB" de l'application (ou un de ses sous- rpertoires). fCre Cre un nouveau fichier externe fCreLien Cre un lien sur un fichier l'emplacement spcifi. fCrypte Crypte un fichier sous forme binaire ou sous forme ASCII fDate Renvoie ou modifie les diffrentes dates d'un fichier (date de cration, de modifica- tion ou d'accs) fDateHeure Renvoie ou modifie les diffrentes dates et heures d'un fichier ou d'un rpertoire (date de cration, de modification ou d'accs). fDbloque Dbloque entirement ou partiellement un fichier externe fDcompacte Dcompresse un fichier fDcrypte Dcrypte un fichier pralablement crypt par fCrypte fDplaceFichier Dplace un fichier. Il est possible de le renommer fDtecteStockageAmo- vible Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil photo USB, ) a t ajoute ou enleve fDisqueEnCours Renvoie ou modifie le disque en cours fDisqueInfo Renvoie des informations sur un disque fDisquePrt Permet de savoir soit si le lecteur de disquette est disponible, soit si le disque existe WLangage.book Page 168 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 169 fEcrit crit une chane de caractres ou une portion de mmoire dans un fichier externe fEcritLigne crit une ligne dans un fichier externe fEstUneImage Permet de savoir si un fichier prsent sur disque ou un fichier contenu dans un buf- fer correspond un format d'image reconnu fExtraitChemin Renvoie les diffrents lments d'un chemin : disque, rpertoire(s), nom et exten- sion du fichier fExtraitRessource Extrait une ressource de l'application dans un emplacement physique de l'appareil fFerme Ferme un fichier externe fFichierExiste Vrifie l'existence d'un fichier externe fFichierTemp Renvoie le nom d'un fichier temporaire unique fFiltreImage Renvoie la liste des formats d'images grs par WinDev, au format attendu par le filtre de fSlecteur fHeure Renvoie ou modifie les diffrentes heures d'un fichier : heure de cration, de modi- fication ou d'accs fListeDisque Renvoie la liste des disques installs sur la machine. fListeFichier Liste les fichiers d'un rpertoire (et les fichiers des sous-rpertoires du rpertoire) et retourne le nombre de fichiers lists fListeRpertoire Liste les rpertoires d'un rpertoire (et de ses sous-rpertoires) et retourne le nom- bre de rpertoires lists fLit Lit le contenu d'un fichier externe pour l'affecter ou non dans une portion de mmoire fLitLigne Lit une ligne dans un fichier externe fLitLigneExpression- Rgulire Lit une ligne dun fichier externe et rcupre dans des variables les morceaux de cette ligne en fonction dune expression rgulire. fNomCourt Renvoie le nom court dun fichier ou dun rpertoire fNomFichier Renvoie le nom d'un fichier externe actuellement ouvert. fNomLong Renvoie le nom long dun fichier ou dun rpertoire fOuvre Ouvre un fichier externe fOuvreFichierTemp Cre et ouvre un fichier temporaire. Le systme fournit un nom de fichier tempo- raire unique fPositionne Renvoie et modifie la position en cours dans un fichier externe fRenomme Modifie le nom d'un fichier fRep Recherche un fichier ou un rpertoire fRepAttribut Renvoie les attributs d'un rpertoire fRepCopie Copie un rpertoire et son contenu fRepCre Cre un rpertoire fRepDplace Dplace un rpertoire et son contenu fRepDonnes Renvoie le chemin complet du rpertoire des fichiers de donnes HyperFileSQL fRepDonnesCommun Renvoie un chemin de rpertoire pour les donnes partages de l'application cou- rante. Ces donnes sont partages entre tous les utilisateurs du poste. fRepDonnesUtilisateur Renvoie un chemin de rpertoire pour les donnes de l'application courante. Ces donnes sont spcifiques l'utilisateur en cours pour l'application en cours. fRepDroit Identifie les droits d'accs de l'utilisateur sur un rpertoire spcifi fRepEnCours Identifie ou modifie le rpertoire en cours fRepertoireExiste Teste l'existence d'un rpertoire fRpertoireTemp Renvoie le nom du rpertoire o le systme stocke les fichiers temporaires fRepEtatsEtRequtes Renvoie le chemin complet du rpertoire des tats et requtes personnels ou par- tags fRepExe Renvoie le chemin complet du rpertoire dexcution du projet WLangage.book Page 169 Mardi, 23. avril 2013 1:59 13 170 Partie 4 : Fonctions standard fRepGlobalCommun Renvoie un chemin de rpertoire pour les donnes globales de l'application cou- rante (donnes partages par plusieurs applications) quel que soit l'utilisateur en cours. fRepGlobalUtilisateur Renvoie un chemin de rpertoire pour les donnes globales de l'application cou- rante (donnes partages par plusieurs applications), pour l'utilisateur en cours. fRepParent Renvoie le chemin du rpertoire parent du rpertoire spcifi. fRepressource Renvoie le chemin des ressources en lecture seule de l'application. fRepSlecteur Ouvre un slecteur de rpertoires fRepSupprime Supprimer un rpertoire sur un disque fRepTaille Renvoie la taille en octets d'un rpertoire. fRepWeb Renvoie le chemin complet du rpertoire des objets Web (image, flash, ...) fSauveBuffer Cre et remplit un fichier texte avec le contenu dune variable de type chane ou buffer fSauveTexte Cre et remplit un fichier texte avec le contenu d'un champ texte ou d'une variable texte (variable de type chane, champ de saisie d'une fentre, champ libell d'un tat, ...) fSlecteur Ouvre le slecteur de fichiers de Windows fSlecteurImage Ouvre le slecteur d'images de Windows FSep Renvoie le sparateur de rpertoire selon la plate-forme en cours ('\' ou '/') fSparateur Renvoie un chemin de fichier avec des sparateurs normaliss. fStopCompacte Arrte l'opration de compression ou de dcompression d'un fichier. Le fichier com- pact ou dcompact n'est pas cr fSupprime Supprime un fichier accessible depuis le poste en cours fSupprimeFichierR- pertoireWeb Supprime un fichier image du rpertoire "_WEB" de l'application (ou de un de ses sous-rpertoires). fTaille Renvoie la taille d'un fichier en octets fTailleDcompact Renvoie la taille d'un fichier avant compression RpertoireWeb Renvoie le chemin du rpertoire contenant les images, les fichiers Javascript, les fichiers applet Java, les autres fichiers accessibles depuis le navigateur Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 170 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 171 7. ZONES DE MEMOIRES PARTAGEES 7.1 Prsentation WinDev, WebDev et WinDev Mobile proposent de manipuler les zones de mmoires partages. Les zones de mmoires partages sont un mca- nisme de communication entre plusieurs applica- tions sur un poste donn. Elles permettent par exemple d'changer simplement des donnes entre un service et l'application de paramtrage. Les fonctions de gestion des zones de mmoire partages utilisent les API standard des diffrents systmes d'exploitation (Windows ou Linux) et facili- tent l'interoprabilit entre les applications Win- Dev/WebDev/WinDev Mobile et des applications dveloppes dans d'autres langages. 7.2 Comment le faire ? 7.2.1 Crer une zone de mmoire partage Les zones de mmoire partages sont cres et ouvertes par la fonction fMemOuvre. La premire application accdant la zone provo- quera sa cration, les applications suivantes feront une simple ouverture. L'application qui cre la zone dtermine sa taille en fournissant une taille minimale. Le systme d'exploitation crera une zone d'une taille multiple de la taille des pages mmoire (4 Ko sous Windows 32 bits par exemple). La taille relle de la zone mmoire peut tre connue grce la fonction fTaille. 7.2.2 Savoir si une zone de mmoire parta- ge existe dj Dans certains cas, il est ncessaire de savoir si une zone de mmoire partage existe dj. Par exemple, une application permettant de para- mtrer un service peut s'assurer que le service est bien lanc de la faon suivante : il suffit de vrifier que le service a cr une zone de mmoire parta- ge particulire. Si la zone n'existe pas, l'applica- tion peut afficher un message d'erreur. La fonction fMemExiste permet de savoir si une zone de mmoire partage a dj t cre par une autre application. 7.2.3 Manipuler le contenu d'une zone de mmoire partage par programmation Pour manipuler le contenu d'une zone de mmoire partage, il est possible : soit d'utiliser directement les fonctions de lecture et d'criture dans les fichiers externes. Cette solution est conseille pour les cas simples (transmission d'une chane par exemple). soit d'utiliser la srialisation automatique du WLangage (fonctions Srialise et Dsrialise), puis d'utiliser les fonctions de lecture et d'cri- ture des fichiers externes pour transmettre les lments. Cette solution est conseille pour la transmission par exemple de classes dont les membres correspondent aux lments trans- mettre // Ouverture zone mmoire partage IdZone est un entier IdZone = fMemOuvre("MaZone"+ ... "Partage",50,partageGlobal) SI IdZone>0 ALORS TailleZone est un entier TailleZone = fTaille(IdZone) Info(ChaneConstruit(... "La zone de mmoire %1 " +... "a t ouverte."+ ... "Elle a une taille de %2"+... " octets.",IdZone,TailleZone)) FIN ... // Fermeture de la zone de mmoire // partage fFerme(IdZone) // Vrification de l'existence de la // zone de mmoire partage SI fMemExiste("MaZonePartage",... partageGlobal)=Faux ALORS Erreur("Vrifiez que le "+... "service XXX a bien t dmarr.") RETOUR FIN WLangage.book Page 171 Mardi, 23. avril 2013 1:59 13 172 Partie 4 : Fonctions standard 7.2.4 Fonctions WLangage Les fonctions de gestion des fichiers externes utili- sables avec les zones de mmoire partages sont les suivantes : 7.3 Dialogue entre plusieurs applications Deux applications peuvent partager des donnes en utilisant une zone de mmoire partage. Deux mcanismes de synchronisation sont possibles : la notification automatique (en utilisant les fonc- tions de callback) la synchronisation manuelle au moyen de sma- phore 7.3.1 Notification automatique des modifi- cations La notification automatique des modifications peut tre mise en place ds l'ouverture d'une zone de mmoire partage. Il suffit chaque application accdant la zone de mmoire de donner le nom d'une procdure WLan- gage en dernier paramtre de la fonction fMemOu- vre. Cette procdure sera appele automatiquement chaque modification du con- tenu de la zone de mmoire partage. Pour attendre que les autres applications aient fini de traiter la notification (avant d'effectuer une nou- velle modification de la zone mmoire par exem- ple), il faut utiliser la fonction fMemAttend. . 7.3.2 Synchronisation manuelle La synchronisation peut tre ralise de faon manuelle selon le principe suivant : Les applications ouvrent la zone de mmoire par- tage et le smaphore de dialogue. La premire application "prend" le smaphore (fonction SmaphoreDbut). La premire application crit ses donnes dans la zone de mmoire. fEcrit crit une chane de caractres dans un fichier externe et dans une portion de mmoire. fEcritligne crit une ligne dans un fichier texte (au format ANSI ou UNICODE). fLit Lit : un bloc d'octets (bloc de caractres) dans un fichier externe (ANSI ou UNICODE), le contenu d'un fichier externe (ANSI ou UNICODE) pour l'affecter dans une portion de mmoire. fLitLigne Lit une ligne dans un fichier externe (au format ANSI ou UNICODE). fPositionne Renvoie et modifie la position en cours dans un fichier externe. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. // Ouverture zone mmoire // dans l'application 1 IdZone est un entier IdZone = fMemOuvre... ("ZonePartage",200,... partageGlobal,"ModifMemoire") -- Procdure utilise pour callback (application 1) PROCEDURE ModifMemoire... (NomZoneModif est une chane,... IdZoneModif est un entier) Info(ChaneConstruit(... "La zone %1 a t"+ ... "modifie.",NomZoneModif)) // Ouverture de la zone mmoire // dans l'application 2 IdZone est un entier IdZone = fMemOuvre(... "ZonePartage",200,... partageGlobal,"ModifMemoire") // Ecriture dans la zone fEcrit(IdZone,"Bonjour,"... "je suis l'application 2.") // Attente de la validation // du "Info" de la procdure ... // "ModifMemoire" dans ... // l'application 1 fMemAttend(IdZone) // Deuxime criture dans la zone fEcrit(IdZone, ... "Nouvelle information.") WLangage.book Page 172 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 173 La premire application libre le smaphore (fonction SmaphoreFin). La seconde application "prend" son tour le smaphore. La seconde application lit les donnes crites par la premire application. La seconde application libre le smaphore. Remarque : Si les deux applications veulent s'changer des donnes, il faut utiliser deux sma- phores pour assurer la rgulation. Conseil : La synchronisation manuelle sera utilise de prfrence lorsque : l'une des deux applications n'est pas crite en WLangage. le mcanisme de notification des modifications n'est pas disponible. 7.4 Nommage des zones de mmoire partages Les zones de mmoires partages sont identifies par leur nom. 7.4.1 Gestion du mode de partage Selon les versions des systmes d'exploitation, le mode de partage diffre : Linux, Windows 2000 et antrieur : il n'y a qu'un seul espace de cration de zone mmoire. Le paramtre <Partage> de la fonction fMemOuvre est ignor. Windows XP : le paramtre <Partage> de la fonc- tion fMemOuvre est effectif si le service de chan- gement rapide d'utilisateur est actif, sinon il est ignor. Windows Vista et postrieur : le paramtre <Par- tage> de la fonction fMemOuvre est gr. Les ser- vices sont dans un espace diffrent des utilisateurs. Pour partager une zone mmoire entre un service et une application dans la ses- sion d'un utilisateur, il faut utiliser la constante partageGlobal. En Terminal Serveur : le paramtre <Partage> de la fonction fMemOuvre est gr. Chaque session ouverte sur le Terminal Serveur a un espace de mmoire diffrent. Des applications lances dans la mme session TSE peuvent partager une zone de mmoire cre avec la constante parta- geUtilisateur. Des applications situes dans des sessions diffrentes peuvent partager une zone de mmoire partage cre avec la constante- partageGlobal. 7.4.2 Correspondance entre le nom fourni fMemOuvre et l'ouverture en C Les deux exemples de code suivant montrent l'ouverture de la mme zone mmoire (nomme "mazone" en WLangage et en C). . 7.5 Fonctions de gestion des zones mmoires partages Les fonctions permettant de grer les zones mmoires sont les suivantes : // Code en WLangage // IdZone est un entier IdZone = fMemOuvre("mazone",1024... partageGlobal); // Code C quivalent char * szNomZone = "mazone"; int nTaille; int nMem; key_t nKey; int nAccess = 0666; // Ouverture en lecture/criture nTaille = 1024; nKey = ftok(szNomZone+sizeof(char),... (int) szNomZone[0]); nMem = shmget(nKey, nTaille ,... nAccess); fMemAttend Attend la fin du traitement des notifications de modification d'une zone de mmoire parta- ge fMemExiste Teste l'existence d'une zone de mmoire partage fMemOuvre Ouvre une zone de mmoire partage entre plusieurs applications Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 173 Mardi, 23. avril 2013 1:59 13 174 Partie 4 : Fonctions standard 8. IMPRIMER EN WLANGAGE 8.1 Prsentation Plusieurs moyens sont votre disposition pour imprimer : L'diteur d'tats, qui permet de crer des "Etats pr-dfinis". Les fonctions d'impression du WLangage. L'diteur d'tats L'diteur d'tats permet de crer des tats impri- ms (sous forme d'tat ou d'tiquette) contenant des informations provenant de fichiers de donnes. Les fonctions d'impression du WLangage Pour des dveloppements trs spcifiques, l'di- teur d'tats ne permet pas de crer les tats sou- haits. Dans ce cas, il faut utiliser les fonctions d'impression du WLangage. De plus, pour des impressions trs simples (de tex- tes ou d'images), il n'est pas ncessaire de passer par l'diteur d'tats. Remarques : Les fonctions d'impression ne sont pas disponi- bles en langage externe. Ce chapitre dcrit uniquement le principe des impressions en WLangage. 8.2 Principe de l'impression en WLangage Les tapes pour imprimer en WLangage sont : Etape 1 (optionnelle) : Configuration des para- mtres d'impression. Etape 2 (optionnelle) : Cration de la police ou des polices d'impression. Etape 3 : Impression des caractres, des lignes ou des images et fin d'impression. Etape 4 : Lancement de limpression (fonction iFinImprime). Conseil : Pour acclrer vos impressions, limitez les options graphiques (traits d'encadrement, trame, etc.) qui ralentissent normment les impressions et qui sont gourmandes en mmoire imprimante. 8.2.1 Etape 1 : Configuration des paramtres d'impression Cette tape permet de choisir selon le cas : Les paramtres d'impression du document (qua- lit d'impression, nombre de copies, etc.). Les paramtres de configuration de l'imprimante (driver imprimante, orientation, format papier, etc.). Cette tape est facultative et doit tre effectue uniquement si les paramtres par dfaut (param- tres dfinis dans le panneau de configuration de Windows) ne conviennent pas pour l'impression lancer. Les diffrentes manipulations possibles Les manipulations possibles sont les suivantes : 1. Slection des paramtres d'impression du document (fonction iParamtre). Il est possible : soit d'ouvrir la fentre standard de paramtrage de l'impression (WinDev et WinDev Mobile), soit de configurer un un les paramtres de l'impression (par exemple, l'orientation et le for- mat du papier, la hauteur et la largeur de la page, le nombre de copies, etc.). 2. Choix de l'imprimante utilise pour l'impression (fonction iConfigure). Il est possible : soit d'ouvrir la fentre standard de slection de l'imprimante (WinDev et WinDev Mobile), soit de modifier directement l'imprimante utilise pour l'impression en cours. Cette modification peut tre temporaire (uniquement pour le pro- gramme en cours) ou dfinitive (modification de l'imprimante par dfaut dans le panneau de con- figuration de Windows). 3. Re-dfinition des marges d'impression (fonction iMarge). Il est possible de modifier les marges basse, haute, gauche et droite. Si cette fonction n'est pas appele, les marges par dfaut (diffren- tes selon l'imprimante) seront utilises. WB Important : L'utilisation des fonctions d'impression du WLangage ncessite une configuration particulire de votre ser- veur. Pour plus de dtails, consultez laide en ligne. WLangage.book Page 174 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 175 Attention : L'ordre des manipulations prsentes ci-dessus doit tre respect. Si une impression est en cours, les fonctions iParamtre et iConfigure provoquent la fermeture de l'impression en cours. Fonctions permettant de configurer la destination de l'impression Les fonctions suivantes permettent de configurer la destination de l'impression et de connatre la confi- guration en cours : iAperu / iDestination : Paramtre la destination de limpression. iConfigure : Configure limprimante. iInfoImprimante : Rcupre les caractristiques de limprimante en cours ou de limprimante par dfaut. iListeImprimante : Renvoie la liste des impriman- tes installes sur le poste en cours. iParamtre : Paramtre limpression. La configuration et le paramtrage raliss par les fonctions iConfigure et iParamtre r-initialisent le module d'impression. En consquence, ces fonc- tions doivent tre les premires fonctions d'impres- sion appeles. Toutes les fonctions d'impression appeles avant ces deux fonctions ne seront pas prises en compte. 8.2.2 Etape 2 : Cration des polices d'impression Cette tape permet de dfinir et de choisir les diff- rentes polices qui seront utilises dans le docu- ment imprim. Il est possible de choisir et de dfinir : des polices spcifiques l'impression : ces poli- ces ne pourront tre utilises que lors de l'impression avec les fonctions du WLangage. des polices dynamiques, pouvant tre aussi bien utilises l'cran (dans des fentres, des des- sins, etc.) que dans des impressions ralises en WLangage. Cette tape est facultative. Si aucune police n'est dfinie pour l'impression, la police par dfaut est utilise. Cette police a pour caractristiques : Fonte : Don't care Police numro 0 Taille : 12 points pica Style normal Couleur : noir Police d'impression Les polices d'impression sont cres avec la fonc- tion iCrePolice. Cette fonction permet de choisir : la fonte (nom et famille), la taille (des caractres), les attributs (gras, italique, soulign, etc.), la couleur. Les diffrents paramtres de la police sont dfinis l'aide de plusieurs constantes. Chaque police est associe un numro. Pour choisir la police d'impression, il suffit d'utiliser la fonction iPolice. Police dynamique Une variable de type "Police" vous permet de crer une police dynamique qui pourra tre utilise dans tous les objets du projet : fentres, pages, tats, impression, graphes, dessins, etc. Pour dfinir une police dynamique : 1. Crez une variable de type Police. 2. Dfinissez les caractristiques de la police : soit en utilisant la fonction PoliceCre, soit grce aux proprits de police : ..Angle, ..Barr, ..Condens, ..Couleur, ..Etendu, ..Gras, ..Italique, ..Large, ..Nom, ..Soulign et ..Taille. Pour choisir une police d'impression, il suffit d'utili- ser la fonction iPolice. Police dimprimante Les constructeurs d'imprimante installent des poli- ces sur les imprimantes. Ces polices sont appeles police "imprimante". Au contraire des polices logicielles (telles que "True Type"), ces polices sont directement accessibles par l'imprimante, elles n'ont pas besoin d'tre tl- charges. Dans les listes des polices, les polices imprimantes sont identifies par une icne "imprimante" pr- sente devant le nom de la police. Attention : l'utilisation de polices d'imprimante peut entraner des effets d'affichage en aperu avant impression. Si vous utilisez des polices d'imprimante, ces poli- ces ne sont interprtes que par l'imprimante. Lors de l'aperu avant impression, l'affichage des poli- ces est gr par Windows. Ne sachant pas grer ces polices spcifiques, Windows utilise la police cran la plus proche. WLangage.book Page 175 Mardi, 23. avril 2013 1:59 13 176 Partie 4 : Fonctions standard 8.2.3 Etape 3 : Impression Cette tape consiste "envoyer l'impression" les diffrents lments imprimer : texte, images, des- sins, etc. L'impression sur le support voulu (configur avec la fonction iAperu ou iDestination) ne sera effective qu' la fin de l'impression (fonction iFinImprime). Impression de texte Voici les principales fonctions du WLangage per- mettant d'imprimer des textes : iHauteurTexte : Calcule la hauteur de la police du texte imprimer en millimtres. iHauteurZone : Calcule la hauteur ncessaire dune zone de largeur fixe pour que lensemble dun texte puisse tre imprim dans cette zone. iImprime : Envoie au "buffer" dimpression la chane de caractres passe en paramtre. iImprimeCodeBarre : Imprime un code-barres lintrieur dun rectangle. iImprimeMot : Envoie au "buffer" dimpression la chane de caractres passe en paramtre. iImprimeZone : Imprime un texte dans une zone rectangulaire. iImprimeZoneRTF : Imprime un texte au format RTF dans une zone rectangulaire. iLargeurTexte : Calcule la largeur du texte impri- mer en millimtres, en fonction de la police spci- fie. iLien : Imprime un lien vers une URL lors de limpression dune page HTML. iPolice : Slectionne la police par dfaut. iPoliceDidot : Slectionne lunit utiliser pour la hauteur des polices (cres avec la fonction iCrePolice) : point DIDOT ou point PICA. iPosX : Permet de grer la position horizontale (abscisse) du curseur dimpression dans la page. iPosY : Permet de grer la position verticale (ordonne) du curseur dimpression dans la page. Remarques : Les textes peuvent tre dans des polices diffrentes : la police est slectionne par la fonction iPolice. Les textes peuvent tre crits des positions spcifiques : fonctions iPosX et iPosY. Impression d'images Plusieurs fonctions du WLangage permettent d'imprimer des images en tenant compte de leur taille. iHauteurImage : Calcule la hauteur de limage imprimer (en millimtres). iImprimeCodeBarre : Imprime un code-barres lintrieur dun rectangle. iImprimeImage : Envoie au "buffer" dimpression le fichier image imprimer. iLargeurImage : Calcule la largeur de limage imprimer (en millimtres). iMagentaTransparent : Modifie la gestion de la couleur Magenta afin que cette couleur soit con- sidre comme transparente ou non lors des pro- chaines impressions. iPosX : Permet de grer la position horizontale (abscisse) du curseur dimpression dans la page. iPosY : Permet de grer la position verticale (ordonne) du curseur dimpression dans la page. Impression de dessin Le WLangage permet d'imprimer simplement diff- rentes formes grce aux fonctions suivantes : iCadre : Imprime un cadre aux coordonnes sp- cifies. iEllipse : Imprime une ellipse lintrieur dun rectangle. iImprimeCodeBarre : Imprime un code-barres lintrieur dun rectangle. iLigne : Imprime une ligne (au standard Windows, avec le bout arrondi) aux coordonnes spcifies. iMagentaTransparent : Modifie la gestion de la couleur Magenta afin que cette couleur soit con- sidre comme transparente ou non lors des pro- chaines impressions. iMMVersPica : Convertit les coordonnes dun point (exprimes en millimtres) en coordonnes systme. iPosX : Permet de grer la position horizontale (abscisse) du curseur dimpression dans la page. iPosY : Permet de grer la position verticale (ordonne) du curseur dimpression dans la page. iTrait : Imprime un trait aux coordonnes spci- fies. iTraitH : Imprime un trait horizontal aux coordon- nes spcifies. iTraitV : Imprime un trait vertical aux coordon- nes spcifies. WLangage.book Page 176 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 177 Autres fonctions Le WLangage propose diverses fonctions permet- tant d'optimiser les impressions ralises en WLan- gage. Il est ainsi possible de grer par exemple : le saut de page, l'abandon de l'impression par l'utilisateur, la taille de la page. iFentreAbandon : Paramtre laffichage de la fentre permettant labandon de limpression en cours (WinDev uniquement). iFinImprime : Signale la fin du document impri- mer et lance limpression effective des donnes actuellement stockes dans la file dattente de limprimante. iHauteurPage : Calcule la hauteur de la page imprimable en tenant compte des marges dfi- nies. iHauteurRestantePage : Calcule la hauteur dis- ponible restant sur la page en cours en tenant compte des marges (hautes ou basses) dfinies. iImpressionAbandonne : Permet de savoir si lutilisateur a demand labandon de limpres- sion du document en cours (WinDev unique- ment). iImpressionDemande : Permet de savoir si luti- lisateur a demand limpression du document depuis laperu avant impression (WinDev uni- quement). iLargeurPage : Calcule la largeur de la page imprimable en tenant compte des marges dfi- nies. iNumPage : Renvoie ou initialise le numro de la page en cours dimpression. iRAZ : R-initialise les paramtres dimpression mmoriss dans la librairie dimpression. iSauteLigne : Force un saut de ligne. iSautePage : Gnre un saut de page. iStatusImpressionEtat : Renvoie ltat de limpression en cours. 8.3 Fonctions dimpression Les fonctions dimpression sont les suivantes : iAjoutesignet Ajoute un signet dans laperu avant impression ou lors de l'export en PDF. iAperu Paramtre la destination de l'impression iCadre Imprime un cadre aux coordonnes spcifies iCadreArrondi Imprime un cadre avec des bords arrondis aux coordonnes spcifies IChangeSousEtatSource Modifie par programmation l'tat associ un sous-tat dans un tat composite iConfigure Configure l'imprimante iConfigureEtat Configure l'imprimante en ouvrant directement la fentre de configuration iCrePolice Cre une nouvelle police d'impression iDernierFichier Renvoie le nom complet du dernier fichier gnr lors de l'impression (PDF, RTF, XML, ...) iDestination Paramtre la destination de l'impression iEllipse Imprime une ellipse l'intrieur d'un rectangle iEnchanementAjoute Ajoute un tat dans un enchanement d'impressions d'tats. iEnchanementImprime Dclenche l'impression d'un enchanement d'tats. iEscape Envoie une commande ESCAPE une imprimante iFentreAbandon Paramtre l'affichage de la fentre permettant l'abandon de l'impression en cours iFermeEtat Arrte immdiatement l'impression de l'tat en cours iFinEtat Force l'arrt de l'impression d'un tat ralis avec l'diteur d'tats iFinImprime Signale la fin du document imprimer et lance l'impression effective des donnes actuellement stockes dans la file d'attente de l'imprimante iForceComplment Force l'impression d'un bloc de complment de corps iHautBasPageImbri- qu Imprime ou non les hauts et bas de page de l'tat imbriqu iHauteurImage Calcule la hauteur de l'image imprimer (en millimtres) WLangage.book Page 177 Mardi, 23. avril 2013 1:59 13 178 Partie 4 : Fonctions standard iHauteurPage Calcule la hauteur de la page imprimable (en millimtres) en tenant compte des marges (hautes ou bases) dfinies iHauteurRestantePage Calcule la hauteur disponible (en millimtres) restant sur la page en cours en tenant compte des marges (hautes ou bases) dfinies iHauteurTexte Calcule la hauteur de la police du texte imprimer en millimtres iHauteurZone Calcule la hauteur ncessaire d'une zone de largeur fixe pour que l'ensemble d'un texte puisse tre imprim dans cette zone iImpressionAbandon- ne Permet de savoir si l'utilisateur a demand l'abandon de l'impression du docu- ment en cours iImpressionDeman- de Permet de savoir si l'utilisateur a demand l'impression du document depuis l'aperu avant impression iImprime Envoie au "buffer" d'impression la chane de caractres passe en paramtre iImprimeBloc Force l'impression d'un bloc de l'tat en cours d'impression iImprimeCodeBarre Imprime un code-barres l'intrieur d'un rectangle iImprimeComplment- Corps Force l'impression d'un bloc de complment de corps en spcifiant la hauteur du bloc de complment iImprimeDuplicata Imprime un duplicata. iImprimeEtat Imprime un tat ralis avec l'diteur d'tats iImprimeImage Envoie au buffer d'impression le fichier image imprimer iImprimeMot Envoie au "buffer" d'impression la chane de caractres passe en paramtre iImprimeZone Imprime un texte dans une zone rectangulaire iImprimeZoneRTF Imprime un texte au format RTF dans une zone rectangulaire iInfoImprimante Rcupre les caractristiques de l'imprimante en cours ou de l'imprimante par dfaut iInitRequteEtat Initialise la requte lie l'tat (cas d'une requte paramtre) iInitRequteEtatCon- nexion Initialise la requte lie l'tat (cas d'une requte base sur une connexion spci- fique) iInitSousEtat Initialise les paramtres d'un sous-tat d'un tat composite iParamtreFiligrane Ajoute un texte en filigrane dans un tat (tat cr sous l'diteur d'tats ou tat imprim). iLargeurImage Calcule la largeur de l'image imprimer (en millimtres) iLargeurPage Calcule la largeur de la page imprimable (en millimtres) en tenant compte des marges (gauches ou droites) dfinies iLargeurTexte Calcule la largeur du texte imprimer en millimtres, en fonction de la police sp- cifie iLien Imprime un lien vers une URL lors de l'impression d'une page HTML iLigne Imprime une ligne (au standard Windows, avec le bout arrondi) aux coordonnes spcifies iListeEtatsImbriqus Renvoie la liste des tats imbriqus en cours d'impression iListeImprimante Renvoie la liste des imprimantes installes sur le poste en cours iMagentaTransparent Modifie la gestion de la couleur Magenta, afin que cette couleur soit considre comme transparente ou non dans toutes les prochaines impressions iMarge Dfinit les marges "logiques" d'impression iMMVersPica Convertit les coordonnes d'un point (exprimes en millimtres) en coordonnes systme INumColonne Renvoie le numro de la colonne courante dans les tats multi-colonnes. iNumPage Renvoie ou initialise le numro de la page en cours d'impression iParamtre Paramtre l'impression iParamtreAperu Paramtre l'affichage ou non de chaque bouton prsent dans l'aperu avant impression WLangage.book Page 178 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 179 8.4 Fonctions PDF WinDev permet dimprimer des fichiers PDF grce aux fonctions dimpression. Ces fichiers PDF peu- vent tre manipuls par programmation grce aux fonctions PDF : iParamtreDuplicata Paramtre la cration automatique du duplicata gnr lors de la prochaine impression. iParamtreEtat Configure l'imprimante en ouvrant directement la fentre de configuration iParamtreExport Paramtre les options d'exportations depuis l'aperu avant impression (notam- ment l'envoi d'emails). iParamtrePDF Fixe les options de protection du fichier PDF gnr iParamtreXLS Fixe les options du fichier XLS gnr lors de l'impression. Il est possible de pren- dre en compte la mise en forme actuelle (couleur et police) ou non. iPicaVersMM Convertit les coordonnes d'un point (exprimes en coordonnes systme) en mil- limtres iPolice Slectionne la police par dfaut iPoliceDidot Slectionne l'unit utiliser pour la hauteur des polices (cres avec la fonction iCrePolice) : point DIDOT ou point PICA iPosX Permet de grer la position horizontale (abscisse ou colonne) du curseur d'impres- sion dans la page iPosY Permet de grer la position verticale (ordonne ou ligne) du curseur d'impression dans la page iRAZ Rinitialise les paramtres d'impression mmoriss de la librairie d'impression iRepImageHTML Permet de slectionner le rpertoire des images gnres lors d'une l'impression au format HTML iSauteLigne Force un saut de ligne. iSautePage Gnre un saut de page iSelectPolice Cre une nouvelle police d'impression depuis la fentre standard de slection de polices de Windows iStatusImpressionEtat Renvoie l'tat d'impression en cours iSubstBloc Substitue un bloc de l'tat par un autre, au cours de l'impression de l'tat iTermineColonne Force un saut de colonne dans un tat multicolonne iTerminePage Force le passage la page suivante en cours d'impression d'un tat iTrait Imprime un trait aux coordonnes spcifies iTraitH Imprime un trait horizontal aux coordonnes spcifies iTraitV Imprime un trait vertical aux coordonnes spcifies Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. PDFEstProtg Vrifie si le fichier PDF ncessite un mot de passe pour tre lu. PDFFusionne Fusionne plusieurs fichiers PDF existant en un seul fichier PDF PDFFusionneAvecMotde- Passe Fusionne plusieurs fichiers PDF existants et protgs par un mot de passe d'ouverture en un seul fichier PDF PDFNombreDePages Renvoie le nombre total de pages d'un fichier PDF. PDFVersTexte Extrait le texte contenu dans un fichier PDF. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 179 Mardi, 23. avril 2013 1:59 13 180 Partie 4 : Fonctions standard 9. GRER WINDOWS 9.1 Prsentation De nombreuses fonctions WLangage permettent dintgrer la gestion de Windows. Il est ainsi possible de grer : la base de registres grce aux fonctions registres, le presse-papiers de Windows, la corbeille de Windows, la souris, les ports srie et parallle, les priphriques Twain, les priphriques USB, le systme, les services, Windows, les vnements Windows, des applications Java, les excutables, le dialogue DDE, les agents, le rseau, le protocole SNMP, le projet, le planificateur. 9.2 Fonctions de gestion de la base de registres Les fonctions permettant de grer la base de registres sont les suivantes : 9.3 Fonctions de gestion du presse-papiers Les fonctions permettant de grer le presse-papiers sont les suivantes : RegistreCherche Cherche une chane de caractres dans la base de registres RegistreClSuivante Identifie la cl suivant la cl spcifie dans la base de registres de Windows RegistreCopiecl Copie une cl de registre avec toutes ses sous-cls et ses valeurs RegistreCreCl Cre une cl dans la base de registres de Windows RegistreEcrit crit une valeur dans un registre de la base de registres de Windows RegistreExiste Teste l'existence d'une cl de la base de registres de Windows RegistreListeCl Liste les sous-cls d'une cl de la base de registres. RegistreListeValeur Renvoie le nom et le type des valeurs d'une cl de la base de registres. RegistreLit Lit la valeur d'un registre dans la base de registres de Windows RegistrePremireSous- Cl Identifie le chemin de la premire sous-cl de la cl spcifie dans la base de registres de Windows RegistreRenomme Renomme une cl de la base de registres. RegistreSupprimeCl Supprime une cl dans la base de registres de Windows RegistreSupprimeValeur Supprime une valeur dans la base de registres de Windows RegistreTypeValeur Renvoie le type d'une valeur prsente dans la base de registres. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. PressePapier Rcupre le texte ou l'image contenu dans le presse-papiers de Windows PressePapierFormat Identifie le format des informations contenues dans le presse-papiers PressePapierHauteur Calcule la hauteur de l'image (au format Bitmap) contenue dans le presse-papiers PressePapierLargeur Calcule la largeur de l'image (au format Bitmap) contenue dans le presse-papiers WD WDMobile WLangage.book Page 180 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 181 9.4 Fonctions de gestion de la corbeille Les fonctions permettant de grer la corbeille sont les suivantes : 9.5 Fonctions de gestion de la souris Les fonctions permettant de grer la souris sont les suivantes : 9.6 Fonctions de vrification de l'orthographe Les fonctions permettant de grer la correction orthographique sont les suivantes : PressePapierRTF Rcupre une chane RTF dans le presse-papiers. PressePapierUnicode Retourne le texte contenu dans le presse-papiers au format UNICODE. TableVersPressePapier Copie dans le presse-papiers le contenu d'une table. TwainVersPressePapier Permet soit de copier le document provenant du priphrique Twain dans le presse-papiers, soit de visualiser le document provenant du priphrique Twain. VersPressePapier crit des informations de type texte dans le presse-papiers de Windows VersPressePapierRTF crit une chane de caractres au format RTF dans le presse-papiers. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. CorbeilleListeFichier Liste les fichiers prsents dans la corbeille CorbeilleRestaure Restaure un fichier prsent dans la corbeille CorbeilleSupprime Supprime un fichier prsent dans la corbeille CorbeilleVide Vide la corbeille. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. ChampSurvol Identifie le champ survol par le curseur de la souris. CurseurAffiche Affiche ou masque le curseur de la souris CurseurCapture Dirige tous les vnements associs la souris vers une fentre spcifique ou un champ CurseurPos Renvoie et modifie la position du curseur de souris Sablier Transforme le curseur souris en sablier et inversement SourisPosX Renvoie la position horizontale (X) du curseur de souris par rapport au champ SourisPosY Renvoie la position verticale (Y) du curseur de souris par rapport au champ Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. OrthoAjouteDic- tionnaire Ajoute un mot au dictionnaire orthographique de OpenOffice pour l'instance de l'applica- tion en cours. OrthoDisponible Indique si un dictionnaire OpenOffice est disponible pour la vrification orthographique. OrthoSuggre Renvoie la liste des mots possibles prsents dans le dictionnaire de OpenOffice.. OrthoVrifie Indique si un mot est correctement orthographi. WD WD WDMobile WLangage.book Page 181 Mardi, 23. avril 2013 1:59 13 182 Partie 4 : Fonctions standard 9.7 Fonctions Reconnaissance vocale Les fonctions permettant de grer la reconnaissance vocale sont les suivantes : 9.8 Fonctions de gestion des ports srie et parallle Les fonctions permettant de grer les ports srie et les ports parallle sont les suivantes : 9.9 Fonctions de gestion des priphriques Twain Les fonctions permettant de grer les priphriques Twain sont les suivantes : Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. ReconnaissanceVocaleAjou- teCommande Ajoute une commande vocale dans la fentre en cours. ReconnaissanceVocaleDclenche Dclenche le service de reconnaissance vocale de lappareil. ReconnaissanceVocaleSuppri- meCommande Supprime une commande vocale ajoute par AjouteCommandeVo- cale Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. sCalculeCrc16 Contrle une chane de caractres avant et aprs transmission entre applications Win- Dev sCalculeCrc32 Contrle une chane de caractres avant et aprs transmission entre application WinDev sDansFileEntre Rcupre le nombre d'octets en attente dans le buffer d'entre du port srie spcifi sDansFileSortie Rcupre le nombre d'octets en attente de transfert dans le buffer de sortie du port srie ou du port parallle spcifi sEchap Lance diverses fonctions agissant directement sur les bits du port srie et du port paral- lle, indpendamment du protocole de communication sEcrit crit une chane de caractres dans le buffer de sortie du port srie ou du port parallle spcifi sEvenement Branche un vnement sur un port srie. sFerme Ferme le port srie ou le port parallle spcifi sFinEvnement Dbranche la dtection d'un vnement sur un port srie. sFixeParamtre Fixe ou modifie les paramtres de configuration du port srie ou du port parallle spci- fi sLit Lit une chane de caractres dans le buffer d'entre du port srie spcifi sOuvre Ouvre et initialise le port srie (ou le port parallle) spcifi Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. TwainEtat Renvoie l'tat de la source en cours. TwainHauteurSource Renvoie la hauteur de la zone scanner. TwainLargeurSource Renvoie la largeur de la zone scanner. WD WDMobile WD WDMobile WD WLangage.book Page 182 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 183 9.10 Fonctions USB Les fonctions permettant de grer les priphriques USB sont les suivantes : 9.11 Fonctions MCI Les fonctions permettant de grer le MCI (Media Control Interface) sont les suivantes : TwainListeSource Liste les drivers des priphriques Twain connects au poste en cours. TwainSelectSource Affiche la liste des priphriques Twain disponibles sur le poste en cours et per- met de choisir le priphrique Twain utilis par dfaut. TwainSourceEnCours Permet de connatre et de changer le priphrique Twain utilis par dfaut. TwainVersBMP Permet : soit d'enregistrer directement le document provenant du priphrique Twain dans un fichier Bitmap (extension ".BMP"). soit de visualiser le document provenant du priphrique Twain dans linterface uti- lisateur du priphrique. TwainVersChamp Permet : soit de visualiser le document provenant du priphrique Twain dans un champ de type image. soit de visualiser le document provenant du priphrique Twain dans linterface uti- lisateur du priphrique. TwainVersGIF Permet : soit d'enregistrer directement le document provenant du priphrique Twain dans un fichier GIF. soit de visualiser le document provenant du priphrique Twain dans linterface uti- lisateur du priphrique. TwainVersJPEG Permet : soit d'enregistrer directement le document provenant du priphrique Twain dans un fichier JPEG. soit de visualiser le document provenant du priphrique Twain dans linterface uti- lisateur du priphrique. TwainVersPressePa- pier Permet : soit de copier le document provenant du priphrique Twain dans le presse-papiers. soit de visualiser le document provenant du priphrique Twain dans linterface uti- lisateur du priphrique. TwainZoneScan Permet de dfinir ou de r-initialiser la zone scanner. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. USBDeconnecte Dconnecte ou jecte un priphrique USB USBDtecteStocka- geAmovible Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil photo USB, ) a t ajoute ou enleve USBListePriphrique Liste les priphriques USB actuellement branchs sur le poste en cours USBProprit Rcupre la valeur d'une proprit d'un priphrique USB USBRecherche Recherche un priphrique USB d'aprs certains mots-cls Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. MCIArrt Arrte lexcution dun fichier multimdia WD WD WLangage.book Page 183 Mardi, 23. avril 2013 1:59 13 184 Partie 4 : Fonctions standard 9.12 Fonctions Service Les fonctions de gestion des services Windows sont les suivantes : MCIDbut Permet de se positionner au dbut dun fichier multimdia MCIErr Renvoie le numro de la dernire erreur survenue sur une fonction MCI MCIEtat Permet dobtenir ltat dun fichier multimdia MCIExcute Excute une commande MCI MCIFerme Ferme un fichier multimdia MCIFin Permet de se positionner la fin dun fichier multimdia MCIFormatPosition Fixe le format de la position dun fichier multimdia MCIHauteur Retourne la hauteur dun fichier multimdia (en pixels) MCIJoue Joue un fichier multimdia MCILargeur Retourne la largeur dun fichier multimdia (en pixels) MCIMsgErr Renvoie le libell de la dernire erreur survenue sur une fonction MCI MCINombrePiste Renvoie le nombre de pistes du fichier multimdia MCIOuvre Ouvre un fichier multimdia MCIPause Permet de faire une pause dans lexcution dun fichier multimdia MCIPiste Renvoie le numro de la piste en cours MCIPosition Permet de connatre ou de modifier la position dun fichier multimdia MCIRcupre Renvoie le dernier rsultat retourn par la fonction MciExcute MCITaille Permet dobtenir la taille dun fichier multimdia (exprime dans lunit dfinie par MciFormatPosition) MCITailleFentre Modifie la taille et la position de la fentre daffichage dun fichier multimdia MCIVolume Modifie ou identifie le volume sonore pour les fichiers de type "MID" ou "WAV" Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. FinService Termine l'excution du service en cours. ServiceActualise Demande un service de relire ses informations de configuration. ServiceArrte Arrte un service. ServiceAttendEtat Attend qu'un service soit dans un tat spcifique. ServiceContrle Envoie un message de contrle un service. ServiceDmarre Dmarre un service. ServiceDsinstalle Dsinstalle un service. ServiceEcritEvnemen- tJournal Ecrit un vnement dans le journal des vnements Windows. ServiceEtat Renvoie l'tat actuel d'un service ServiceExiste Teste si un service est install. ServiceInfo Renvoie les caractristiques d'un service ServiceInstalle Installe un service grce aux informations donnes dans les membres de la variable Service. ServiceListe Liste les services prsents sur le poste en cours ou sur le poste distant indiqu. ServiceModifie Modifie la configuration d'un service grce aux informations donnes dans les membres de la variable Service. ServicePause Met en pause un service. ServiceRedmarre Redmarre un service prcdemment arrt. ServiceRelance Relance un service en pause. WLangage.book Page 184 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 185 9.13 Fonctions systme Les fonctions systme sont les suivantes : ServiceTemporise Temporise le service en cours pour la dure indique. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. SysArrte Arrte le systme ou ferme la session Windows en cours SysChangeEnvironne- ment Modifie les variables d'environnement du systme d'exploitation du poste en cours SysChangeRsolutio- nEcran Modifie la rsolution d'un cran. SysCouleur Identifie ou modifie la couleur d'un lment Windows SysCouleurRes Renvoie la rsolution de l'cran en nombre de couleurs SysDocRcentAjoute Ajoute un fichier dans la liste des documents rcemment ouverts. Cette liste est gre par le shell de Windows. SysDocRcentListe Renvoie la liste des documents rcemment ouverts. SysDonneFocus Donne le focus une fentre ou un champ SysEnvironnement Renvoie les variables d'environnement du systme d'exploitation SysEspace Renvoie l'espace mmoire total du poste en cours SysEtatCarteStoc- kage Renvoie l'tat de disponibilit de la carte de stockage de l'appareil. SysFenActive Renvoie le handle de la fentre active ou active une fentre SysFenAffiche Modifie l'tat d'affichage d'une fentre SysFenHandle Renvoie le numro de handle d'une fentre identifie par son titre SysFenTitre Renvoie le titre d'une fentre SysHandleValide Teste la validit d'un handle de fentre SysIconeAjoute Ajoute une icne dans la barre des tches SysIconeAjouteImage Ajoute une icne en surimpression de l'icne de l'application dans la barre des tches. Cette icne pourra tre supprime grce la fonction SysIconeSupprimeI- mage. SysIconeModifie Modifie le fichier icne et/ou le message de survol d'une icne dans la barre des tches SysIconeSupprime Supprime une icne dans la barre des tches SysIconeSupprimeI- mage Supprime l'icne en surimpression de l'icne de l'application dans la barre des tches. SysIconis Permet de savoir si une fentre est iconise SysIMEI Renvoie le numro IMEI d'un Smartphone SysInstance Renvoie l'instance d'une application SysLibreDC Libre le DC (Device Context) en cours rcupr par la fonction SysRcupreDC SysListeCarteGraphi- que Renvoie le nom des cartes graphiques connectes au poste en cours. SysListeEcran Renvoie la liste des crans connects sur une ou plusieurs cartes graphiques. SysListeOrientationE- cran Permet de connatre les orientations possibles de l'cran d'un Pocket PC. SysListeRsolutionE- cran Renvoie la liste des rsolutions possibles pour un cran. SysMtrique Renvoie la rsolution d'un lment spcifique WLangage.book Page 185 Mardi, 23. avril 2013 1:59 13 186 Partie 4 : Fonctions standard 9.14 Fonctions diverses Windows Les fonctions Windows sont les suivantes : SysMiniatureAjoute- Bouton Ajoute un bouton sur la miniature de l'application dans la barre de tches. SysMiniatureModifie- Bouton Modifie un des boutons prsents sur la miniature de l'application dans la barre des tches. SysMiniatureSuppri- meBouton Supprime un des boutons prsents sur la miniature de l'application dans la barre des tches. SysMiniatureSuppri- meTout Supprime tous les boutons associs la miniature de l'application dans la barre des tches. SysMiseEnVeille Permet de connatre et de modifier la dure d'inactivit avant la mise en veille du Pocket PC en cours. Cette fonction permet galement d'activer et de dsactiver la mise en veille du Pocket PC SysModeErreur Modifie le mode d'affichage des erreurs SysNombreEcran Renvoie le nombre d'crans actuellement connects au poste en cours SysNomEcranPrinci- pal Renvoie le nom de l'cran principal SysNomExe Renvoie le nom et le chemin complet d'une application SysNumSrie Renvoie le numro de srie du Pocket PC en cours SysOrientationEcran Permet de connatre ou de modifier l'orientation de l'cran du Pocket PC SysRectangleEcran Renvoie les coordonnes du rectangle daffichage correspondant tous les crans SysRcupreDC Rcupre le DC (Device Context) d'une fentre, d'un champ ou de l'cran SysRep Renvoie le chemin d'un rpertoire du systme SysRepCarteStoc- kage Renvoie la liste des cartes de stockages prsentes dans le Pocket PC en cours SysRsolutionEcran Renvoie les caractristiques de la rsolution de l'cran SysThme Renvoie le thme visuel affich actuellement sur le mobile en Windows Phone 7 SysVersion Renvoie des renseignements sur la version de PHP utilise sur le poste serveur en cours SysVersionAndroid Retourne des informations sur la version dAndroid utilise par lapplication. SysVersionWindows Renvoie des informations sur la version de Windows utilise sur le poste en cours SysXRes Renvoie la rsolution horizontale de l'cran SysYRes Renvoie la rsolution verticale de l'cran Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. AppelInterface Excute une mthode d'une interface d'un objet implment dans une DLL externe au framework WinDev. Cet objet peut tre un objet C++ ou un objet COM. API / AppelDLL32 Excute une fonction prsente dans une DLL externe 32 bits APIParamtre Modifie les options d'appel de la fonction API et de la fonction AppelDLL32 ChargeDLL Charge en mmoire la librairie 32 bits (DLL) spcifie COMAppelleM- thode Excute une mthode d'une interface d'un objet COM instanc grce la fonction COMCreInstance. COMCreInstance Instancie un objet COM (Component Object Model). COMRcupreInter- face Appelle la mthode QueryInterface de l'objet COM spcifi pour obtenir une interface spcifique de cet objet afin de l'utiliser avec la fonction COMAppelleMthode. ComposantCharge Charge en mmoire le composant spcifi WLangage.book Page 186 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 187 9.15 Evnement Windows Les fonctions permettant de grer les vnements Windows sont les suivantes : ConstruitEntier Construit un entier partir de 2 entiers sur 2 octets CreRaccourci Cre un raccourci sur le bureau de Windows, dans le menu "Dmarrer" de Windows ou dans un rpertoire spcifique DchargeDLL Dcharge la librairie 32 bits (DLL) qui a t prcdemment charge en mmoire avec la fonction ChargeDLL EnvoieTouche Simule des manipulations de touches au clavier InstalleIcone Cre une icne (associe un programme) dans un groupe de programme de Windows, avec la ligne de commande associe Instance Renvoie le "Handle systme" (HINSTANCE) du programme en cours Ping Teste si une adresse est accessible (quivalent de lutilitaire rseau PING) PoidsFaible Renvoie les deux octets de poids faible d'un entier PoidsFort Renvoie les deux octets de poids fort d'un entier sCalculeCrc16 Contrle une chane de caractres avant et aprs transmission entre applications Win- Dev / entre sites WebDev sCalculeCrc32 Calcule le code de redondance cyclique (CRC) d'un tampon. SortieStandard crit une information dans le flux de sortie standard "stdout" (galement appel "con- sole") SupprimeRac- courci Supprime un raccourci prcdemment cr avec CreRaccourci ToucheEnfonce Vrifie quelle est la touche enfonce Transfert Copie un bloc d'octets ou une chane de taille fixe d'une adresse mmoire dans une autre VersionWindows Renvoie le mode d'excution du programme dans l'environnement en cours Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. Evnement Intercepte un vnement Windows sur un champ, un groupe de champs ou une fentre WinDev FinEvnement Annule l'interception d'un vnement Windows sur un champ ou une fentre WinDev mis en place grce la fonction Evnement FinTimer Termine l'excution d'un timer dclench par la fonction Timer FinTimerSys Termine l'excution d'un timer dclench par la fonction TimerSys Handle Renvoie le "Handle" systme (HWND) d'un champ ou d'une fentre WinDev HandleParensui- vant Force le parent de la prochaine fentre ouvrir. Cette fonction permet une fentre Win- Dev d'tre fille d'une autre application ou d'tre fille d'une fentre non WinDev. Multitache Permet deffectuer une temporisation, de rendre la main Windows ou de rendre la main Windows et au WLangage PostMessage Envoie un message Windows un champ ou une fentre SendMessage Envoie un message Windows un champ ou une fentre Temporistaion Stoppe temporairement l'excution d'un programme Timer Appelle priodiquement et automatiquement une procdure du WLangage. Utilise dans la procdure, la fonction Timer permet d'identifier le timer qui a lanc la procdure. TimerSys Appelle priodiquement et automatiquement une procdure du WLangage. Utilise dans la procdure, la fonction TimerSys permet d'identifier le timer qui a lanc la procdure. WLangage.book Page 187 Mardi, 23. avril 2013 1:59 13 188 Partie 4 : Fonctions standard 9.16 Fonctions Java Les fonctions permettant de grer des applications Java sont les suivantes : 9.17 Fonctions diverses WinDev / WebDev Les fonctions diverses sont les suivantes : Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. JavaCharge Indique l'emplacement des classes ncessaires l'excution de l'application ou de l'applet Java JavaExcute Lance une application ou une applet Java en appelant la mthode "Main" d'une classe Java donne JavaExcuteFonction Excute une fonction statique spcifique d'une classe java Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WebDev WD AnalyseurDbut Lance la "collecte d'informations" pour l'analyseur de performances AnalyseurFin Arrte la "collecte d'informations" pour l'analyseur de performances AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisateurs en cours ASPAffiche Appelle un script ASP externe et renvoie la page rsultat dans la fentre en cours du navigateur ASPExcute Appelle un script externe .asp et renvoie le rsultat dans une chane AutomationEvnement Branche une procdure sur un vnement d'un objet automation AutomationParamtre Paramtre la gestion des accs aux objets ActiveX et aux objets Automation Bip met un bip sonore CertificatClientinfo Renvoie des informations sur le certificat utilis par le poste client. ChaneAffiche Affiche une chane de caractres (ou un buffer) dans le navigateur ChangeGabarit Change dynamiquement le gabarit associ une fentre (fentre spcifique, fen- tres des composants WinDev, ...) ChargeProcdure La fonction ChargeProcdure est conserve uniquement pour compatibilit. ChargeWDL Charge en mmoire une bibliothque d'objets (.WDL) Compile Compile dynamiquement une procdure ComposantCharge Charge en mmoire le composant spcifi ComposantChargeTout Charge en mmoire de manire rcursive tous les composants utiliss dans le pro- jet. ComposantInfo Renvoie des informations sur un composant ConnexionOccur- rence Renvoie le nombre d'instances du site WebDev en cours d'excution sur le serveur ConstruitVariantAuto- mation Construit un paramtre de type variant Automation CookieEcrit Ecrit un cookie sur le poste de l'internaute CookieLit Rcupre la valeur d'un cookie enregistr sur le poste de l'internaute DchargeWDL Dcharge la bibliothque prcdemment charge en mmoire avec la fonction ChargeWDL WLangage.book Page 188 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 189 DsactiveFAA Dsactive une fonctionnalit automatique de WinDev sur un champ ou une fentre diffApplique Applique un buffer de diffrences sur un buffer spcifique diffCre Compare deux buffers et cre un buffer contenant les diffrences entre ces deux buffers Dimension Calcule la taille d'une variable ou redimensionne un tableau dynamique DonneCouleur Permet dobtenir une suite de couleurs harmonieuses sans avoir utiliser une table de couleurs DonneGUID Calcule un identifiant globalement unique (nomm "GUID") DonneIdentifiant Calcule un identifiant unique de type entier pour un excutable donn DchargeProcdure La fonction DchargeProcdure est conserve uniquement pour compatibilit DchargeWDL Dcharge la bibliothque prcdemment charge en mmoire avec la fonction ChargeWDL Dsactive FAA Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ, sur une fentre ou sur l'application en cours EnMode64bits Identifie si le code est excut en mode 64 bits ou non. EnModeAJAX Identifie sir le code est excut depuis un traitement en mode AJAX ou depuis une procdure appele grce aux fonctions AJAXExcute ou AJAXExcuteAsynchrone EnModeAWP Identifie si le code est excut depuis une page AWP. EnModeComposant Identifie si le code est excut depuis une application WinDev ou depuis un compo- sant EnModeEmulateu- rAndroid Identifie si le code est excut dans l'mulateur Android ou non EnModeEmulateu- riOS Identifie si le code est excut dans lmulateur iOS (iPhone, iPad) ou non. EnModeEmula- teurWindowsPhone Identifie si le test est excut grce l'mulateur Windows Phone ou non EnModeEtatsEtRequ- tes Identifie si le code est excut lors du test d'un tat ou d'une requte sous le logiciel Etats et Requtes EnModeFabrique Identifie si le code est excut par un plan d'actions de la fabrique logicielle EnModeiOS Identifie si le code en cours d'excution est en mode iOS (iPhone, iPad) ou non. EnModeJava Identifie si le code est excut en Java ou non EnModeLinux Identifie si le code est excut en mode Linux ou non EnModeMCU Identifie si le code est excut depuis un macro-code utilisateur. EnModePHP Identifie si le code est excut en PHP ou non EnModePocket Identifie si le code est excut depuis une application WinDev Mobile ou depuis une application WinDev standard EnModeProcdureStoc- ke Identifie si le code est excut sur un serveur HyperFileSQL EnModeService Identifie si le code est excut dans un service EnModeSimulateur Permet de savoir si l'application est lance en "mode test simulateur" de WinDev Mobile. EnModeSimulateurAn- droid Identifie si le code est excut dans le simulateur Android ou non EnModeSimulateuriOS Identifie si le code est excut dans le simulateur iOS (iPhone, iPad) ou non. EnModeSimulateurPHP Identifie si le code est excut en mode simulateur PHP ou non EnModeSimulateurPoc- ket Identifie si le code est excut dans le simulateur Pocket ou non EnModeSimulateurWin- dowsPhone Identifie si le code est excut dans le simulateur Windows Phone ou non EnModeTest Identifie le mode de lancement de l'application ou du site WLangage.book Page 189 Mardi, 23. avril 2013 1:59 13 190 Partie 4 : Fonctions standard EnModeTestAutomati- que Permet de savoir si un test automatique est en cours ou non EnModeTSE Identifie si le code est excut depuis un poste en TSE ou depuis un bureau distant. EnModeVGA Indique si lapplication sexcute sur un mobile en mode VGA EnModeWeb Identifie le mode de lancement du code en cours EnModeWebservice Permet de savoir si l'excution est en cours dans le moteur AWWS. EnModeWindows Identifie si le code est excut en mode Windows ou non EnModeWindowsMo- bile Identifie si le code est excut depuis une application Windows Mobile. EnModeWindows- Phone Identifie si le code est excut en mode Windows Phone ou non. ErreurInfo Rcupre des informations sur la dernire erreur d'une fonction d'une composante EstNumrique Permet de savoir si une variable ou un champ est de type numrique ou de type chane pouvant tre converti en numrique EvalueExpression Evalue la valeur d'une expression construite dans une chane de caractres. Excute Lance l'excution d'un traitement par programmation ExcuteActionPrdfi- nie Excute une action prdfinie de WinDev ExcuteAnctre Dans le cas d'une surcharge de code, permet d'excuter le traitement du modle correspondant au traitement du champ en cours. ExcuteCode Excute un code WLangage prsent dans une chane de caractres. ExcuteFAA Excute une fonctionnalit automatique de l'application (FAA) sur un champ spcifi- que ExcuteTraitement Lance l'excution d'un traitement par programmation FacteurGrandePolice Renvoie le facteur d'agrandissement courant d'une fentre WinDev (uniquement si Windows est en mode grandes polices) FichierAide Renvoie ou modifie le nom du fichier d'aide utilis par l'aide contextuelle d'une fen- tre. FichierAffiche Renvoie un fichier spcifique sur le navigateur du client FinAutomatismeProc- dure Arrte l'excution (en cours ou venir) d'une procdure automatique (dfinie par les proprits de la procdure sous l'diteur de code FinProgramme Termine l'excution du programme en cours fRepDonnes Renvoie le chemin complet du rpertoire des fichiers de donnes HyperFileSQL fRepWeb Renvoie le nom physique complet du rpertoire contenant les images, les fichiers Javascript et Java du site WebDev Hasard Renvoie un nombre alatoire Hasp Interroge une cl lectronique HASP IniEcrit Ecrit une valeur spcifique dans un fichier INI IniLit Lit le contenu d'un fichier INI InitHasard Initialise le gnrateur de nombres alatoires JSEvnement Associe une procdure navigateur un vnement sur un objet en code navigateur JSFinEvnement Supprime l'association d'une fonction WLangage navigateur vnement (mis en place grce la fonction JSEvnement. JSInfoEvnement Permet de manipuler les proprits JavaScript de l'vnement navigateur qui a dclench l'excution du code JSInterruptionEvne- ment Interrompt le traitement de l'vnement en cours JSMthode Permet d'excuter une mthode Javascript sur un lment de la page en cours JSONExcute Appelle une URL serveur du mme domaine qui retourne des donnes au format JSON JSONExcuteExterne Appelle une URL serveur externe qui retourne des donnes au format JSON WLangage.book Page 190 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 191 JSProprit Permet de manipuler des fonctionnalits spcifiques sur des objets de la page en cours LanceEtatsEtRequtes Lance le logiciel Etats et Requtes LigneCommande Identifie et rcupre les diffrents lments de la ligne de commande passe en paramtre au programme en cours ModeExcution Renvoie ou modifie le comportement de l'application (du site) lorsque certaines erreurs sont gnres NumHelp Renvoie le numro de contexte d'aide associ au champ spcifi ParamtreFAA Permet de spcifier le comportement de certaines fonctionnalits automatiques de l'application (FAA). ParamtreOrthographe Paramtre le correcteur orthographique de OpenOffice pour les champs de saisie et les colonnes de table de toute l'application. Il est possible de spcifier dans quelle langue la correction orthographique doit tre effectue. PHPAffiche Appelle un script PHP externe et renvoie la page rsultat dans la fentre en cours du navigateur PHPExcute Appelle un script externe .php et renvoie le rsultat dans une chane RpertoireDonnes La fonction RpertoireDonnes est conserve uniquement pour compatibilit RpertoireWeb Renvoie le chemin du rpertoire contenant les images, les fichiers Javascript, ... sCalculeCRC16 Vrifie si une chane a t correctement transmise lors de transmissions compor- tant des risques de perte d'information ScriptAffiche Appelle un script externe (par exemple .php ou .asp) et renvoie la page rsultat dans la fentre en cours du navigateur ScriptExcute Appelle un script externe (par exemple .php ou .asp) et renvoie le rsultat dans une chane (une requte http est effectue, ce qui permet d'utiliser soit une mthode POST soit une mthode GET) SelectCouleur Ouvre la fentre standard de slection de couleur de Windows Son Joue un son au format WAV SSLActive Permet d'activer ou de dsactiver le mode scuris SSL. SourisPosX Renvoie la position horizontale du curseur de la souris SourisPosY Renvoie la position verticale du curseur de la souris StyleDessin Permet de modifier certains paramtres du mode d'affichage des fentres Trace Affiche des informations demandes (contenu d'un champ par exemple) dans une fentre ouverte en parallle de la fentre en cours TraceDbut Ouvre la fentre de Trace TraceFin Ferme la fentre de Trace si cette fentre a t ouverte TypeVar Identifie le type d'une expression, d'une variable (lors d'un appel de procdure par exemple) ou d'un champ TypeVariable Identifie le type d'une variable du WLangage UploadCopieFichier Enregistre sur le serveur un fichier "upload" par l'internaute (c'est--dire envoy par l'internaute au serveur via un champ de saisie de type "Upload") UploadNomFichier Renvoie le nom d'un fichier "upload" par l'internaute (cest--dire envoy par l'inter- naute au serveur via un champ de saisie de type "Upload") VariableRAZ Remet la variable sa valeur initiale VariantConvertit Convertit la valeur stocke dans une variable de type Variant VersionDmo Permet de savoir si l'excution courante de l'application est en mode "version d'va- luation" VersionWinDev Renvoie le numro de version de la DLL WD150WM de WinDev WHelp Afficher un fichier ou une page d'aide au format HLP ou CHM Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 191 Mardi, 23. avril 2013 1:59 13 192 Partie 4 : Fonctions standard 9.18 Fonctions de gestion des excutables Les fonctions suivantes permettent de manipuler et d'obtenir des renseignements sur les excutables acces- sibles ou lancs sur le poste en cours : 9.19 Fonctions Hasp Les cls lectroniques de la famille Hasp (Hasp3, Hasp4, NetHasp, MemoHasp et Hasp HL) permettent de protger les applications dveloppes avec WinDev ou WebDev. Les fonctions permettant de grer les fonctions Hasp sont les suivantes : AutoLanceAjoute Permet de lancer automatiquement une application WinDev Mobile lors d'un vne- ment prcis. Ce lancement est dfini partir d'une application WinDev Mobile. Permet galement de lancer automatiquement une application WinDev standard lors d'un vnement prcis. Ce lancement est dfini partir d'une application Win- Dev standard. AutoLanceSupprime Permet d'arrter le lancement automatiquement d'une application WinDev Mobile ou WinDev standard. Ce lancement automatique a t pralablement dfini avec la fonction AutoLanceAjoute. DonneIdentifiant Calcule un identifiant unique de type entier pour un excutable ou une session donn. ExeDonnePID Renvoie des informations sur le processus courant. ExeInfo Rcupre les informations spcifies sur la version dun excutable ou dune DLL ExeLanc Permet de savoir si une application est dj lance ExeListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par une application en cours d'excution ExeListeProcessus Retourne la liste des applications en cours d'excution. Pour chaque application trouve, il est possible de connatre son identifiant, l'identifiant du processus parent (celui qui a lanc l'application), le nom et l'extension de son excutable, le nom et le chemin complet de son excutable, sa consommation actuelle ainsi que sa consom- mation maximale atteinte. ExePriorit Renvoie ou modifie la priorit d'une application en cours d'excution ExeTermine Termine lexcution dune application 32 bits : toutes les instances de lexcutable sont "tues" LanceAppli Lance lexcution dun programme (excutable par exemple) depuis lapplication ou le site en cours LanceAppliAssocie Ouvre directement un document dans son application ou dans son site associ ListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par l'application WinDev, WinDev Mobile ou par le site WebDev en cours. Seules les librairies en mmoire sont listes. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. Hasp Interroge une cl lectronique HASP de type HASP-3, HASP-4, MemoHasp ou NetHasp. HaspHLConnecte Connecte l'application une cl Hasp. HaspHLCrypte Crypte une chane de caractres en utilisant les algorithmes de la cl Hasp spcifie. HaspHLDconnecte Ferme la connexion de l'application une cl Hasp. HaspHLDcrypte Dcrypte une chane de caractres en utilisant les algorithmes de la cl Hasp. WLangage.book Page 192 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 193 9.20 Fonctions de gestion du DDE Les fonctions permettant de grer le DDE (Dynamic Data Exchange) sont les suivantes : 9.21 Fonctions de gestion des applications avec "live update" Les fonctions permettant de grer les applications avec "Live update" sont les suivantes : HaspHLEcrit Ecrit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl Hasp. HaspHLInfo Rcupre des informations sur la cl lectronique Hasp. HaspHLLit Lit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl Hasp. Pour plus de dtails sur ces fonctions, consultez laide en ligne. DDEChane Retourne les informations rcupres par la fonction DDERcupre DDEConnecte Ouvre une connexion DDE entre le programme en cours et le destinataire selon un sujet donn DDEDconnecte Supprime une connexion entre le programme en cours et un destinataire DDEDestinataire Identifie le destinataire d'une connexion DDE DDEEnvoie Envoie une donne au programme connect via DDE DDEErreur Retourne le compte rendu d'excution d'une fonction de gestion du dialogue DDE DDEEvnement Associe une procdure WLangage un vnement DDE DDEExcute Envoie un ordre excuter DDEFinLien Interrompt un lien entre un item et une donne DDEItem Identifie l'item concern par un vnement DDE DDELance Lance l'excution d'un programme depuis l'application ou le site en cours DDELien Cre un lien chaud avec une donne DDELienTide Cre un lien tide avec une donne DDEModifie Modifie une donne lie DDERcupre Rcupre une donne envoye par un programme (le destinataire de la connexion pour l'objet spcifi) DDESujet Identifie le sujet de la conversation associe une connexion DDE Pour plus de dtails sur ces fonctions, consultez laide en ligne. AppliActiveVersion Active une des versions de l'application disponible dans l'historique des versions sur le serveur d'installation de rfrence. AppliChangeParam- tre Change une information du mcanisme de mise jour automatique de l'applica- tion spcifie. AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisa- teurs en cours. AppliDclencheMAJ Dclenche la mise jour automatique de l'application en cours. AppliInfoVersion Renvoie des informations sur une version disponible sur le serveur d'installation. AppliInstalleVersion Installe une version spcifique de l'application. AppliListeVersion Liste les versions disponibles sur le serveur d'installation de rfrence. Ces ver- sions sont disponibles dans l'historique de l'installation de rfrence. AppliMAJDisponible Permet de savoir si une mise jour est disponible pour l'application spcifie. AppliParamtre Renvoie des informations sur le mcanisme de mise jour automatique de l'appli- cation spcifie. WebDev WD WLangage.book Page 193 Mardi, 23. avril 2013 1:59 13 194 Partie 4 : Fonctions standard 9.22 Fonctions de gestion des rseaux Les fonctions permettant de grer les rseaux sont les suivantes : 9.23 Fonctions de gestion du protocole SNMP Les fonctions permettant de grer le protocole SNMP sont les suivantes : AppliSupprimeVer- sion Supprime une version de l'historique des versions prsent sur le serveur d'installa- tion de rfrence. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. RseauConnecte Associe un lecteur un rpertoire rseau partag RseauDconnecte Dconnecte un lecteur rseau RseauNomDomaine Renvoie le nom du domaine auquel est associ le poste en cours RseauNomRep Identifie le rpertoire associ un lecteur rseau RseauUtilisateur Identifie le nom de l'utilisateur connect Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. SNMPChaneVersOID Convertit un OID de sa reprsentation textuelle vers sa reprsentation numrique. SNMPChargeMIB Charge en mmoire et analyse un fichier MIB. SNMPEcrit crit une ou plusieurs valeurs sur un agent SNMP pour lequel une session SNMP a t ouverte. SNMPFermeSession Ferme une session SNMP. SNMPLit Lit une ou plusieurs valeurs d'un agent avec lequel une session SNMP a t ouverte. SNMPLitSuivant Lit la valeur suivant la dernire valeur rcupre d'un agent SNMP. SNMPLiTableau Lit un tableau de valeurs SNMP. SNMPOIDAccs Renvoie les modes d'accs autoriss d'un OID spcifique. SNMPOIDDescription Renvoie la description d'un OID. SNMPOIDEtat Renvoie l'tat d'un OID. SNMPOIDType Renvoie le type de donnes contenu dans un OID. SNMPOIDVersChane Convertit un OID de sa reprsentation numrique vers sa reprsentation textuelle. SNMPOuvreSession Ouvre une session SNMP. SNMPTrapActive Active l'interception d'une "trap" SNMP envoye par un agent. SNMPTrapDsactive Dsactive l'interception d'une trap SNMP. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 194 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 195 9.24 Fonctions de gestion des projets Ces fonctions permettent de manipuler facilement les lments dun projet : 9.25 Fonctions de gestion du planificateur Les fonctions permettant de grer le planificateur Windows sont les suivantes : ComposantCharge Charge en mmoire le composant spcifi. Ce composant sera charg en mmoire jusqu' ce que l'application se termine. ComposantInfo Renvoie des informations sur un composant. ComposantListe Retourne la liste des composants (fichier ".WDK") utiliss par l'application en cours ComposantLocalise Spcifie le chemin d'accs un composant du projet EnModeComposant Identifie si le code est excut soit : depuis une application WinDev, un site WebDev ou une page PHP, depuis un composant EnumreElment Permet d'numrer les lments du projet (fentres, pages, tats, requtes, ...) EnumreSousEl- ment Permet d'numrer les sous-lments d'un lment du projet (fentres, tats, requtes ...). Cette fonction peut tre excute mme si l'lment n'est pas ouvert ListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par l'application en cours ou installes sur le poste en cours NombreFentre Calcule le nombre de fentres de l'application en cours actuellement ouvertes ProjetInfo Renvoie une information spcifique sur le projet en cours d'excution (nom du projet, cl de la base de registres associe, ...) Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. PlanificateurAjouteHoraire Cre un horaire pour une tche planifie PlanificateurAjouteTche Cre une tche dans le planificateur de tches Windows PlanificateurEtatTche Rcupre ou modifie l'tat d'une tche cre dans le planificateur de tches Windows PlanificateurListeTche Rcupre la liste des tches planifies PlanificateurModifieHoraire Modifie les paramtres d'un horaire de tche planifie, c'est--dire les paramtres qui vont dfinir l'excution d'une tche PlanificateurModifieTche Modifie les paramtres d'une tche planifie PlanificateurOuvrePropritsTche Ouvre la page de proprits d'une tche planifie PlanificateurPropritsHoraire Lit les proprits d'un horaire de tche planifie et met jour la structure HoraireTchePlanifie PlanificateurPropritsTche Lit les proprits d'une tche planifie et met jour la structure TchePlanifie PlanificateurRAZ Remplit les structures TchePlanifie et HoraireTchePlanifie avec les valeurs par dfaut PlanificateurSupprimeHoraire Supprime un horaire d'une tche planifie PlanificateurSupprimeTche Supprime une tche planifie Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WD WLangage.book Page 195 Mardi, 23. avril 2013 1:59 13 196 Partie 4 : Fonctions standard 10. ACTIVATION DUNE APPLICATION 10.1 Prsentation Lors de la diffusion d'une application, il peut tre intressant de proposer la gestion d'une version complte et d'une version limite : La version limite est par exemple fournie par dfaut. La version complte (et payante par exemple) ncessite l'obtention d'une cl d'activation. WinDev, WebDev et WinDev Mobile permettent de grer simplement cette fonctionnalit. 10.2 Comment le faire ? 10.2.1 Principe Une cl initiale (un numro de srie par exemple) est gnre la demande par l'application sur le poste du client. Cette cl est unique : elle dpend de paramtres propres au poste en cours et l'ins- tant de la demande. Le client peut alors effectuer une demande d'acti- vation (par Internet par exemple) au fournisseur de l'application en lui communiquant cette cl initiale. Le fournisseur pourra gnrer la cl d'activation partir de la cl initiale et la communiquer son client. Il suffira alors au client de saisir la cl initiale et la cl d'activation correspondantes pour activer son application. 10.2.2 Mise en place dans l'application cliente L'application qu'utilise le client doit prvoir les ta- pes suivantes : 1. Gnration et communication de la cl initiale : La gnration de la cl initiale est effectue grce la fonction ClGnreClInitiale. La communication de la cl initiale au fournis- seur de l'application peut tre effectue par exemple par l'envoi automatique d'un email ou par l'intermdiaire d'un site WEB. 2. Rcupration de la cl d'activation et activation de l'application : La rcupration de la cl d'activation peut tre ralise directement par l'application ou par la saisie de la cl par l'utilisateur final. La vrification de la conformit de la cl d'activa- tion avec la cl initiale est ralise grce la fonction ClCompareCl. En cas de succs, il est alors possible par exemple d'activer certaines fonctionnalits de l'application. 10.2.3 Mise en place dans l'application du fournisseur Il est ncessaire que le fournisseur de l'application possde une application permettant de : gnrer la cl d'activation partir d'une cl ini- tiale (fonction ClCalculeClActivation). transmettre la cl d'activation l'application cliente. Il est possible par exemple d'envoyer un email. Ces manipulations peuvent tre par exemple propo- ses par un site WebDev ou un Webservice permet- tant une activation immdiate en ligne. 10.3 Fonctions de gestion des cls d'activation Les fonctions de gestion des cls d'activation sont les suivantes : ClCalculeClActivation Calcule la cl d'activation de l'application partir de la cl initiale. ClCompareCl Compare une cl initiale avec une cl d'activation ClGnreClInitiale Gnre la cl initiale (numro de licence unique) pour le systme d'activation de l'application ClRcupreIdentifiant Rcupre l'identifiant ayant servi gnrer une cl initiale Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 196 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 197 11. MANIPULEZ VOS FICHIERS XLS 11.1 Prsentation WinDev et WebDev mettre votre disposition deux mthodes pour manipuler les fichiers Excel : Mthode 1 : Manipulation dynamique des feuilles XLS et XLSX. Cette mthode utilise diffrents types de varia- bles ainsi que des fonctions WLangage. Cette mthode permet de grer les fichiers Excel (fichiers XLS ou XLSX) en lecture et en criture. Mthode 2 (conserve par compatibilit) : Utilisa- tion de fonctions WLangage pour grer les fonc- tions XLS. Cette mthode permet de grer uniquement les fichiers XLS en lecture. 11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX Pour manipuler les fichiers XLS et XLSX, le WLan- gage met votre disposition : diffrents types de variables. Ces types de varia- bles permettent de manipuler un document XLS, une ligne ou une colonne XLS, une cellule XLS. diffrentes fonctions WLangage manipulant les diffrents types de donnes. Pour manipuler les fichiers XLS et XLSX : 1. Dclarez une variable de type xlsDocument. Ce type de variable permet de dcrire et de modifier un document Excel. 2. Ouvrez si ncessaire le fichier XLS (fonction xlsOuvre) et associez-le la variable de type xlsDo- cument). 3. Vous pouvez manipuler les diffrents lments du document Excel : soit avec les fonctions WLangage. soit avec les proprits du type xlsDocument. Exemple : Remarque Si le fichier Excel est ouvert en mode lecture/cri- ture (constante xlsEcriture), le fichier est ouvert et bloqu jusqu' sa fermeture. Pour sauvegarder les modifications ralises, utilisez la fonction xlsSauve. Les fonctions XLS ne ncessitent pas l'installa- tion du logiciel "Microsoft Excel" sur le poste des utilisateurs. Les fichiers XLS et les fichiers spcifiques Office 2007 (fichiers .xlsx) sont grs. WebDev WD IdFicxls est un xlsDocument MonFichier est une chane MonFichier = fRepExe + ... "\Suivi d'affaires1.xls" IdFicxls = xlsOuvre(... MonFichier, xlsEcriture) SI ErreurDtecte = Faux ALORS Azz est un entier Azz = xlsFeuilleEnCours(IdFicxls) Info("Feuille en cours dans"+ ... "le fichier Excel : " + Azz) // Changement de feuille SI xlsFeuilleEnCours(... IdFicxls,2) ALORS Info("La feuille courante"+ ... "a t modifie.") // Lecture d'une cellule pour test Info(xlsDonne(IdFicxls,11,2)) SINON Erreur("Le fichier slectionn"+... "ne comporte pas de seconde"+... "feuille !") FIN SINON Erreur("Attention ! le fichier"+... "est dj ouvert sur un poste"+... "de travail !") FIN WLangage.book Page 197 Mardi, 23. avril 2013 1:59 13 198 Partie 4 : Fonctions standard 11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par com- patibilit) WinDev et WebDev mettent votre disposition des fonctions pour grer vos fichiers de type ".XLS" depuis vos applications WinDev et sites WebDev. Grce ces fonctions, vous pouvez rcuprer l'ensemble des donnes saisies sous Excel. Pour manipuler un document XLS : 1. Utilisez la fonction xlsOuvre. Cette fonction ren- voie l'identifiant du fichier XLS manipul. 2. Utilisez les fonctions XLS pour rcuprer les dif- frentes informations voulues sur le fichier Excel et ses donnes. Remarques : Les fonctions XLS ne ncessitent pas l'installa- tion du logiciel "Microsoft Excel" sur le poste des utilisateurs. Seuls les fichiers XLS sont grs. Les fichiers spcifiques Office 2007 (fichiers .xlsx) ne sont pas grs. Deux modes de fonctionnement des fonctions XLS sont disponibles : Mode de fonctionnement compatible avec les versions prcdentes de WinDev et WebDev : dans ce mode, seule la premire feuille du clas- seur est accessible. Nouveau mode de fonctionnement multi- feuilles : dans ce mode, il est possible de slec- tionner la feuille du classeur o les manipula- tions sont effectues. La fonction permettant de modifier le mode de manipulation des fonctions XLS est la fonction xlsOuvre. 11.4 Fonctions WLangage Ces fonctions permettent de : manipuler des fichiers ".XLS" : ouverture et fer- meture. obtenir des informations sur vos fichiers ".XLS" : donne d'une cellule, nombre de lignes, nombre de colonnes, type de colonne, titre de colonne (voir schma). connatre la version d'Excel utilise. identifier les erreurs survenues lors des diffren- tes manipulations sur un fichier ".XLS". WLangage.book Page 198 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 199 11.5 Fonctions XLS Les fonctions permettant de grer les fichiers Excel sont les suivantes : Remarque : La fonction TableVersExcel permet de crer un fichier XLS avec les donnes d'une table. xlsAjouteFeuille Ajoute ou insre une nouvelle feuille dans un document Excel. xlsDonne Rcupre les donnes d'une cellule d'un fichier XLS xlsFerme Ferme un fichier XLS xlsFeuilleEnCours Permet de connatre ou de modifier la feuille courante dun fichier XLS xlsMsgErreur Renvoie le libell de la dernire erreur due une fonction XLS xlsNbColonne Renvoie le nombre de colonnes d'un fichier XLS xlsNbFeuille Renvoie le nombre de feuilles dun fichier XLS xlsNbLigne Renvoie le nombre de lignes d'un fichier XLS xlsOuvre Ouvre un fichier XLS xlsSauve Sauve un document Excel. xlsSupprimefeuille Supprime une feuille dans un document Excel. xlsTitreColonne Rcupre l'intitul d'une colonne d'un fichier XLS xlsTypeColonne Renvoie le type des donnes saisies dans une colonne d'un fichier XLS xlsVersion Renvoie la version d'Excel utilise Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 199 Mardi, 23. avril 2013 1:59 13 200 Partie 4 : Fonctions standard 12. LES ARCHIVES 12.1 Prsentation Des fonctions WLangage permettent de compres- ser et de regrouper vos fichiers sous forme d'archi- ves. Une archive est un fichier physique : de type ".WDZ" pour une archive WinDev. de type ".ZIP" pour une archive WinZip ou PKZip. Ce fichier regroupe plusieurs fichiers de tout type (".pdf", ".fic", ".mmo", etc.) automatiquement com- presss. Par exemple, les archives peuvent vous permettre de : sauvegarder rgulirement vos fichiers tout en rduisant la taille de stockage, faciliter la transmission de vos fichiers sur Inter- net/Intranet, crer des archives auto-extractibles, etc. Grce une compression optimise, vos fichiers occupent moins d'espace disque et sont facilement transmissibles sur diffrents supports (disquettes, CD, Internet, etc.). Deux types d'archives existent : archive mono-partie : l'archive se prsente sous la forme d'un seul fichier. archive multi-parties : l'archive se prsente sous la forme de plusieurs fichiers (ou sous-archives). Remarque : WinDev gre galement les formats standards de zip (WinZip et PKZip). 12.2 Manipulations des archives Plus de 20 fonctions du WLangage permettent de grer vos archives. Ces fonctions permettent de : manipuler les archives (cration, ouverture, fer- meture), manipuler les fichiers de l'archive (ajout et com- pression de fichiers (fichiers isols ou ensemble de fichiers d'un rpertoire), extraction et dcom- pression d'un fichier, suppression des fichiers d'une archive), obtenir diverses informations sur les archives et sur les fichiers compresss (taille avant et aprs compression, etc.), dcouper et/ou regrouper des volumes d'archi- ves, crer des excutables auto-extractibles. Exemple Pour sauvegarder la base de donnes de votre client, votre programme cre une archive de sauve- garde. Les fichiers sauvegarder sont alors com- presss dans l'archive. WLangage.book Page 200 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 201 Pour stocker cette archive sur des disquettes : cette archive est dcoupe en plusieurs parties. Il est alors facile de transmettre cette archive ! Pour faciliter l'utilisation des fichiers de sauvegarde : crez une archive auto-extractible. Il suffira de lancer l'excution de l'archive pour dcompresser automatiquement tous les fichiers. 12.3 Les archives mono-partie/multi-parties 12.3.1 Prsentation Deux types d'archive existent : archive mono-partie, archive multi-parties. Archive mono-partie Une archive mono-partie se prsente sous la forme d'un seul fichier de type ".WDZ" ou ".ZIP" : un fichier archive regroupe tous les fichiers compresss. L'archive occupe la place ncessaire pour contenir tous les fichiers compresss. Exemple : Votre programme ou votre site doit sau- vegarder plusieurs fichiers de taille importante. Votre programme ou votre site peut crer une archive contenant l'ensemble des fichiers sauve- garder. Cette archive augmentera l'espace disque disponible. Archive multi-parties Une archive multi-parties se prsente sous la forme de plusieurs fichiers (ou sous-archives) de taille identique. La taille de chaque sous-archive est fixe lors de la cration de l'archive multi-parties. La premire sous-archive est un fichier de type ".WDZ" ou ".ZIP". Les sous-archives suivantes sont des fichiers numrots de 1 N grce leur exten- sion. Pour les archives au format WinDev (WDZ), les sous-parties ont pour extension : ".001", ".002", ..., ".NNN". Pour les archives au format ZIP standard, les sous- parties ont pour extension : ".Z01", ".Z02", ..., ".ZNN". 12.3.2 Principe d'utilisation Pour crer une archive multi-parties : 1. Crez une archive (zipCre). 2. Ajoutez des fichiers cette archive. Les fichiers ajouts sont automatiquement compresss (zipA- jouteFichier, zipAjouteRpertoire). 3. Dcoupez cette archive en plusieurs sous-archi- ves (zipDcoupe). Les sous-archives sont de taille identique. Vous dcidez de la taille des sous-archi- ves. Vous pouvez stocker les sous-archives sur diff- rents supports (disquettes, CD, ....). Les sous-archives peuvent tre regroupes (fonc- tion zipRegroupe) : l'archive redevient mono-partie. Remarque : Toutes ces manipulations peuvent ga- lement tre ralises grce WDZip (pour plus de dtails, consultez laide en ligne). Attention : Certaines fonctions d'archivage sont uti- lisables uniquement sur des archives mono-partie (ajout de fichiers, suppression de fichiers, cration d'un excutable auto-extractible, etc.). Pour effec- tuer ces oprations sur une archive multi-parties, il suffit de regrouper les sous-archives (zipRegroupe) pour obtenir une archive mono-partie. A partir d'une archive multi-parties, il est unique- ment possible de : Regrouper les diffrentes parties (zipRegroupe), Obtenir diverses informations sur l'archive et sur les fichiers de l'archive (zipExtraitChemin, zipIn- foFichier, zipListeFichier, etc.), Extraire les fichiers (zipExtraitFichier, zipExtrait- Tout). WLangage.book Page 201 Mardi, 23. avril 2013 1:59 13 202 Partie 4 : Fonctions standard 12.3.3 Exemples Votre programme WinDev doit stocker une grande quantit d'informations sur disquette. Votre programme peut crer une archive conte- nant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plusieurs parties. Ces volumes sont de la taille d'une dis- quette (1,44 Mo). Il ne reste plus qu' copier ces diffrentes parties sur des disquettes. Votre site WebDev doit proposer en tlcharge- ment un fichier dont la taille est importante. Pour les Internautes possdant une connexion bas dbit (ligne tlphonique par exemple), il est sou- vent propos de tlcharger un fichier en plu- sieurs parties. Votre site peut crer une archive contenant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plu- sieurs parties. Ces volumes peuvent tre d'une taille correcte pour un tlchargement. Il ne reste plus qu' fournir un lien pour chaque partie de l'archive l'Internaute. 12.4 Fonctions d'archivage Les fonctions permettant de grer les archives sont les suivantes : zipAjouteFichier Ajoute et compresse automatiquement un fichier dans une archive zipAjouteListeFichier Ajoute et compresse automatiquement une liste de fichiers dans une archive zipAjouteRpertoire Ajoute la totalit des fichiers d'un rpertoire et de ses sous-rpertoires dans une archive zipChangeChemin Modifie le chemin d'un fichier prsent dans l'archive zipChercheFichier Recherche un fichier dans une archive selon un chemin donn zipCre Cre une nouvelle archive zipCreExe Cre un excutable auto-extractible partir d'une archive zipDcoupe Dcoupe une archive en plusieurs parties zipEstMulti Renvoie le type de l'archive : archive mono-partie ou archive multi-parties zipExiste Permet de savoir si une archive existe. Une archive existe si elle a t ouverte par la fonction zipOuvre ou cre par la fonction zipCre. zipExtraitChemin Renvoie le chemin original d'un fichier de l'archive zipExtraitFichier Extrait et dcompresse un fichier d'une archive zipExtraitListeFichier Extrait et dcompresse automatiquement une liste de fichiers prsents dans une archive vers un emplacement physique. zipExtraitTout Extrait et dcompresse la totalit des fichiers d'une archive zipFerme Ferme une archive zipFichierEnCours Renvoie le nom du fichier en cours de traitement par les fonctions d'ajout et d'extraction de fichiers zipInfoFichier Renvoie diverses informations sur un fichier ou une archive (chemin mmoris, taille avant et aprs compression, etc.) zipListeFichier Renvoie la liste des fichiers prsents dans l'archive zipMotDePasse Dfinit le mot de passe utilis pour les oprations d'ajout et d'extraction de fichiers dans l'archive spcifie zipMsgErreur Renvoie le message associ un numro d'erreur d'un traitement d'archivage zipNbFichier Renvoie le nombre de fichiers contenus dans une archive zipNbPartie Renvoie le nombre de parties d'une archive zipNbPartieNces- saire Renvoie le nombre de parties d'une taille donne ncessaires pour contenir l'archive zipNiveauCompres- sion Change le niveau de compression utilis dans la cration d'une archive au format ZIP zipOuvre Ouvre une archive existante zipOuvreCAB Ouvre une archive CAB existante zipOuvreRAR Ouvre une archive RAR existante WLangage.book Page 202 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 203 zipRegroupe Regroupe les diffrentes parties d'une archive pour en faire une archive mono-par- tie zipSupprimeFichier Supprime un fichier d'une archive zipSupprimeListeFi- chier Supprime un ensemble de fichiers contenu dans une archive zipSupprimeTout Supprime la totalit des fichiers d'une archive zipTaille Renvoie la taille totale de l'ensemble des fichiers d'une archive (avant ou aprs compression) zipTailleFichier Renvoie la taille d'un fichier d'une archive (avant ou aprs compression) Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 203 Mardi, 23. avril 2013 1:59 13 204 Partie 4 : Fonctions standard 13. GRAVER UN CD OU UN DVD 13.1 Prsentation Plusieurs fonctions WLangage sont votre disposi- tion pour graver des CD ou des DVD. Il est possible de crer : des CD / DVD de type donnes. des CD de type audio. Remarque : Il est possible uniquement de graver des fichiers sur un CD ou un DVD. Il n'est pas possi- ble de copier directement un CD ou un DVD. En WinDev, les fonctions de gravure sont disponi- bles uniquement sous Windows XP et suprieur. En WebDev, la gravure sera ralise sur le serveur Web. Ce serveur doit tre sous Windows XP ou suprieur. 13.2 Gravure dun CD / DVD Pour graver un CD : 1. Dterminez si ncessaire le graveur utiliser : 2. Ouvrez si ncessaire le tiroir du graveur en cours, fonction GraveurEjecte. 3. Spcifiez si ncessaire le type du CD/DVD crer : 4. Effacez si ncessaire les fichiers dj prsents sur le CD /DVD (fonction GraveurEfface). Lors de l'effacement, une procdure WLangage ("callback") est appele rgulirement. Cette procdure permet de grer les diffrents vnements rencontrs. 5. Indiquez si ncessaire le nom donner au CD / DVD graver, fonction GraveurNomVolume. 6. Slectionnez les fichiers graver sur le CD / DVD : 7. Rcuprez si ncessaire les caractristiques de la compilation, fonction GraveurInfoCompilation. 8. Gravez les fichiers slectionns sur le CD / DVD (fonction GraveurEnregistre). Lors de la gravure, une procdure WLangage ("callback") est appele rgulirement. Cette procdure permet de grer les diffrents vnements rencontrs. 9. Annulez si ncessaire la gravure en cours (fonc- tion GraveurAnnuleGravure). WebDev WD GraveurChemin Renvoie le chemin du graveur en cours GraveurEtat Renvoie l'tat actuel du graveur en cours GraveurListe Liste les graveurs installs sur le poste en cours GraveurProprit Permet de connatre ou de modi- fier les proprits du graveur en cours GraveurSlectionne Permet de slectionner le graveur utilis par dfaut GraveurInfoMdia Rcupre les caractristiques du CD /DVD prsent dans le graveur en cours GraveurTypeMdia Permet de connatre ou de modi- fier le format du CD / DVD graver GraveurAjouteFichier Ajoute un fichier la compilation GraveurAjouteRper- toire Ajoute la totalit des fichiers d'un rpertoire la compilation WLangage.book Page 204 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 205 13.3 Fonctions de gravure Les fonctions permettant de grer les archives sont les suivantes : GraveurAjouteFichier Ajoute un fichier la compilation GraveurAjouteRpertoire Ajoute la totalit des fichiers d'un rpertoire la compilation GraveurAnnuleGravure Annule la gravure en cours de ralisation GraveurChemin Renvoie le chemin du graveur en cours GraveurEfface Efface les fichiers prsents sur un CD rinscriptible GraveurEjecte Ouvre ou ferme le tiroir du graveur en cours GraveurEnregistre Grave les fichiers prsents dans la compilation sur le CD GraveurEtat Renvoie l'tat actuel du graveur en cours GraveurInfoCompilation Rcupre les caractristiques de la compilation en cours GraveurInfoMdia Rcupre les caractristiques du CD prsent dans le graveur en cours GraveurListe Liste les graveurs installs sur le poste en cours GraveurMdiaPrsent Permet de savoir si le graveur est plein ou vide. GraveurNomVolume Permet de connatre ou de modifier le nom du CD graver GraveurProprit Permet de connatre ou de modifier les proprits du graveur en cours GraveurSlectionne Permet de slectionner le graveur utilis par dfaut GraveurTypeMdia Permet de connatre ou de modifier le format du CD graver Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 205 Mardi, 23. avril 2013 1:59 13 206 Partie 4 : Fonctions standard 14. FONCTIONS DACCS AU POCKET PC Ces fonctions permettent d'accder aux Pockets PC partir d'une application WinDev standard. ceConnecte Connecte le poste en cours un Pocket PC ceCopieFichier Copie un fichier prsent sur le poste en cours vers le Pocket PC connect; prsent sur le Pocket PC connect vers le poste en cours; prsent sur le Pocket PC connect vers un autre rpertoire dans le Pocket PC ceCreRaccourci Cre un raccourci sur le Pocket PC connect au poste en cours ceDateFichier Renvoie ou modifie les diffrentes dates d'un fichier (date de cration, modification ou accs) ceDconnecte Ferme la connexion entre le poste en cours et le Pocket PC ceEtatAlimentation Renvoie des informations sur la batterie (principale ou de secours) du Pocket PC ceEtatConnexion Permet de connatre l'tat de la connexion entre le poste en cours et un Pocket PC ceFenEnumre Permet d'numrer les fentres Windows actuellement ouvertes sur le Pocket PC ceFenTitre Renvoie le titre de la fentre Windows spcifie ceFichierExiste Teste l'existence d'un fichier ceHeureFichier Renvoie ou modifie les diffrentes heures d'un fichier (heure de cration, de modifi- cation ou d'accs) ceInfoOEM Renvoie les informations OEM du Pocket PC connect au poste en cours ceLanceAppli Lance l'excution d'un programme (excutable par exemple) depuis l'application en cours ceListeFichier Liste les fichiers d'un rpertoire (et de ses sous-rpertoires) et retourne le nombre de fichiers lists ceNomMachine Renvoie le nom du Pocket PC connect au poste en cours cePlateforme Renvoie le nom de la plateforme du Pocket PC connect au poste en cours ceRegistreClSui- vante Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC ceRegistreCreCl Cre une cl dans la base de registres du Pocket PC ceRegistreEcrit crit une valeur dans un registre de la base de registres du Pocket PC ceRegistreExiste Teste l'existence d'une cl de la base de registres du Pocket PC ceRegistreListeVa- leur Renvoie le nom et ventuellement le type des valeurs d'une cl de la base de regis- tres du Pocket PC ceRegistreLit Lit la valeur d'un registre dans la base de registres du Pocket PC ceRegistrePremire- SousCl Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC ceRegistreSousCl Identifie le chemin de la Nime sous-cl spcifie dans la base de registres du Poc- ket PC ceRegistreSuppri- meCl Supprime une sous-cl dans la base de registres du Pocket PC ceRegistreSuppri- meValeur Supprime une valeur dans la base de registres du Pocket PC ceRep Recherche un fichier ou un rpertoire sur le Pocket PC connect au poste en cours ceRepCre Cre un rpertoire sur le Pocket PC connect au poste en cours ceRepSupprime Supprime un rpertoire prsent sur le Pocket PC connect au poste en cours ceSupprimeFichier Supprime un fichier prsent sur le Pocket PC connect au poste en cours ceSupprimeRac- courci Supprime un raccourci prcdemment cr avec la fonction ceCreRaccourci WD WLangage.book Page 206 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 207 ceSysRep Renvoie le chemin d'un rpertoire du systme du Pocket PC connect au poste en cours ceTailleFichier Renvoie la taille (en octets) d'un fichier prsent sur le Pocket PC connect au poste en cours ceTypeProcesseur Renvoie le type de processeur du Pocket PC connect au poste en cours ceVersionWindows Renvoie des informations sur la version de Windows utilise sur le Pocket PC con- nect au poste en cours ceXRes Renvoie la rsolution horizontale de l'cran du Pocket PC connect au poste en cours ceYRes Renvoie la rsolution verticale de l'cran du Pocket PC connect au poste en cours Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 207 Mardi, 23. avril 2013 1:59 13 208 Partie 4 : Fonctions standard 15. FONCTIONS SPCIFIQUES WINDEV MOBILE 15.1 WinDev Mobile et les cartes SIM 15.1.1 Prsentation WinDev Mobile permet de manipuler les informa- tions contenues dans la carte SIM d'un tlphone portable grce aux fonctions WLangage SIM. La carte SIM (Subscriber Identity Module) dsigne la puce prsente dans un tlphone portable. Indis- pensable pour accder au rseau tlphonique, cette carte puce identifie personnellement le con- sommateur et enregistre toutes les informations relatives au rseau (SFR, Orange, ...) et la formule choisie (numros de tlphone, type de contrat, ...). La carte SIM contient galement un rpertoire per- sonnel. Les fonctions SIM du WLangage permet- tant de grer les informations contenues dans ce rpertoire. Remarque : Le rpertoire personnel prsent sur la carte SIM contient uniquement le nom des person- nes et leur numro de tlphone. Seules ces infor- mations peuvent donc tre manipules. 15.1.2 Configuration ncessaire Pour pouvoir utiliser les fonctions SIM, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphoni- que (type GSM). et/ou sur un smartphone. 15.1.3 Fonctionnement diffrent en mode GO et en utilisation relle En mode GO (simulation sur le poste de dveloppe- ment), une erreur WLangage est gnre lors de l'appel d'une fonction de gestion de la carte SIM. 15.1.4 Fonctions WLangage Ces fonctions permettent de grer facilement les informations contenues dans le rpertoire person- nel prsent sur une carte SIM: 15.2 Clavier du Pocket 15.2.1 Prsentation Pour permettre aux utilisateurs de vos applications de saisir des informations, il est ncessaire d'utili- ser le clavier du Pocket PC (appel galement SIP pour Software Input Panel). Ce clavier permet par exemple de : afficher un clavier miniature sur la partie basse de l'cran. L'utilisateur n'a plus qu' cliquer sur ce clavier l'aide du stylet pour saisir des infor- mations. Par exemple : SIMEcrit crit ou modifie une entre dans le rpertoire de la carte SIM SIMLit Lit une entre dans le rpertoire de la carte SIM SIMNbContact Renvoie le nombre d'entres prsentes dans le rpertoire de la carte SIM SIMSupprime Supprime une entre dans le rpertoire de la carte SIM WLangage.book Page 208 Mardi, 23. avril 2013 1:59 13 Partie 4 : Fonctions standard 209 reconnatre automatiquement les diffrents mots crits directement sur l'cran l'aide du stylet (mthode appele "Transcriber"). Par exemple : reconnatre automatiquement des lettres saisies avec un certain alphabet (mthode appele "Reconnaissance des lettres"). Par exemple : reconnatre automatiquement des blocs de mots saisis avec un certain alphabet (mthode appe- le "Reconnaissance des blocs"). Par exemple : WinDev Mobile permet de grer simplement ce cla- vier grce aux fonctions WLangage. Remarque : D'autres types de clavier peuvent ga- lement tre disponibles. 15.2.2 Fonctions WLangage Les fonctions permettant de manipuler le clavier dun Pocket PC sont : ClavierListe Renvoie la liste des types de cla- viers disponibles sur le Pocket PC ClavierMode Permet de connatre et/ou de changer le clavier en cours d'utili- sation ClavierVisible Permet de savoir si le clavier en cours est activ et de rendre le clavier actif WLangage.book Page 209 Mardi, 23. avril 2013 1:59 13 210 Partie 4 : Fonctions standard WLangage.book Page 210 Mardi, 23. avril 2013 1:59 13 PARTIE 5 Fonctionnalits spcifiques au Web WLangage.book Page 211 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 212 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 213 1. UPLOAD DE FICHIERS 1.1 Prsentation L'upload est l'opration qui consiste sauvegarder sur le serveur Web un fichier accessible sur le poste de l'internaute. Le fichier du poste de l'inter- naute est "upload" vers le serveur : il est charg et enregistr sur le poste serveur. L'upload de fichiers est possible pour tous les types de fichiers. Quelques exemples d'utilisation de l'upload de fichiers : Site de type annuaire : lors de l'ajout d'un nou- veau contact dans l'annuaire, l'internaute peut slectionner sur son poste la photo du contact. Pour tre affiche quel que soit l'internaute, l'image est "uploade" sur le serveur. Site de type gestion documentaire : chaque internaute peut mettre disposition de tous, divers types de documents : texte, ... Ces docu- ments sont slectionns sur le poste de l'inter- naute et "uploads" sur le serveur afin d'tre consultable par tous les internautes. 1.2 Mettre en place lupload dans un site WebDev 1.2.1 Elments mis disposition Pour grer l'upload de fichiers, WebDev met votre disposition : un champ de saisie de type UPLOAD : Dans le navigateur, un bouton "PARCOURIR" est automati- quement ajout droite du champ de saisie de type Upload. Ce bouton permet l'internaute de slectionner le fichier "uploader". Sous l'diteur, un bouton gris apparat. Ce bouton n'est pas modifiable (style, libell, ...).
Attention : ce champ de saisie est un champ spcifique : il est dconseill d'utiliser les pro- prits de type Valeur sur ce champ. Pour obtenir le nom du fichier upload, il est ncessaire d'utili- ser la fonction UploadNomFichier. deux fonctions serveur du WLangage : un ensemble de fonctions navigateur du WLan- gage permettant de manipuler le champ Upload : UploadCopieFi- chier Enregistre un fichier "upload" sur le serveur. Lors de cet enre- gistrement, il est possible de renommer le fichier enregistr sur le serveur. UploadNomFi- chier Renvoie le nom d'un fichier "upload" (nom d'origine du fichier, ou nom du fichier enregis- tr sur le serveur). UploadCopieFi- chierEnCours Indique le nom du fichier en cours d'envoi par le champ upload. UploadLance Lance l'envoi des fichiers slec- tionns dans un champ upload. UploadSup- prime Supprime un fichier de la liste des fichiers uploader : le fichier ne sera pas upload sur le ser- veur. UploadSuppri- meTout Vide la liste des fichiers uploader : aucun fichier ne sera upload sur le serveur. UploadTailleEn- voyeFichie- rEnCours Renvoie la taille (en octets) dj envoye du fichier en cours d'upload via un champ Upload. UploadTailleEn- voye Renvoie la taille totale (en octets) des fichiers dj envoys par l'upload en cours via un champ Upload. UploadTailleFi- chierEnCours Renvoie la taille totale (en octets) du fichier en cours d'upload via un champ Upload. UploadTaille Renvoie la taille totale (en octets) des fichiers de l'upload en cours via un champ Upload. WLangage.book Page 213 Mardi, 23. avril 2013 1:59 13 214 Partie 5 : Fonctionnalits spcifiques au Web 1.2.2 Uploader un fichier dans une page Pour uploader un fichier dans une page : 1. Crez un champ de saisie de type UPLOAD (le type du champ est dfini dans l'onglet "Gnral" du champ). Grce ce champ, l'internaute pourra slectionner le fichier "uploader". 2. Ajoutez un bouton ou un lien. Ce champ permettra de tlcharger le fichier sur le serveur. Ce bouton ou lien doit tre de type "Sub- mit". Lors de la validation de la page grce ce bouton, le fichier est upload dans un rpertoire temporaire du serveur. Ce fichier n'est donc pas visible pour les autres internautes 3. Dans le code de clic serveur de ce bouton ou de ce lien, vous pouvez utiliser : UploadNomFichier (par exemple UploadNomFi- chier(<Champ Upload>, Faux)) pour vrifier que le fichier a t upload et rcuprer son nom. En effet, lors de l'upload, le fichier est renomm avec un nom de fichier temporaire. UploadCopieFichier afin de copier et de renom- mer le fichier upload sur le serveur. Vous pouvez par exemple copier ce fichier dans le rpertoire des ressources (_WEB) ou dans un rpertoire accessible par un alias. HAttacheMmo pour charger l'image dans une rubrique mmo d'un fichier Hyper File. Attention : L'utilisation directe du nom de fichier sur le poste navigateur (lecture de la valeur par la proprit ..Valeur en code serveur ou navigateur) dans des fonctions de gestion de fichiers est une GROSSE erreur. En effet, cette manipulation fonc- tionne en mode dveloppement (car le serveur est sur le mme poste que le navigateur) mais PAS en dploiement. Dans ce cas, le serveur et le naviga- teur sont machines diffrentes. Le serveur ne voit pas les fichiers du navigateur. Pour obtenir les noms de fichiers manipuler, utilisez UploadNom- Fichier. 1.2.3 Afficher limage uploader Pour afficher l'image slectionne dans un champ upload (SAI_ChampUpLoad) dans un champ image (IMG_ChampImage) : 1. Dans la fentre de description du champ image "ChampImage" (onglet "Gnral"), dcochez loption "Localiser limage dans le rpertoire _WEB en code navigateur". 2. Dans le code de la page, ajoutez le code naviga- teur optionnel "souris dplace" (OnMouseMove)". 3. Saisissez le code suivant dans ce code : Note : Cette manipulation peut ne pas fonctionner selon le navigateur utilis et le niveau de scurit dfini. Remarque : Taille maximale des fichiers uploader : Par dfaut, la taille des fichiers uploader est illi- mite dans le moteur WebDev. Cette taille peut tre limite : par le serveur Web utilis. Pour plus de dtails, consultez la documentation du serveur Web uti- lis. par le serveur d'application WebDev. Si le fichier uploader dpasse la taille limite, le fichier n'est pas upload. Pour modifier la taille maximale des fichiers uploader dans le serveur d'application WebDev, il est ncessaire de modifier la base de registres sur le serveur : 1. Pour modifier la taille des fichiers uploads pour toutes les applications WebDev 18, slectionnez la cl : HKEY_LOCAL_MACHINE\SOFTWARE\PC SOFT\WEBDEV\18.0 2. Ajoutez la chane MAX_UPLOAD. Cette chane aura pour valeur la taille maximale des fichiers uploader (en Ko). Dans le cas d'un transfert important (plusieurs cen- taines de Mo), il est conseill d'utiliser le protocole FTP et non pas l'upload. Il est possible d'effectuer un transfert FTP depuis une page WEBDEV, grce une applet Java cre avec WINDEV. Limites en PHP : La taille des fichiers uploads est limite par la directive "upload_max_filesize" dans le fichier de configuration de PHP (fichier php.ini). L'upload de fichiers doit tre autoris par le serveur PHP. Pour cela, la directive "file_uploads" doit tre "on" dans le fichier de configuration de PHP (fichier php.ini). SI SAI_ChampUpLoad <> "" ALORS SI IMG_ChampImage<> SAI_ChampUpLoad ALORS IMG_ChampImage = SAI_ChampUpLoad FIN FIN WLangage.book Page 214 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 215 2. DOWNLOAD DE FICHIERS 2.1 Prsentation Le download (ou tlchargement) est l'opration qui consiste enregistrer sur le poste de l'inter- naute un fichier stock sur le serveur. Le fichier est "download" ou "tlcharg" sur le poste de l'inter- naute. Quelques exemples : Proposer le chargement de la bande-annonce d'un film sur un site de location de DVD. Tlcharger des documents dans une application de gestion documentaire. 2.2 Mettre en place le tlchargement dun fichier dans un site WebDev WebDev propose plusieurs mthodes pour effec- tuer un tlchargement de fichier dans un site : fentre de description du bouton ou lien permet- tant d'effectuer le tlchargement. programmation en WLangage. 2.2.1 Utilisation de la fentre de description des champs (bouton, lien, ...) Pour proposer un tlchargement : 1. Crez un champ de type "Lien", "Bouton", ... 2. Affichez la fentre de description de ce champ. 3. Cliquez sur le bouton "Autres actions". 4. Dans la fentre qui s'affiche, slectionnez l'option "Autres actions : saisissez un lien". 5. Indiquez le chemin complet du fichier (rpertoire + Nom) prsent sur le serveur. Le fichier doit tre prsent dans le rpertoire "_WEB" du site. En excution, lors du clic sur ce champ : si le type du fichier est connu, le fichier sera directement ouvert dans le navigateur. si le type du fichier est inconnu ou correspond un excutable, une bote de dialogue permettra de tlcharger ce fichier et/ou de l'excuter direc- tement. 2.2.2 Programmation Pour proposer le tlchargement d'un fichier par programmation, il suffit d'utiliser la fonction Fichie- rAffiche dans le code de clic serveur du bouton ou du lien permettant de tlcharger le fichier. Exemple : En excution, lors du clic sur ce champ : si le type du fichier est connu, le fichier sera directement ouvert dans le navigateur. si le type du fichier est inconnu ou correspond un excutable, une bote de dialogue permettra de tlcharger ce fichier et/ou de l'excuter direc- tement. 2.2.3 Forcer le tlchargement du fichier Pour ouvrir cette bote de dialogue quel que soit le type du fichier tlcharger, saisissez la ligne de code suivante : Cependant, le nom du fichier propos en tlchar- gement ne correspond pas un nom valide. Pour proposer immdiatement le nom du fichier tl- charger, il suffit de rajouter ce nom la suite des paramtres de la fonction FichierAffiche : // Affiche dans le navigateur FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", .. "text/plain") FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", ... "application/unknown") FichierAffiche(Complte- Rep(fRepWeb()) + "NOTES.TXT",... "application/unknown", "Notes.TXT") WLangage.book Page 215 Mardi, 23. avril 2013 1:59 13 216 Partie 5 : Fonctionnalits spcifiques au Web 3. COOKIES 3.1 Prsentation Un cookie est un moyen simple de stocker tempo- rairement une information chez un internaute. Cette information pourra tre rcupre ultrieure- ment. Lorsque linternaute retourne sur un site quil a dj consult, le site "reconnat" linternaute grce aux cookies. Il est ainsi possible dviter de deman- der des renseignements dj fournis lors dune pr- cdente connexion, et de proposer des pages personnalises. Remarque : Un cookie possde une date dexpira- tion (par dfaut 30 jours aprs la cration du coo- kie). Il est automatiquement dtruit par le navigateur de linternaute si sa dure de vie est dpasse. Exemple dutilisation des cookies Un cookie permet par exemple de conserver sur le poste de linternaute des informations telles que le nom de linternaute, les pages consultes par linternaute, la date de sa dernire connexion, la sauvegarde de ses options, ... Ces informations, enregistres sous forme de coo- kies, pourront tre lues par le site lors de la pro- chaine connexion de linternaute. Le site pourra ainsi proposer des informations personnalises linternaute : bandeau de publicit correspondant aux sujets consults lors de la dernire connexion, personnalisation de la page daccueil avec le nom de linternaute et la date de dernire con- nexion, affichage de promotions correspondant aux recherches effectues lors de la dernire visite, ... 3.2 Que contient un cookie ? Un cookie est un fichier texte conserv sur le poste de linternaute (gnralement dans le "cache" Inter- net du navigateur) pendant une dure spcifie. Le cookie est cr par le navigateur ou par le serveur. Chaque cookie contient les informations suivantes : Nom du cookie : permet au site d'identifier le cookie. Texte du cookie : renseignements inscrits par le site (pages consultes, renseignements fournis par l'internaute, ...). Date d'expiration, au-del de laquelle le cookie n'est plus valable. Nom du domaine Internet qui a cr le cookie. Rappel : Le domaine Internet est une partie sp- cifique de l'adresse Internet : http:// machine.domaine.com/MesPages/Index.html. 3.3 WebDev et la gestion des cookies 3.3.1 Elments mis disposition WebDev met votre disposition deux fonctions du WLangage permettant de grer les cookies dans vos sites : CookieEcrit Envoie un cookie au client lors de l'affichage de la page HTML sous le navigateur de l'internaute. CookieLit Rcupre la valeur d'un cookie enregistr sur le poste de l'internaute. Ces fonctions peuvent tre aussi bien utilises dans un code serveur que dans un code navigateur du site WebDev. WLangage.book Page 216 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 217 3.3.2 Ecrire un cookie sur le poste de linter- naute Pour crire un cookie sur le poste de l'internaute : En code serveur : Utilisez la fonction CookieEcrit, en prcisant le nom du cookie, son contenu et la dure de vali- dit. Le cookie sera cr sur le poste de l'internaute lors de l'affichage de la prochaine page. Remarque : un cookie cr en code serveur pourra tre relu par la fonction CookieLit : immdiatement, si la fonction CookieLit est uti- lise dans un code navigateur. lors de la prochaine reconnexion de l'utilisateur, si la fonction CookieLit est utilise dans un code serveur. En code navigateur : Utilisez la fonction CookieEcrit, en prcisant le nom du cookie, son contenu et la dure de vali- dit. Le cookie est immdiatement cr. 3.3.3 Lire un cookie sur le poste de linter- naute (code serveur et code navigateur) Pour lire un cookie sur le poste de l'internaute, utili- sez la fonction CookieLit, en prcisant le nom du cookie. Remarques : Lors de la connexion au site Web, le serveur lit automatiquement tous les cookies asso- cis au domaine en cours. La fonction CookieLit utilise : en code serveur, permet de lire en mmoire et de rcuprer le contenu du cookie spcifi. en code navigateur, permet de lire directement le contenu du cookie sur le poste de l'internaute. 3.4 Tester la gestion des cookies dans un site WebDev La gestion des cookies dans votre site (sur le poste de dveloppement) peut tre teste : directement depuis la page de test de l'adminis- trateur WebDev. avec un simple test par un "GO" du projet depuis l'diteur de pages de WebDev. WLangage.book Page 217 Mardi, 23. avril 2013 1:59 13 218 Partie 5 : Fonctionnalits spcifiques au Web 4. VALIDIT DES PAGES DUN SITE 4.1 Prsentation Lors de la cration d'une page, il est possible d'indi- quer une date limite de validit pour cette page. Par exemple, si une page concerne un vnement particulier (un salon professionnel, une promotion), il est ncessaire d'enlever cette page du site par- tir d'une date donne. Pour ne pas oublier de le faire : WebDev prviendra le dveloppeur lors de l'ouverture du projet avec une frquence param- trable. Une erreur d'IHM sera automatiquement affiche. Le serveur d'application enverra un email une adresse donne avec un message spcifique. Les risques d'oublis sont limits. 4.2 Comment le faire ? 4.2.1 Dfinir la date limite de validit des pages Pour dfinir la date limite de validit d'une page : 1. Affichez la description de la page. 2. Dans l'onglet "Dtail" : Indiquez la date limite de validit de la page. Cliquez sur le bouton "Paramtrer les rappels". Dans la fentre qui s'ouvre, indiquez : l'adresse email du destinataire du rappel. Si le serveur d'application WebDev est configur pour chercher les pages primes, un message de rappel sera automatiquement envoy cette adresse. le texte ajout au message de rappel. la date d'envoi du rappel (par dfaut une semaine et un jour avant). Cette date sera ga- lement utilise pour afficher une erreur de com- pilation d'IHM. Cette erreur de compilation indiquera si la date limite de validit de la page a t atteinte. 3. Validez 4.2.2 Supprimer la date limite de validit Pour supprimer la date limite de validit d'une page : 1. Affichez la description de la page. 2. Dans l'onglet "Dtail", supprimez la date limite de validit de la page. 3. Validez 4.2.3 Configurer le serveur d'application Windows pour grer la date limite de validit Pour que le serveur d'application WebDev vrifie la date limite de validit des pages (version 140025 minimale) : 1. Lancez si ncessaire l'administrateur WebDev. 2. Dans l'onglet "Avanc", cochez la case "Autoriser la recherche des pages primes". 3. La fentre de paramtrage s'affiche automati- quement. 4. Indiquez : lheure de lancement de la recherche des pages primes. A l'heure indique, le serveur d'appli- cation effectuera une recherche des pages pri- mes sur tous les sites WebDev dynamiques grs par le serveur. l'adresse email de l'expditeur de l'email d'alerte. Les paramtres du destinataire de cet email ont t dfinis dans la description de la page, sous l'diteur. l'adresse et le port du serveur SMTP utilis pour l'envoi des emails. Il est galement possible d'indiquer si le spooler de mails doit tre utilis. les login et mot de passe de l'utilisateur du ser- veur SMTP (pour les serveurs avec authentifica- tion). 5. Validez. WLangage.book Page 218 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 219 4.2.4 Configurer le serveur d'application Linux pour grer la date limite de validit Pour que le serveur d'application WebDev vrifie la date limite de validit des pages (version 140025 minimale) : 1. Lancez si ncessaire l'administrateur WebDev distant. 2. Dans les options de paramtrage, affichez les "Paramtres avancs" et cliquez sur l'onglet "Pages primes". 3. Cochez la case "Autoriser la recherche des pages primes". 4. Indiquez : l'heure de lancement de la recherche des pages primes. A l'heure indique, le serveur d'appli- cation effectuera une recherche des pages pri- mes sur tous les sites WebDev dynamiques grs par le serveur. l'adresse email de l'expditeur de l'email d'alerte. Les paramtres du destinataire de cet email ont t dfinis dans la description de la page, sous l'diteur. l'adresse et le port du serveur SMTP utilis pour l'envoi des emails. Il est galement possible d'indiquer si le spooler de mails doit tre utilis. les login et mot de passe de l'utilisateur du ser- veur SMTP (pour les serveurs avec authentifica- tion). 5. Validez grce au bouton "Appliquer". WLangage.book Page 219 Mardi, 23. avril 2013 1:59 13 220 Partie 5 : Fonctionnalits spcifiques au Web 5. INCLURE DES FICHIERS JAVASCRIPT OU UNE RESSOURCE WEB 5.1 Prsentation WebDev offre la possibilit d'inclure des fichiers Javascript ou des ressources externes dans un pro- jet WebDev. Ces fichiers peuvent : tre inclus au niveau du projet ou au niveau de la page. tre prsents dans le rpertoire _WEB du site ou tre un fichier externe au site tre dans un format spcifique (ISO, UTF8, ...). 5.2 Comment le faire ? 5.2.1 Intgration de fichiers Javascript (.js) Il est possible d'inclure dans un site ou dans une page un ou plusieurs fichiers Javascript (*.js). Ces fichiers seront utiliss par la ou les pages HTML gnres. Ces fichiers doivent tre prsents dans le rpertoire "<NomProjet>_WEB" du site. Pour inclure un fichier Javascript dans une page : 1. Affichez la description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Slectionnez l'onglet "Avanc". 3. Slectionnez l'onglet "Javascript". 4. Cliquez sur le bouton "Ajouter" et slectionnez le chemin du fichier Javascript. 5. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtec- tion de l'encodage est automatique. 6. Validez. Pour inclure un fichier Javascript dans le projet : 1. Affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", slectionnez loption "Description"). 2. Slectionnez l'onglet "Avanc". 3. Cliquez sur le bouton "Fichiers Javascript (.js) supplmentaires". 4. Cliquez sur le bouton "Ajouter" et slectionnez le chemin du fichier Javascript. 5. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtec- tion de l'encodage est automatique. 6. Validez. 5.2.2 Intgration de ressources externes au site L'intgration de ressources externes au site permet d'intgrer les fichiers d'interface (interface de pro- grammation) proposs par des services externes (API Web) sur le WEB. Il est alors possible de s'inter- facer avec ces services externes en code naviga- teur. Pour inclure une ressource externe dans une page : 1. Affichez la description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Slectionnez l'onglet "Avanc". 3. Slectionnez l'onglet "Javascript". 4. Cliquez sur le bouton "Ajouter une ressource Web" et indiquez l'adresse de la ressource Web voulue. 5. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtec- tion de l'encodage est automatique. 6. Validez. Pour inclure une ressource externe dans le projet : 1. Affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", slectionnez loption "Description"). 2. Slectionnez l'onglet "Avanc". 3. Cliquez sur le bouton "Fichiers Javascript (.js) supplmentaires". 4. Cliquez sur le bouton "Ajouter une ressource Web" et indiquez l'adresse de la ressource Web voulue. WLangage.book Page 220 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 221 5. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtec- tion de l'encodage est automatique. 6. Validez 5.2.3 Dtection automatique de l'encodage Si l'encodage est <Non dfini>, une dtection auto- matique de l'encodage est effectue : cas d'une rfrence Web : le serveur est inter- rog. L'encodage est fourni par le serveur. cas d'une rfrence fichier : si le fichier est en UTF8, l'encodage est automatiquement pass en UTF8. 5.3 Manipulation d'objets Javascript externes depuis le WLangage Le WLangage en mode "Navigateur" permet l'inter- face avec les API Web telles que celles proposes par Google ou Yahoo. L'interaction avec les compo- sants externes proposs par ces sites est simpli- fie. Il est possible d'allouer des objets Javascript exter- nes en code Navigateur crit en WLangage. L'utilisation d'objets Javascript externes ne nces- site plus obligatoirement l'usage du langage Javascript : la programmation peut s'effectuer en WLangage. Exemple : pour rcuprer une liste de tches dans un agenda Google : 1. Intgrez dans la page l'interface de programma- tion de l'agenda Google. Affichez l'onglet "Avanc" de la description de la page. Dans l'onglet "HTML", ajoutez la ligne de code sui- vante dans le code HTML de l'en-tte de page : <script type="text/javascript">goo- gle.load("gdata", "1");</script>. Ce code est fourni dans la documentation Goo- gle. Dans l'onglet "Javascript", cliquez sur le bouton "Ajouter une ressource Web". Saisissez l'adresse permettant d'inclure le service d'agenda : http:// www.google.com/ jsapi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx (le code de la cl correspond votre code personnel). 2. Saisissez le code navigateur permettant de rcu- prer la liste des tches. MonServiceAgenda est ... un objet dynamique MonServiceAgenda = ... allouer un objet ... "google.gdata.calendar.CalendarSer- vice" MesTches est un tableau dynamique MesTches = ... MonServiceAgenda:feed:entry // Parcours du tableau pour // remplir la liste POUR i = 1 A Dimension(MesTches) ListeAjoute(LISTE_Choix_Tche,... MesTches[i]:getTitle():getText()) FIN WLangage.book Page 221 Mardi, 23. avril 2013 1:59 13 222 Partie 5 : Fonctionnalits spcifiques au Web 6. AJAX 6.1 Prsentation La technologie AJAX est disponible nativement dans WebDev, et dans les sites PHP dvelopps avec WebDev. Que signifie AJAX et quel est son intrt ? AJAX (pour Asynchronous Javascript and XML) per- met de rafrachir uniquement les donnes modi- fies dans une page HTML sans rafficher la totalit de la page. Par exemple, si certains l- ments prsents dans une page affiche (le contenu du panier, les caractristiques d'un produit, une liste de villes, une carte gographique, ) doivent tre modifis, seuls ces lments seront rafrachis. Le serveur n'aura pas envoyer la page entire sur le poste de l'internaute. Cette technologie a de multiples avantages : le serveur est moins sollicit. Il peut alors suppor- ter un plus grand nombre de connexions simulta- nes. les informations qui circulent sont de taille rduite. la dure de transmission est plus courte. l'affichage pour l'internaute est immdiat et sans effet visuel. AJAX peut tre utilis deux niveaux diffrents dans un site WebDev : AJAX automatique et immdiat : un simple clic suffit pour accder aux avantages AJAX. Le code reste le mme. AJAX programm : utilisation des fonctions de gestion AJAX pour les traitements complexes. Remarque : Seuls les navigateurs rcents suppor- tent la technologie AJAX (Internet Explorer 5.5 et suprieur, FireFox 1.0 et suprieur, Netscape 7 et suprieur, Opera 8 et suprieur, Safari 1.2 et sup- rieur, ). La fonction AJAXDisponible permet de savoir si le navigateur en cours supporte la techno- logie AJAX. Si un traitement utilisant la technologie AJAX est excut sur un navigateur ne supportant pas cette technologie, le traitement s'excute "comme si" il n'utilisait pas la technologie AJAX (rafrachissement de la page entire par exemple). 6.2 AJAX automatique et immdiat 6.2.1 Prsentation Le schma suivant prsente l'utilisation automati- que et immdiate de AJAX dans un site WebDev : Par exemple, une page d'un site permet de conna- tre diffrentes caractristiques d'un pays (capitale, devise, drapeau, situation, ). En fonction du pays slectionn par l'internaute, les informations cor- respondantes sont affiches. Action de l'internaute. Dans notre exemple, slection du pays dans la combo "Slection- ner le pays souhait". Envoi de la requte au serveur. Excution de la requte : recherche des caractristiques du pays slectionn. Envoi du rsultat de la requte : sans AJAX : toute la page est envoye. avec AJAX : seules les caractristiques du pays sont envoyes. Affichage des caractristiques du pays : sans AJAX : toute la page est raffiche. avec AJAX : seuls les champs contenant les caractristiques du pays sont rafra- chis. WLangage.book Page 222 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 223 Pour utiliser AJAX dans ce site, le traitement ser- veur "A chaque modification" du champ "Slection- ner le pays souhait" est pass en mode AJAX. Un simple clic ! Le code reste le mme. 6.2.2 Traitements permettant dutiliser auto- matiquement AJAX Les traitements suivants peuvent passer en mode AJAX automatique : traitement serveur "Clic" d'un champ bouton, d'un champ lien, d'un champ image clicable ou d'un champ rglette. traitement serveur "A chaque modification" d'un champ liste, d'un champ combo, d'un champ interrupteur ou d'un champ slecteur. Pour passer un traitement en mode AJAX automati- que, cliquez simplement sur le terme "AJAX" pr- sent dans le bandeau du traitement : Traitement n'utilisant pas la technologie AJAX Traitement utilisant la technologie AJAX Remarque : Si un traitement utilisant la technolo- gie AJAX est excut sur un navigateur ne suppor- tant pas cette technologie, le traitement s'excute "comme si" il n'utilisait pas la technologie AJAX (rafrachissement de la page entire par exemple). 6.2.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX Grce AJAX et sans aucune programmation spci- fique, il est possible de modifier les caractristi- ques des lments suivants : Valeur Couleur de la police Couleur de fond Visibilit Champ de saisie X (Texte saisi) X (Couleur du texte saisi) X (Couleur de fond du texte saisi) X Champ d'affichage format X (Texte affich) X (Couleur du texte affi- ch) X (Couleur de fond du texte affich) X Table X (Contenu des lignes) X (Couleur du contenu des lignes) X (Couleur de fond des lignes paires et impai- res) X Zone rpte X (Contenu des champs) X (Couleur du contenu des champs) X (Couleur de fond des champs) X Liste X (lments lists et lments slection- ns) X (Couleur des l- ments lists) X X Combo X (lments lists et lments slection- ns) X (Couleur des l- ments lists) X X WLangage.book Page 223 Mardi, 23. avril 2013 1:59 13 224 Partie 5 : Fonctionnalits spcifiques au Web Remarques : Le nombre de caractristiques gres automati- quement sera amen crotre rgulirement au fil des versions. Les lments non-prsents dans cette liste ne peuvent pas tre manipuls automatiquement par AJAX. Pour modifier d'autres caractristiques, il est ncessaire d'utiliser AJAX programm. * L'utilisation du champ Rglette en mode AJAX est spcifique. Pour plus de dtails, consultez le para- graphe "Spcificit". Jauge automatique AJAX Une jauge d'attente automatique peut tre affiche dans une page pendant qu'un traitement AJAX s'effectue. En effet, les traitements AJAX n'affichent pas la jauge habituelle de chargement de page du navigateur : il n'y a plus de chargement de page en AJAX Pour afficher une jauge automatique AJAX : 1. Ajoutez un champ cellule, image, libell ou libell HTML la page. 2. Personnalisez ce champ. Ce champ peut conte- nir du texte ("Chargement en cours..." par exemple) et/ou une image anime. 3. Affichez l'onglet "Dtail" de la description de la page (option "Description" du menu contextuel de la page). 4. Dans la zone "Jauge automatique AJAX", slec- tionnez le champ que vous avez ajout et dfinis- sez sa position. 6.2.4 Spcificits Spcificits du champ Rglette Lorsqu'une table ou une zone rpte est mise jour automatiquement en mode AJAX (lors du clic d'un bouton excutant du code AJAX par exemple), le contenu de la rglette associe cette table ou cette zone rpte est galement mise jour auto- matiquement. Interrupteur X (Options slection- nes) X (Couleur des options) X X Slecteur X (Option slectionne) X (Couleur des options) X X Image X (Image) X Image clicable X (Image) X Vignette X (Image) X Graphe X (Graphe) X Libell X X X X Libell HTML X X X X Bouton X (Libell) X (Couleur du libell) X X Lien X (Libell) X (Couleur du libell) X X Rglette * X (Contenu) Champ cellule X X Page X Arbre X X X X WLangage.book Page 224 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 225 Remarque : Pour que les clics sur la rglette soient galement en mode AJAX, il suffit : soit de cocher l'option "Mode AJAX" dans la fen- tre de description du champ rglette, onglet "Gnral". soit de passer le traitement de clic du champ rglette en mode AJAX automatique (clic sur le terme "AJAX" prsent dans le bandeau du traite- ment). Table / zone rpte et mode AJAX Lorsqu'une table ou une zone rpte est en mode AJAX (mode AJAX spcifi dans la description du champ), la visualisation des lignes de la table et des rptitions de la zone rpte ne se fait plus l'aide d'une rglette mais l'aide de l'ascenseur vertical. Pour plus de dtails sur les tables AJAX, consultez Les tables AJAX. Remarque : Sous Mozilla Firefox version 1.7.8, les ascenseurs ne sont pas disponibles Caractres spciaux Certains caractres spciaux sont automatique- ment remplacs par une chane vide ("") en mode AJAX. Ces caractres sont les caractres dont le code ASCII est strictement infrieur 32, l'exclu- sion des caractres 9, 10 et 13 (respectivement TAB et RC). Ces caractres spciaux sont gnralement inutili- ss dans les chanes. 6.3 AJAX Programm 6.3.1 Prsentation Le schma suivant prsente l'utilisation de "AJAX programm" dans un site WebDev : 6.3.2 Fonctions de gestion AJAX Pour grer les traitements plus complexes, WebDev propose plusieurs fonctions AJAX (classes ici par ordre d'intrt) : Excution d'un traitement navigateur (fonc- tion AJAXExcute ou AJAXExcuteAsyn- chrone). Demande d'excution d'une procdure ser- veur. Excution de la procdure serveur. Gnration du rsultat. Le rsultat de la pro- cdure sera exprim sous forme d'une chane de caractres ou d'un document XML. Envoi du rsultat de la procdure (Mot-cl RENVOYER). Analyse du rsultat de la procdure. Affichage des informations modifies. Seuls les champs ncessaires sont rafrachis. AJAXDisponi- ble Permet de savoir si la technologie AJAX est utilisable dans le naviga- teur en cours. AJAXExcute Excute une procdure serveur sans rafrachir la page. Cette fonction est bloquante. Tant que le rsultat de la procdure excu- te n'est pas rcupr, aucun autre traitement n'est excut. AJAXExcuteA- synchrone Excute une procdure serveur sans rafrachir la page. Cette fonction n'est pas bloquante. Les autres traitements continuent de s'excuter normalement (que le rsultat de la procdure excute soit rcupr ou non). AJAXAppelA- synchroneEn- Cours Permet de savoir si une proc- dure serveur appele par la fonc- tion AJAXExcuteAsynchrone est en cours d'excution AJAXAnnuleAp- pelAsynchrone Annule l'excution automatique de la procdure navigateur appe- le par la fonction AJAXExcuteA- synchrone. WLangage.book Page 225 Mardi, 23. avril 2013 1:59 13 226 Partie 5 : Fonctionnalits spcifiques au Web Grce ces fonctions, il est possible d'excuter une procdure serveur partir d'un traitement naviga- teur. Attention : Il est ncessaire d'assurer la cohsion des informations stockes sur le serveur et celles affiches sur le poste des internautes. Par exem- ple, si des donnes sont modifies, il est nces- saire de modifier ces donnes la fois sur le serveur et la fois sur la page affiche dans le navigateur. 6.3.3 Procdures pouvant tre appeles par AJAX Par dfaut, pour scuriser les sites WebDev, les procdures serveurs sont protges de tout appel illgal (tentative de dtournement de session par exemple). Pour excuter une procdure serveur partir d'un traitement navigateur (fonction AJAXExcute ou AJAXExcuteAsynchrone), il est donc ncessaire d'autoriser l'appel de cette proc- dure par AJAX. Pour permettre l'appel d'une procdure serveur par AJAX, cliquez simplement sur le terme "AJAX" pr- sent dans le bandeau de la procdure : Procdure ne pouvant pas tre appele par AJAX Procdure pouvant tre appele par AJAX 6.3.4 Fonctions WLangage non utiles en AJAX Toutes les fonctions disponibles en WebDev ser- veur sont utilisables en AJAX. Cependant, les fonc- tions suivantes n'ont aucun intrt en AJAX. Ces fonctions ne sont donc pas disponibles en AJAX. Cette liste peut voluer. Il est conseill de consulter la documentation de chaque fonction. Le sigle "AJAX" indique si la fonction est disponible en AJAX ou non. ChaneAffiche Affiche une chane de carac- tres (ou un buffer) dans le navigateur ContexteFerme Ferme un contexte de page ContexteOuvre Ouvre un nouveau contexte de page sans renvoyer les informations vers le naviga- teur FichierAffiche Affiche un fichier sur le navi- gateur de l'internaute FramesetActualise Actualise un frameset affi- ch dans le navigateur de l'internaute partir du con- texte prsent sur le serveur FramesetAffiche Affiche un frameset WebDev dans le navigateur de l'inter- naute FramesetUtilise Affiche un frameset WebDev dans le navigateur de l'inter- naute et ferme tous les con- textes de pages et de frameset en cours InitFentre Remet zro (ou non) les champs de la page en cours et lance les traitements d'ini- tialisation des champs PageInitialisation Remet zro (ou non) les champs de la page en cours et lance les traitements d'ini- tialisation des champs PageUtilise Affiche une page WebDev dans le navigateur de l'inter- naute et ferme tous les con- textes de pages en cours ScriptAffiche Appelle un script externe (par exemple .php, .asp, .mhtml ou .mht) et renvoie la page rsultat dans la fentre en cours du navigateur UploadCopieFichier Enregistre sur le serveur un fichier "upload" par l'inter- naute UploadNomFichier Connatre le nom d'un fichier "upload" par l'internaute Utilise Affiche une page dans le navigateur de l'internaute WLangage.book Page 226 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 227 7. GADGETS VISTA 7.1 Prsentation Windows Vista permet l'installation de "Gadgets" sur le bureau. Ces gadgets sont en fait des pages HTML, facilement crables avec WebDev. WebDev permet de crer des gadgets Vista partir de sites statiques ou de sites AWP. Un gadget Vista peut tre constitu de trois types de pages. Ces trois types de pages doivent respec- ter des dimensions spcifiques : Page principale : C'est la page qui apparat dans le volet des gadgets. Cette page doit avoir une largeur comprise entre 25 et 130 pixels, et une hauteur au minimum de 60 pixels. Page de configuration : Cette page est option- nelle. Cette page permet de configurer le gadget et s'ouvre l'aide d'une icne spciale. Cette page contient automatiquement 2 boutons "OK" et "Annuler". Cette page doit avoir une largeur de 278 pixels. Page Flyout : Pages libres pouvant tre ouvertes depuis la page principale ( l'aide d'un bouton, d'un lien, ?). La taille maximale pour ce type de page est de 400 pixels en hauteur et en largeur. WebDev permet de crer ces trois types de pages, et de gnrer le fichier ".gadget". Ce fichier pourra tre fourni aux utilisateurs du gadget pour l'installer sur leur poste (par exemple, gadgets disponibles en tlchargement sur un site). Remarque : Les caractristiques des trois types de pages sont dtailles dans Programmation des Gadgets Vista on page 228. 7.2 Cration du Gadget 7.2.1 Les tapes Pour crer un gadget Vista : 1. Ouvrez ou crez un projet WebDev. 2. Crez une configuration spcifique pour le dve- loppement de votre Gadget Vista. Pour cela, sous le volet "Projet", dans le groupe "Configuration de pro- jet", droulez "Nouvelle configuration" et slection- nez loption "Gadget Vista". 3. Crez les pages de votre gadget Vista. Ces pages peuvent tre des pages statiques ou des pages dynamiques AWP. 4. Dans la description des pages du gadget (onglet "Gnral"), indiquez le type de la page dans le gadget : Page principale, page configuration ou page Flyout. 5. Programmez le fonctionnement de vos pages. Les pages de type "Gadget Vista" proposent des traitements spcifiques. 6. Gnrez le gadget Vista. Il suffit de cliquer sur "Gnrer" dans le volet "Accueil". Gadget Vista en mode AWP : Pour que les Gadgets Vista en mode AWP fonc- tionnent, il est ncessaire d'utiliser un serveur d'application WebDev version 120048 minimum. Les codes serveur seront excuts en mode Ajax automatique (si le code existe en mode Ajax). Il est ncessaire de dployer le site AWP corres- pondant au gadget sur un serveur d'application WebDev. Limitations Les champs suivants ne peuvent pas tre utiliss dans un gadget Vista : champ TreeView, champ Java, champ Plan de site, champ Chemin de Navi- gation. Le champ image dans une zone rpte en mode gnr ou en mode base de donnes (mmo) n'affi- che pas d'image. WLangage.book Page 227 Mardi, 23. avril 2013 1:59 13 228 Partie 5 : Fonctionnalits spcifiques au Web 7.2.2 Gnration du gadget Pour gnrer un gadget Vista : 1. Affichez si ncessaire la configuration corres- pondant au Gadget Vista (double-cliquez sur le nom de la configuration dans lexplorateur de projet). 2. Dans le volet "Accueil", cliquez sur "Gnrer". L'assistant se lance. 3. Indiquez les options de description du gadget : Nom du gadget Version du gadget (de la forme wwww.xxxx.yyyy.zzzz) Nom de l'auteur ou de la socit URL et texte du lien Logo de la socit Copyright Image du gadget. L'image de survol est affiche lorsque le gadget est dplac. Description du gadget. 4. Slectionnez les pages inclure dans le gadget. La page principale est automatiquement slection- ne. 5. Slectionnez les langues du gadget. 6. Si le gadget Vista utilise des pages AWP, indi- quez les caractristiques du serveur (nom du ser- veur, rpertoire virtuel, ...). 7. Validez. Le gadget est cr dans le sous-rper- toire "EXE" du projet (dans le rpertoire correspon- dant la configuration de projet). Le gadget est un fichier d'extension ".gadget". Si le poste de dvelop- pement est un poste sous Windows Vista, vous avez la possibilit d'installer directement le gadget pour le tester. 7.3 Programmation des Gadgets Vista 7.3.1 Prsentation WebDev permet de crer simplement des gadgets pour Windows Vista. Un gadget est un "mini site" contenant des pages spcifiques. Pour grer ces pages et pour exploiter toutes les proprits des gadgets Vista, WebDev propose : des traitements spcifiques associs aux diff- rents types de pages d'un gadget Vista. des fonctions WLangage spcifiques permettant de grer certaines spcificits des gadgets Vista. 7.3.2 Les diffrents types de pages Trois types de pages sont utilisables dans un gadget : Page de prsentation Page de paramtrage Page flyout Ces trois types de pages possdent des traite- ments spcifiques. Remarque : si les pages du gadget Vista sont des pages statiques, seuls des traitements navigateur sont disponibles. Si les pages du gadget sont des pages AWP, les traitements serveur classiques s'ajoutent aux traitements navigateur. Page de prsentation La page de prsentation est la page affiche dans le volet des gadgets sous Windows Vista. Cette page doit avoir une largeur comprise entre 25 et 130 pixels, et une hauteur au minimum de 60 pixels. Pour raliser un gadget dtour, spcifiez une image de fond. Cette image doit grer le mode transparent (image au format GIF ou PNG par exemple). Cette page peut permettre d'afficher des pages de type "Flyout". Il suffit d'utiliser dans le code du bou- ton concern l'appel la fonction GadgetAffiche- Flyout. Les codes navigateur associs cette page sont les suivants : Chargement (onload) de la page Code navigateur excut lors de l'affichage de la page dans le navigateur (ralis par exemple par les fonctions PageAffiche ou PageActualise) Dchargement (onunload) de la page Code navigateur excut lors de l'affichage d'une nouvelle page dans le navigateur. Ancrage de la page dans le volet Windows Code navigateur excut lorsque le gadget Vista est "dock" au volet Windows des gadgets. Sortie de la page du volet Windows Code navigateur excut lorsque le gadget Vista est "ddock" (sorti) du volet Windows des gad- gets. Aprs la fermeture de la fentre de configura- tion Code navigateur excut aprs la fermeture de la page utilise pour configurer le gadget Vista. Ouverture de la fentre de configuration Code navigateur excut lors de l'ouverture de page utilise pour configurer le gadget Vista. Souris en dehors Code navigateur excut lorsque le curseur de la WLangage.book Page 228 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 229 souris est en dehors du gadget Vista. Page de configuration La page de configuration permet de paramtrer le gadget Vista. Cette page est affiche par le bouton de type configuration (icne outils) prsent dans le gadget. Ce bouton apparat automatiquement si une page de configuration est prsente. Ce bouton n'est pas paramtrable. Cette page doit avoir une largeur de 278 pixels. La page de paramtrage contient automatique- ment un bouton de validation et un bouton d'annu- lation. Dans la page de configuration, il est ncessaire de spcifier une police dans les styles : si la police est "non dfini", la police par dfaut sera utilise. Dans ce cas, des diffrences de mise en page entre l'di- tion et l'excution pourront tre observes. La couleur de fond de la page de configuration est le gris. Cette couleur ne peut pas tre modifie. Il est possible d'utiliser une image de fond. Si cette image de fond gre la transparence, il est conseill de ne pas crire sur les zones transparentes. Les codes navigateur associs cette page sont les suivants : Chargement (onload) de la page Code navigateur excut lors de l'affichage de la page dans le navigateur (ralis par exemple par les fonctions PageAffiche ou PageActualise) Dchargement (onunload) de la page Code navigateur excut lors de l'affichage d'une nouvelle page dans le navigateur. Validation de la fentre de configuration Code navigateur excut lors de l'appui sur le bouton de validation. Annulation de la fentre de configuration Code navigateur excut lors de l'appui sur le bouton d'annulation. Remarque : Les fonctions GadgetChargeParam- tre et GadgetSauveParamtre permettent de grer la mmorisation des paramtres. Page Flyout Les pages flyout sont des pages standard. Ces pages sont des pages libres pouvant tre ouvertes depuis la page principale ( l'aide d'un bouton, d'un lien, ...). La taille maximale pour ce type de page est de 400 pixels en hauteur et en largeur. La couleur de fond des pages flyout est le blanc. Cette couleur ne peut pas tre modifie. Dans les pages flyout, il est ncessaire de spcifier une police dans les styles : si la police est "non dfini", la police par dfaut sera utilise. Dans ce cas, des diffrences de mise en page entre l'dition et l'excution pourront tre observes. Les pages flyout possdent les traitements suivants : Chargement (onload) de la page Code navigateur excut lors de l'affichage de la page dans le navigateur (ralis par exemple par les fonctions PageAffiche ou PageActualise) Dchargement (onunload) de la page Code navigateur excut lors de l'affichage d'une nouvelle page dans le navigateur. Ces pages peuvent tre manipules grce aux fonc- tions GadgetAfficheFlyout et GadgetFermeFlyout. 7.3.3 Les fonctions WLangage Les fonctions Gadgets sont les suivantes : GadgetAfficheFlyout Affiche dans une zone popup une page du gadget Vista. GadgetChargeParamtre Charge une valeur persistante dans un gadget Vista. Cette valeur a t prcdemment sauvegarde grce la fonction GadgetSauveParam- tre. GadgetFermeFlyout Ferme la zone popup dun gadget vista. GadgetSauveParamtre Sauve une valeur persistante dans un gadget Vista. Cette valeur pourra tre lue ensuite avec la fonction GadgetChargeParamtre. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 229 Mardi, 23. avril 2013 1:59 13 230 Partie 5 : Fonctionnalits spcifiques au Web 8. UTILISATION DE SITES DCONNECTS 8.1 Prsentation WebDev permet dindiquer quun site ou un ensem- ble de pages peuvent fonctionner en mode dcon- nect (sans connexion Internet). Si le site peut fonctionner en mode dconnect, lensemble des ressources (pages, images, fichier .js, fichier .css) utilises par le site ou les pages est automatiquement mis en cache par le navigateur sur le poste de linternaute. Ainsi le site peut tre utilis sans se reconnecter Internet. La fonction navigateur NavigateurEstConnect per- met de savoir si le navigateur est en mode con- nect ou en mode dconnect et d'adapter le comportement du site. Cette fonctionnalit utilise la gestion des manifes- tes disponible avec HTML 5. Certains navigateurs (notamment Internet Explorer 8 ou des navigateurs anciens) ne grent pas cette fonctionnalit. Remarque : La mise en cache de site utilise est spcifique HTML 5 : Avant l'utilisation de HTML 5, seules les pages visites pouvaient tre mises en cache. Grce HTML 5, la mise en cache se fait la pre- mire connexion un site. Un fichier manifeste spcifique permet de lister toutes les ressources mettre en cache. 8.2 Mise en place 8.2.1 Dfinition des ressources mettre en cache La dfinition des ressources mettre en cache est ralise sous l'environnement de dveloppement. Pour indiquer les pages disponibles en mode dconnect : 1. Ouvrez si ncessaire le projet WebDev. 2. Sous le volet "Projet", dans le groupe "Web", slectionnez l'option "Cache (mode dconnect"). 3. Dans la fentre qui s'ouvre, slectionnez les pages mettre en cache. Attention : Seules les pages dynamiques AWP, PHP et les pages statiques peuvent tre mises en cache. Fermez la fentre. A la prochaine recompilation du projet, le fichier "<Nom_Projet>.manifest" est gnr automatique- ment dans le sous-rpertoire de la langue prsent dans le rpertoire _WEB du projet. Ce fichier va contenir les pages spcifies et toutes leurs dpen- dances (images, feuilles de styles CSS, fichiers Javascript, ...). 8.2.2 Configuration du serveur L'utilisation d'un manifeste ncessite une configu- ration spcifique du serveur. Il est ncessaire de configurer un type mime spcifique : ".manifest" associ "text/cache-manifest". Pour tester votre site, cette configuration doit tre effectue sur le poste de dveloppement. Remarques : Dans cette version, la configuration du type mime doit tre effectue manuellement. Dans une prochaine version, cette configuration sera automatique. La configuration du type mime est automatique. Ce type mime n'est pas encore configur chez tous les hbergeurs. 8.2.3 Technique de programmation Un site en cache peut tre utilis par exemple : pour simuler une application iPhone (cration d'une application Web qui fonctionne unique- ment en mode hors connexion). pour grer un site qui perdrait la connexion Inter- net. Voici quelques conseils de programmation : Le principe est d'utiliser majoritairement du code navigateur. En effet, hors connexion, seul ce code peut tre excut. Il est cependant possible d'uti- liser du code serveur via la fonction AjaxExcute (qui permet d'excuter du code serveur dans un traitement navigateur). Les champs disponibles sont uniquement des champs navigateur. Seuls les champs liste, bou- ton, champ de saisie, libell, image, lien, menu, WLangage.book Page 230 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 231 interrupteur et slecteur peuvent tre utiliss dans des pages en mode dconnect. Les boutons et liens ne doivent pas tre de type "Submit". Il est cependant possible d'utiliser l'action "Afficher la page XXX". Si l'enregistrement de donnes est ncessaire en mode dconnect, il est ncessaire d'utiliser une base de donnes locale. La norme HTML 5 per- met aux sites Internet d'utiliser une base de don- nes locale gre par le navigateur. Pour plus de dtails, consultez SQL Base de donnes locale un navigateur. Si le site doit pouvoir fonctionner en mode con- nect et dconnect, il est possible d'utiliser la fonction NavigateurEstConnect en code naviga- teur pour savoir si un code serveur peut tre ou non effectu. En cas de dconnexion, une proc- dure ou un traitement spcifique peut tre lanc pour ne pas effectuer le code serveur. Utilisez les traitements optionnels de la page "Passage en mode dconnect", "Passage en mode connect" et "A chaque changement d'tat du cache HTML" pour raliser les traitements ncessaires au changement d'tat (rcupration des donnes de la base de donnes locale par exemple). 8.2.4 Test du site Pour tester un site en cache : 1. Configurez si ncessaire le serveur du poste de dveloppement. 2. Lancez le test du site (Go du site). Toutes les pages ncessaires sont mises en cache. 3. Utilisez l'option "Travailler hors connexion" du navigateur. 4. Testez votre site. 8.3 Accs en mode local une base de donnes (SQLite) WebDev permet un site de crer et d'accder une base de donnes cre par le navigateur sur le poste de l'internaute en code navigateur. Cette fonctionnalit permet par exemple de saisir des donnes en mode dconnect pour les trans- mettre au serveur ds que la connexion Internet sera rtablie. Attention : Cette fonctionnalit est disponible uni- quement sous certains navigateurs : Chrome, Safari, Opra 11, ... 8.3.1 Comment grer une base de donnes locale ? 1. Utilisez la fonction SQLConnecte en code naviga- teur pour vous connecter la base de donnes locale. Par exemple : 2. Utilisez la fonction SQLExec pour raliser des requtes sur la base de donnes locale Attention : Les requtes SQL sont excutes de manire asynchrone. La syntaxe de la fonction SQLExec utilise donc une procdure spcifique. Cette procdure est lance la fin de l'excution relle de la requte (quelque soit le rsultat de la requte). Cette procdure navigateur permet de : tester la bonne excution de la requte. La fonc- tion SQLInfoGene est automatiquement excute l'appel de la procdure. Les variables SQL sont donc toutes positionnes. Si une erreur est sur- venue, SQL.erreur sera diffrente de "00000". Le message d'erreur pourra tre connu grce la variable SQL.MesErreur. parcourir le rsultat de la requte. Si de nouvelles requtes sont excutes dans cette procdure (par exemple pour ajouter des enregis- trements), il est possible : soit d'utiliser la mme procdure : le paramtre de cette procdure permet de connatre la requte en cours d'excution. soit d'utiliser une procdure navigateur diffrente pour tester le rsultat de ces nouvelles requtes. Remarques : Lors de la sortie de la procdure navigateur, les valeurs renvoyes par la fonction SQLInfoGene sont rtablies. Si ces valeurs ont t modifies dans la procdure navigateur, elles sont cra- ses. Pour connatre les ordres SQL utilisables, consul- tez la documentation des bases de donnes de type "Web SQL database". // Connexion une base navigateur // nomme "BaseLocale" // La base est cre si elle // n'existe pas SQLConnecte("BaseLocale",... "","","","Web SQL database")) WLangage.book Page 231 Mardi, 23. avril 2013 1:59 13 232 Partie 5 : Fonctionnalits spcifiques au Web 8.3.2 Les fonctions SQL Les fonctions SQL disponibles en code Navigateur sont les suivantes : 8.3.3 Enregistrer en local les donnes d'un site dconnect WebDev permet la mise en place de sites dcon- nects. Si ce type de site doit enregistrer des don- nes pendant la dure de la dconnexion, il est possible d'utiliser une base de donnes locale. Les tapes sont les suivantes : 1. Connexion la base de donnes. La connexion la base de donnes est ralise grce la fonction SQLConnecte. Par exemple : 2. Cration de la base de donnes locale. Avant d'utiliser une base locale, il est ncessaire de la crer. Pour cela, il suffit d'utiliser une requte de type CREATE TABLE. Cette requte doit tre excu- te via la fonction SQLExec. Par exemple : Lorsque la requte "REQ_CREATION" est termine, la procdure _cbRequete est excute. Dans cet exemple, cette procdure permet de grer toutes les requtes excutes et deffectuer un traitement appropri aprs la requte. La requte de cration ne doit tre utilise quune seule fois, en dbut de journe par exemple. Par exemple, la base peut tre cre uniquement si un paramtre spcifique (par exemple "First") n'est pas pass aux pages. 3. Accs aux donnes locales ou distantes. Dans cet exemple, le site peut tre utilis en mode connect ou dconnect. Il doit tre possible d'accder la base locale (en mode dconnect) SQLAvance Passe la ligne suivante (c'est--dire l'enregistrement suivant) du rsultat de la requte. SQLChangeConnexion Modifie la connexion en cours. SQLColonne Renvoie les caractristiques de toutes les colonnes (ou rubriques) : soit d'une table donne. soit d'une requte donne. SQLConnecte Connecte l'application en cours une base de donnes interroger par SQL. SQLDconnecte Ferme la connexion en cours et libre l'espace mmoire utilis par la connexion SQLExec Nomme et excute une requte SQL. SQLFerme Dclare la fin d'excution d'une requte et libre les ressources mmoire alloues lors de l'excution de la requte. SQLInfoGene Initialise les diffrentes variables SQL avec les informations relatives la dernire requte excute SQLLitCol Rcupre le contenu de la colonne spcifie dans le rsultat de la requte, pour la ligne en cours. SQLReqExiste Teste l'existence d'une requte. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. SQLConnecte("","","", ... "RDVClients", "Web SQL database") sRequete est une chane // Code de cration de la table sRequete = [ CREATE TABLE IF NOT EXISTS ... "RendezVous" ("IDRendezVous" INTEGER PRIMARY ... KEY , "DateHeureDebut" ... VARCHAR(16) , "Client" VARCHAR(100) , ... "Adresse" VARCHAR(200) , ... "Resume" LONGVARCHAR ); ] // Excution de la requte SQLExec(sRequete,... "REQ_CREATION",_cbRequete) WLangage.book Page 232 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 233 ou la base distante (en mode connect). Tous les accs (cration, modification, suppression, ...) la base locale doivent tre effec- tus via la procdure SQLExec. Les accs la base distante peuvent toujours tre effectus via les fonctions Hxxx. Il est cependant ncessaire : d'excuter ces fonctions dans un code naviga- teur, donc en AJAX, via la fonction AJAXExcute. d'tre sr que le navigateur est connect (fonc- tion NavigateurEstConnect). Par exemple : Pour rcuprer des enregistrements de la base dis- tante (serveur) dans la base locale (pour linitialiser par exemple), il suffit de : 1. Parcourir les enregistrements et mmoriser les rubriques sous forme de chanes, dans une proc- dure Serveur. 2. Rcuprer cette liste en code navigateur : 3. Parcourir la chane et extraire les informations laide de la fonction ExtraitChane. Les enregistre- ments peuvent ainsi tre ajouts facilement avec une requte dajout (INSERT). De la mme manire, il est possible de rcuprer les donnes de la base locale pour mettre jour la base distante. Il suffit de : 1. Excuter une requte en locale pour rcuprer les enregistrements. Par exemple, pour rcuprer les rendez-vous de la journe : 2. Dans la procdure de vrification lance par la fonction SQLExec, il suffit d'excuter une procdure de mise jour de la base distante grce la fonc- tion AjaxExcute. Dans notre exemple, la procdure navigateur __SynchoniseBase est lance : Remarque : La mise jour de la base de donnes distante peut tre provoque lors de la re-con- nexion au serveur. Lors de la reconnexion au ser- veur, le traitement "Passage en mode connect" est excut. Ce traitement est un traitement optionnel de la page. Pour l'afficher sous l'diteur de code, il suffit de : Afficher le code de la page. Cliquer sur les [...] de la barre de code. Slectionner l'vnement "Passage en mode con- nect". Saisissez le code de mise jour de la base de donnes distante. sRequete est une chane // Le navigateur est connect SI NavigateurEstConnect()... = Vrai ALORS // Enregistre dans la base distante //(serveur) AJAXExecute(SauveDonnes,... SAI_ID,SAI_RESUME) FIN sRequete = [ UPDATE RendezVous SET Resume=%2 WHERE IDRendezVous=%1 ] // Dans tous les cas, enregistre //dans la base locale SQLExec(ChaneConstruit ... (sRequete,gnIDRDVNav,... SAI_RESUME),REQ_SAUVEGARDE,... _cbRequete) PROCEDURE RecupereEnreg() POUR TOUT MonFichier sListe += [RC]+ ... MonFichier.Rubrique1 +TAB + ... MonFichier.Rubrique2 +TAB+ ... MonFichier.Rubrique3 FIN RENVOYER sListe // Rcupre la liste sListe = AJAXExecute(RecupereEnreg) // Excute la requte qui // slectionne les rendez-vous // de la journe sRequete est une chane sRequete = ChaneConstruit ... ("SELECT IDRendezVous,Resume ... FROM RENDEZVOUS WHERE ... DateHeureDebut LIKE '%1%' ORDER ... BY DateHeureDebut ASC;",... DateDuJour()) // Lance la requte SQLExec(sRequete, ... "REQ_SYNCHRONISERDV",_cbRequete) PROCEDURE _SynchroniseBase ... (sRequete) // Tant qu'il existe des rendez-vous // synchroniser TANTQUE SQLAvance(sRequete) = 0 // Synchronise le rendez-vous AJAXExecute(_Synchronise ... UnRendezvousdistant,SQLLitCol ... (sRequete,1), SQLLitCol... (sRequete,2)) FIN WLangage.book Page 233 Mardi, 23. avril 2013 1:59 13 234 Partie 5 : Fonctionnalits spcifiques au Web 9. STOCKAGE LOCAL 9.1 Prsentation Dans un site Web, le stockage local permet de stoc- ker et de rcuprer des valeurs en code navigateur. Ces valeurs pourront tre : partages par toutes les fentres et onglets d'un mme navigateur d'une machine : il sera donc possible de les retrouver aprs avoir ferm puis r-ouvert le navigateur ou dans une autre fentre du navigateur. Dans ce cas, le stockage local est persistant. propres une fentre ou un onglet du navigateur : dans ce cas, les valeurs seront per- dues lors de la fermeture de la fentre du naviga- teur. Par contre, ces valeurs pourront tre lues par les fentres du navigateur ouvertes depuis la fentre o ont t stockes les valeurs. Dans ce cas, le stockage local n'est pas persistant. Remarques : Le stockage de paramtres locaux n'est pas dis- ponible par page. Le stockage de paramtres locaux est disponible uniquement sur les navigateurs rcents (suppor- tant la norme HTML 5). Mme dans le cas du stockage local persistant, le stockage n'est pas partag par les diffrents navigateurs (une valeur stocke sous Internet Explorer ne pourra pas tre rcupre sous Fire- Fox). 9.2 Les fonctions WLangage Les fonctions permettant de raliser un stockage local sont les suivantes : StockageLocalAjoute Ajoute une valeur au stockage local. StockageLoalDisponible Indique si le stockage local est disponible ou non pour le navigateur en cours. StockageLocalNomValeur Renvoie le nom d'une valeur du stockage local. StockageLocalOccurrence Renvoie le nombre de valeurs du stockage local. StockageLocalRcupre Rcupre une valeur du stockage local. StockageLocalSupprime Supprime une valeur du stockage local. StockageLocalSupprimeTout Supprime toutes les valeurs du stockage local. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 234 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 235 10. SSL : TRANSACTIONS SCURISES 10.1 Prsentation Par dfaut, lors de l'utilisation d'une application Internet, les donnes circulant entre le poste de l'internaute et le serveur Web ne sont pas protges : les donnes sont accessibles par tout internaute. La confidentialit des donnes chan- ges n'est pas certifie. Pour assurer la confidentialit des donnes chan- ges, plusieurs systmes existent. Le plus courant est l'utilisation du protocole SSL (Secure Socket Layer). SSL est un protocole de communication d'informa- tions qui permet d'assurer l'authentification, la con- fidentialit et l'intgrit des donnes changes. Ce protocole utilise un moyen de cryptographie reconnu : l'algorithme cl publique RSA. Une cl RSA est le rsultat d'oprations entre nombres pre- miers. Pratiquement : qu'est-ce qui change lorsquune transaction est scurise ? une transaction scurise utilise une adresse spcifique (https au lieu de http). un cadenas apparat automatiquement dans la barre d'tat du navigateur, indiquant au client qu'une transaction scurise est en cours. 10.2 Mettre en place des transactions scurises avec le protocole SSL Pour mettre en place des transactions scurises utilisant le protocole SSL : 1. Sur le serveur Web, crez une cl, par exemple avec le gestionnaire de cls de IIS, si votre serveur Web est IIS. 2. Envoyez le fichier de demande de certificat de cl un organisme de certification de cl (exemple de socit : www.verisign.com). 3. L'organisme renvoie un certificat de cl (opra- tion payante). Ce certificat doit tre install sur le serveur grce au gestionnaire de cls. 4. Il est alors possible d'utiliser les transactions scurises entre le serveur et le client (voir para- graphe suivant). Note : "Verisign" dlivre des certificats de test vala- bles 14 jours, qui permettent de tester si la con- nexion HTTPS est correcte. Ces cls de test permettent de tester le bon fonctionnement des transactions scurises. La procdure complte suivre pour obtenir un cer- tificat SSL est dtaille dans la suite de ce chapi- tre. 10.3 Obtention dun certificat SSL pour IIS2 (2.0 ou +) 10.3.1 Etape 1 : Cration dun certificat Pour crer un certificat : 1. Ouvrez le Gestionnaire des services Internet (option "Dmarrer .. Excuter" : Inetmgr.exe). 2. Slectionnez le site Web sur lequel sappliquera la scurisation (par exemple : "Site Web par dfaut"). 3. Faites un clic droit sur ce site, et slectionnez loption "Proprits" du menu contextuel. 4. Slectionnez longlet "Scurit de rpertoire" : Cliquez sur le bouton "Certificat de serveur ". Un assistant se lance. Choisissez l'option "Crer un certificat". Sur le volet de lassistant "Nom usuel de votre site" : laissez le nom de votre ordinateur. Lassistant cre un fichier texte "certreq.txt" qui permet de demander votre certificat. 5. Quittez les proprits du serveur Web. WLangage.book Page 235 Mardi, 23. avril 2013 1:59 13 236 Partie 5 : Fonctionnalits spcifiques au Web 10.3.2 Etape 2 : Demande de certification La demande de certification se fait un organisme de certification de cl (exemple de socit : www.verisign.com). Cet exemple dcrit la procdure suivre avec l'organisme Verisign. Les tapes sont sensiblement les mmes pour chaque organisme. 1. Dans votre navigateur, tapez : "http://www.veri- sign.com". 2. Cliquez sur "Free Trial". Cette option permet d'obtenir un certificat valide 15 jours gratuitement. 3. Remplissez le petit questionnaire puis cliquez sur "Submit". 4. Suivez pas pas lassistant de certification : Step 1 of 5 : Generate CSR : Cliquez sur "Conti- nue" Step 2 of 5 : Submit CSR : Copiez le contenu du fichier cr prcdemment "certreq.txt" dans la zone de saisie prvue cet effet, puis cliquez sur "Continue". Step 3 of 5 : Complete Application : Le contenu du certificat est list lcran, tapez vos coordon- nes (Attention les accents ne sont pas accepts, la plupart des informations doivent tre les mmes que dans le contenu du certificat. Exemple : la rgion, la socit ). Renseignez bien votre adresse Email, cest cette adresse que vous sera envoy le certificat. Cliquez sur "Accept". Dans lheure qui suit vous recevrez votre certificat. 10.3.3 Etape 3 : Certification du certificat sur le serveur 1. Dans l'e-mail envoy par VeriSign, vous avez le certificat. Slectionnez la partie qui ressemble ceci.i Copiez la partie slectionne dans un nouveau fichier appel par exemple "Certif.cer". 2. Ouvrez le Gestionnaire des services Internet (option "DmarrerExcuter": Inetmgr.exe). 3. Slectionnez le site Web sur lequel sappliquera la scurisation (par exemple : "Site Web par dfaut"). 4. Faites un clic droit sur ce site, slectionnez loption "Proprits". 5. Slectionnez longlet "Scurit de rpertoire" : Cliquez sur le bouton "Certificat de serveur " puis suivez lassistant. Choisissez l'option "Traiter la demande en attente et installer le certificat". Slectionnez le fichier que vous venez de crer (Certif.cer). Terminez lassistant. Note importante : Si vous avez dj fait un certificat de test pour cette machine : Enlevez le certificat qui a expir (Dans lassistant de ltape 1, choisir l'option "Supprimer le certifi- cat"). Changez le nom de votre machine (car 2 certifi- cats de tests ne peuvent pas tre dlivrs pour la mme machine = mme nom). Recommencez partir de ltape 1. -----BEGIN CERTIFICATE----- MIICBzCCA- bECEFi+J6vFjN+EkkfCKLgi6uUwDQYJKoZIhvc NAQEEBQAwgakxFjAUBgNVBAoTDVZlcmlTaWduLCB JbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnk gUmVmLiBMaWFiLiBMVEQuMUYwRAYDVQQLEz1G b3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5 nIG9ubHkuIE5vIGFzc3VyYW 5jZXMgKEMpVlMxOTk3MB4XDTAwMDkwMTAwMD AwMFoXDTAwMDkxNTIzNTk1OVowZDELMAkGA1U EBhMCRlIxEjAQBgNVBAgTCUxBTkdVRURPQzEUMB IGA1UEBxQLTU9OVFBFTExJRVIxDDAKBgNVBAoUA 1BDUzEPMA0GA1UECxQGV0VCREVWMQwwCgYDV QQDFANtcjIwXDANBgkqhkiG9w0BAQEFAANLADBIA kEAmqKCTidFBZEwI0Q7WPTBlQzlacQi5nwjNndrW. U2tjGMElrY0IxoduwTgRX+DY42IuptGERQApb5NCx /4/3iBrQIDAQABMA0GCSqGSIb3DQEBBAUAA0 EABT7REV9bLiq3EFiug+a/ irlbYI7aNiuITsdSVO7j34baFtx aa2jTE4JoGrNhrWTQZgBl1GOMpuMef/ MuwXHO1A== -----END CERTIFICATE----- WLangage.book Page 236 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 237 10.4 Insrer des transactions scurises par SSL dans un site WebDev Dans un site Internet / Intranet, toutes les transac- tions ne contiennent pas obligatoirement des don- nes sensibles : il suffit de scuriser uniquement le transfert de donnes sensibles (transfert du numro de carte bancaire par exemple). Attention : la mise en place d'une transaction scu- rise dans un site WebDev suppose que toutes les formalits lies au protocole SSL ont t effec- tues. 10.4.1 Principe La mise en place d'un mode scuris est ralise lors de l'ouverture d'une nouvelle page par un bou- ton ou un lien, grce la fonction SSLActive du WLangage. Ds l'ouverture de la page scurise, toutes les actions et ouvertures de pages suivantes seront faites en mode scuris, quels que soient les lments utiliss (lien, table, zone de clicage). La fin du mode scuris est effectue lors de l'utili- sation de la fonction SSLActive dans le code d'un bouton ou dun lien permettant d'ouvrir une nou- velle page. 10.4.2 Mise en place Pour ouvrir une page en mode scuris : 1. Crez un bouton permettant d'ouvrir une page. Cette page peut tre ouverte soit par une action dfinie dans la description du bouton, soit par pro- grammation en code serveur. Les caractristiques de ce bouton sont : Type : "Envoyer la valeur au serveur" ou "Aucune". Action : "Afficher la page XXX" (ou "Aucune" si l'ouverture de page se fait par programmation). Destination : "Navigateur en cours" pour ouvrir la page dans le navigateur en cours. "Nouveau navigateur" pour ouvrir la page dans un nouveau navigateur. 2. Dans le code navigateur de clic sur le bouton, saisissez le code suivant : 3. Si ncessaire (action non dfinie dans la des- cription du bouton), dans le code de clic serveur, utilisez la fonction PageAffiche pour afficher la page voulue en mode scuris. 4. La page ouverte par le bouton sera en mode scuris. Ce mode scuris sera conserv jusqu'au passage explicite en mode normal. 10.4.3 Revenir en mode normal (transaction non scurise) dans le navigateur en cours Pour revenir en mode normal (transaction non scurise) dans le navigateur en cours : 1. Crez un bouton permettant d'ouvrir une page. Cette page peut tre ouverte soit par une action dfinie dans la description du bouton, soit par pro- grammation en code serveur. Les caractristiques de ce bouton sont : Type : "Envoyer la valeur au serveur" ou "Aucune". Action : "Afficher la page XXX" (ou "Aucune" si l'ouverture de page se fait par programmation). Destination : "Navigateur en cours" pour ouvrir la page dans le navigateur en cours. "Nouveau navigateur" pour ouvrir la page dans un nouveau navigateur. 2. Dans le code navigateur de clic sur le bouton, saisissez le code suivant : 3. Si ncessaire (action non dfinie dans la des- cription du bouton), dans le code de clic serveur, utilisez la fonction PageAffiche pour afficher la page voulue en mode non scuris. 4. La page ouverte par le bouton sera en mode non scuris. Ce mode non scuris sera conserv jusqu'au passage explicite en mode scuris. Cas particulier : Ouverture d'une page en mode scuris avec la fonction NavigateurOuvre : 1. Crez une variable globale (adrPage par exem- ple) dans la page de dpart (non scurise). 2. Initialisez cette variable avec l'adresse scurise de la page : 3. Dans le code voulu, utilisez la fonction : SSLActive(Vrai) SSLActive(Faux) adrPage = PageAdresse(... <NomPageDpart>, paScurise) NavigateurOuvre(AdrPage) WLangage.book Page 237 Mardi, 23. avril 2013 1:59 13 238 Partie 5 : Fonctionnalits spcifiques au Web 11. JSON 11.1 Prsentation JSON (JavaScript Object Notation Notation Objet issue de JavaScript) est un format lger d'change de donnes. Bas sur le JavaScript, JSON est un format texte indpendant de tout autre langage. JSON se base sur deux structures : une collection de couples nom / valeur, interpr- te en WLangage par des structures. une liste de valeurs ordonnes, interprte en WLangage par des tableaux. JSON et WebDev WebDev permet : d'obtenir des informations au format JSON dans un site WebDev. de crer des pages WebDev renvoyant des infor- mations au format JSON. Il est par exemple possi- ble de crer un site fournisseur de services JSON (par exemple service de suivi de colis). 11.2 Obtenir des informations au format JSON 11.2.1 Fonctionnement Pour obtenir des informations au format JSON, WebDev permet d'excuter une page renvoyant des informations au format JSON. Deux fonctions WLangage sont disponibles : JSONExcute : Appelle une URL serveur du mme domaine qui retourne des donnes au for- mat JSON (JavaScript Object Notation). JSONExcuteExterne : Appelle une URL serveur externe qui retourne des donnes au format JSON (JavaScript Object Notation). Les donnes sont traites dans une procdure spcifique. 11.2.2 Exemple dutilisation de la fonction JSONExcute Le code suivant permet d'excuter une page AWP pour obtenir la liste des contacts au format JSON. Les tapes sont les suivantes : 1. Dclaration d'un objet dynamique. Cet objet dynamique contiendra le rsultat au format JSON. 2. Appel de la fonction JSONExcute : 3. Traitement des donnes JSON obtenues : Ce traitement est effectu en code navigateur. Prenons un exemple simple : les donnes JSON sont renvoyes sous la forme : Il est possible par exemple de : Rcuprer la valeur dun membre de lobjet dyna- mique. Par exemple : Rcuprer les diffrents lments dune liste de valeurs. Par exemple : 11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne Le principe d'utilisation de la fonction JSONExcu- teExterne est le mme que pour la fonction JSO- NExcute. Dans ce cas, la page permettant de rcuprer les donnes JSON n'est pas dans le mme domaine. Les rgles de scurit Internet imposent d'utiliser une fonction de rappel pour traiter le rsultat de manire asynchrone. La fonction JSONExcuteEx- terne permet donc d'indiquer le nom de la proc- dure excute pour traiter les donnes JSON. MesContacts est un objet dynamique MesContacts = JSONExcute(... RpertoireWeb()+ ... "FR/PAGE_Objet.awp?id=12") {id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] } MesContacts:id POUR i=1 _A_ Dimension(... MesContacts:liste) Listejoute(LISTE_Liste_contacts,... MesContacts:liste[i]:nom+" "+ ... MesContacts:liste[i]:prnom) FIN WLangage.book Page 238 Mardi, 23. avril 2013 1:59 13 Partie 5 : Fonctionnalits spcifiques au Web 239 Exemple : Dans cet exemple, une page AWP est appele et le traitement des donnes est ralis dans la procdure RponseFonction : 11.3 Crer des pages renvoyant des donnes JSON WebDev offre la possibilit de crer un site fournis- seur de services JSON. Les pages permettant d'obtenir les donnes JSON doivent renvoyer une chane de caractres d'un for- mat spcifique. Ces pages peuvent tre des pages AWP ou PHP. 11.3.1 Cas d'une page appele par la fonc- tion JSONExcute Le code suivant permet de renvoyer un identifiant et une liste de valeurs : La fonction ChaneAffiche permet de renvoyer les informations JSON. La fonction ChaneVersUTF8 permet de renvoyer une chane au format UTF8. Cette dernire fonction est obligatoire pour obtenir un format valide. 11.3.2 Cas d'une page appele par la fonc- tion JSONExcuteExterne En plus du code permettant de grer les lments JSON renvoyer, il est ncessaire de prciser dans les donnes renvoyes, le nom de la procdure devant traiter des donnes. Le nom de cette proc- dure est indiqu en paramtre sur l'URL de la page. L'exemple suivant permet de grer l'appel avec JSO- NExcute et JSONExcuteExterne. Pour le cas d'un appel externe, il est ncessaire de vrifier la pr- sence d'un paramtre spcifique prsent sur l'URL. Ce paramtre a t fourni l'utilisateur du service JSON. Pour que les utilisateurs de sites WebDev puissent utiliser les services JSON, il suffit donc de leur indi- quer le ou les paramtres spcifier dans l'adresse de la page lancer. Remarque : Pour plus de dtails sur les syntaxes pouvant tre utilises dans les donnes renvoyes au format JSON, nous vous conseillons de consul- ter une documentation spcifique. JSONExcuteExterne(... "http://MonSite/MonSite_WEB/FR/ PAGE_Objet.awp?id=12",... "JsonCallback",RponseFonction) sObjet est une chane = [ {id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] } ] // ChaneVersUTF8 permet de grer // les accents ChaneAffiche(ChaneVersUTF8(sOb- jet)) sObjet est une chane = [ {id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] } ] // Gestion d'un appel externe. // Vrifie la prsence d'un nom de // procdure sur l'URL SI PageParamtre(... "JsonCallback") <> "" ALORS sObjet = PageParamtre(... "JsonCallback") + "("+ ... sObjet + ");" FIN // ChaneVersUTF8 permet de grer // les accents ChaneAffiche(ChaneVersUTF8(sOb- jet)) WLangage.book Page 239 Mardi, 23. avril 2013 1:59 13 240 Partie 5 : Fonctionnalits spcifiques au Web WLangage.book Page 240 Mardi, 23. avril 2013 1:59 13 PARTIE 6 Communication WLangage.book Page 241 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 242 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 243 1. LA COMMUNICATION 1.1 Communication avec WinDev / WebDev Le WLangage offre de nombreuses possibilits de communication. Moyen de communication Possibilits offertes par WinDev/WebDev Pour plus de dtails ... emails Envoi et rception demails. Consultez Communiquez par emails, page 245. Lotus Notes Accs aux diffrentes donnes manipu- les par Lotus Notes. Consultez Accder Lotus Notes et Outlook, page 253 Outlook Accs aux diffrentes donnes manipu- les par Outlook. Consultez Accder Lotus Notes et Outlook, page 253 tlphone Informatisation de la manipulation du tl- phone. Consultez WinDev et la tlphonie, page 271. fax Envoi et rception de fax. Consultez Envoyer des fax, page 278. Internet Rcupration de pages HTML grce aux fonctions HTTP. Consultez Rcuprer des pages HTML, page 281. transfert de donnes Envoi et rception de donnes grce aux fonctions FTP/RPC WinDev. Consultez Gestion de fichiers sur Internet, page 282. transfert de fichiers Manipulation de fichiers sur un serveur FTP. Consultez Communiquer avec un serveur FTP, page 285. sockets Communication dapplications et de sites au travers du rseau grce aux fonctions Socket. Consultez Gestion des sockets, page 287. Bluetooh et OBEX Communication entre un PC et un Mobile. Consultez Gestion des cls blue- tooth on page 292. gestion du multit- che Excution en parallle de diverses tches dans une mme application ou dans un mme site. Consultez Gestion des threads, page 294. serveur SOAP Cration dapplications clientes et serveur SOAP. Consultez SOAP, page 302. procdures sur un serveur de services Web .Net Gestion de l'excution de procdures sur un serveur de services Web .Net. Consultez Webservices XML, page 306. services Web XML Importation et/ou gnration des services Web XML de type .Net et J2EE. Consultez Webservices XML, page 306. fichiers XML Gestion des fichiers au format XML. Consultez XML, page 312. assemblages .NET Cration et utilisation dassemblages .NET. Consultez Assemblages .NET, page 316. WLangage.book Page 243 Mardi, 23. avril 2013 1:59 13 244 Partie 6 : Communication 1.2 Communication avec WinDev Mobile WinDev Mobile permet de faire communiquer deux Pockets PC entre eux, un Pocket PC avec un Smart- phone, un Pocket PC avec un PC, ... Ces "dialogues" se font par infrarouge, par Wi-Fi, par GPRS. Le tableau ci-dessous prsente les diffrents modes de communication disponibles pour chaque fonctionnalit propose par WinDev Mobile : Accs dis- tant (RPC sur HyperFi- leSQL) Email FTP HTTP Tlpho- nie SOAP J2EE .NET Socket SMS ActiveSync X X X X X X Carte rseau X X X X X X GPRS X X X X X X Infrarouge X Smartphone ou accs tlphoni- que (type GSM) X X Wi-Fi X X X X X X WLangage.book Page 244 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 245 2. COMMUNIQUEZ PAR EMAILS 2.1 Prsentation WinDev et WebDev permettent de grer directe- ment les emails depuis vos applications. Envoi et rception d'emails sont simplifis grce : de nombreuses fonctions du WLangage, une structure email permettant de stocker et de connatre toutes les caractristiques de l'email manipul. Il est galement possible de manipuler le contenu des emails sans les envoyer (fonctions EmailConstruitSource et EmailImporteSouce). la gestion de types avancs permettant de mani- puler plusieurs connexions des serveurs et un grand nombre de messages aisment : Les types Email et EmailAttache permettent de grer les messages et leurs pices jointes. Les types EmailSessionPOP3, EmailSessionS- MTP, EmailSessionNotes, EmailSessionOutlook et EmailSessionIMAP permettent de grer les connexions aux serveurs de messagerie. 2.2 La gestion des emails Plusieurs mthodes sont votre disposition pour grer les emails : Le protocole POP3/SMTP (mthode la plus courante) : Ce protocole est un protocole de ges- tion des emails reconnu par tous les fournisseurs de service. Ce protocole vous permet de dialo- guer directement avec le serveur, disponible chez votre fournisseur daccs. L'API "Simple Mail API (appel aussi SMAPI ou Simple MAPI)" : Ce mode de gestion des emails est utilis par la plupart des applications Micro- soft, et principalement MS Exchange 4. Le logiciel de messagerie Lotus Notes ou Outlook : grce ces logiciels, il est possible d'envoyer et de recevoir des emails. le protocole IMAP : ce protocole est maintenant disponible grce au nouveau type EmailSessionI- MAP. 2.3 Mode synchrone / asynchrone (WebDev uniquement) Par dfaut, les fonctions Email sont bloquantes. Cela signifie que pendant leur excution, aucun autre code ne peut tre excut. Le programme continuera de s'excuter uniquement lorsque l'ex- cution des fonctions Email sera termine. WebDev offre dsormais la possibilit de grer les emails en mode asynchrone. Ce mode permet vos sites d'envoyer des emails sans bloquer l'excu- tion des diffrents traitements. Pour utiliser le mode asynchrone, il faut : 1. Dcocher l'option "Dsactiver le spooler de mail" dans l'administrateur WebDev (onglet "Configura- tion). 2. Activer le mode asynchrone l'ouverture de la session SMTP (avec la fonction EmailOuvreSes- sionSMTP ou EmailOuvreSession). 3. Tous les emails envoyer seront transmis un "spooler". Les emails sont ainsi mis en file d'attente avant d'tre envoys. L'excution des fonctions Email n'est alors plus blo- quante pour le reste du programme. La fonction EmailEtat permet de connatre l'tat d'un email. Remarque : Si l'administrateur WebDev est ferm, le spooler d'emails est vid : les emails en attente ne sont pas envoys et sont enlevs du spooler. Si vous cochez l'option "Dsactiver le spooler de mail" alors que des emails sont en attente, ces emails ne seront pas perdus : l'administrateur con- tinue de les envoyer, mais aucun nouveau mail ne sera accept par le spooler. Attention : Le mode asynchrone est utilisable uni- quement lors de l'ouverture d'une session sur un serveur SMTP (fonction EmailOuvreSessionMTP pour l'envoi d'emails). Le mode asynchrone est ignor dans tous les autres cas. WLangage.book Page 245 Mardi, 23. avril 2013 1:59 13 246 Partie 6 : Communication 2.4 Grez les emails avec les protocoles POP 3/SMTP 2.4.1 Prsentation des protocoles POP3 / SMTP Les protocoles POP3 et SMTP sont des protocoles de gestion des emails reconnus par tous les four- nisseurs de service. Ces protocoles vous permet- tent de dialoguer directement avec le serveur d'emails, disponible chez votre fournisseur daccs. Le protocole POP3 permet de recevoir des emails. Le protocole SMTP permet d'envoyer des emails Remarque : la rception des emails peut gale- ment tre prise en charge en utilisant le protocole IMAP. 2.4.2 Principe d'utilisation Envoi de messages en utilisant le protocole SMTP. Pour envoyer des messages en utilisant le proto- cole SMTP, il faut : 1. Ouvrir une session SMTP : soit en utilisant une variable de type EmailSes- sionSMTP et la fonction EmailOuvreSession. soit en utilisant la fonction EmailOuvreSessionS- MTP. 2. Construire le message envoyer dans une varia- ble de type Email ou dans la structure Email. 3. Envoyer le message avec la fonction EmailEn- voieMessage. 4. Fermer la session SMTP avec la fonction Email- FermeSession. Rception de messages en utilisant le protocole POP3. Pour recevoir des emails en utilisant le protocole POP3, il faut : 1. Ouvrir une session POP3 : soit en utilisant une variable de type EmailSessionPOP3 et la fonction EmailOuvreSes- sion soit en utilisant la fonction EmailOuvreSessionPOP3. Exemple d'ouverture de session en utilisant une variable de type EmailSessionPOP3 : 2. Lire les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout, avec une boucle de la forme : ou avec une boucle de la forme : 3. Fermer la session POP3 avec la fonction Email- FermeSession. Remarque : Il est possible d'ouvrir simultanment une session POP3 et une session SMTP avec la fonction EmailOuvreSession. // Ouverture de la session // de messagerie MaSession est un EmailSessionPOP3 MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession) Exemple utilisant une variable de type Email : MonMessage est un Email EmailLitPremier(MaSession,... MonMessage) TANTQUE PAS MonMessage.EnDehors // Placer ici le traitement // du message lu ... EmailLitSuivant(MaSession,... MonMessage) FIN Exemple utilisant la structure Email : EmailLitPremier(MaSession) TANTQUE PAS Email.EnDehors // Placer ici le traitement // du message lu ... EmailLitSuivant(MaSession) FIN MonMessage est un Email POUR TOUT MonMessage DE MaSession // Placer ici le traitement // du message lu ... FIN WLangage.book Page 246 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 247 Principe d'utilisation et particularits en WinDev Principe pour un site WebDev : Principe pour une application Mobile : WLangage.book Page 247 Mardi, 23. avril 2013 1:59 13 248 Partie 6 : Communication 2.5 Grez les emails avec le protocole IMAP 2.5.1 Prsentation du protocole IMAP Le protocole IMAP est un protocole standard de gestion des emails. Au contraire du protocole POP3, le principe d'utilisation de IMAP consiste laisser les messages sur le serveur de messagerie afin de pouvoir les consulter depuis plusieurs clients. Le protocole IMAP intgre dans ce but un indicateur particulier pour savoir si un message a t lu. Un grand nombre de serveurs de message- rie supportent la fois le protocole IMAP et le proto- cole POP3. 2.5.2 Utilisation du protocole IMAP Pour recevoir des emails en utilisant le protocole IMAP : 1. Ouvrez une session IMAP en utilisant une varia- ble de type EmailSessionIMAP et la fonction EmailOuvreSession. Exemple d'ouverture de session en utilisant une variable de type EmailSessionIMAP :. 2. Lisez les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout, avec une boucle de la forme :. ou avec une boucle de la forme (les mots-cls "NON LU" sont optionnels et permettent de par- courir uniquement les messages non lus ou bien tous les messages) :. 3. Fermez la session IMAP avec la fonction Email- FermeSession. 2.6 Grez les emails avec "Simple MAPI" (WinDev et WebDev) Simple MAPI (appel aussi "Simple Mail API") est une API de gestion des emails utilise par les appli- cations Microsoft, et principalement MS Exchange 4. Simple MAPI permet de simplifier la gestion des emails reus chez l'hbergeur. Lorsqu'un email est lu, il est automatiquement charg dans la bote de messages locale et supprim du serveur (chez l'hbergeur). Toutes les caractristiques ncessaires la gestion des emails (protocole POP3, protocole SMTP, accs distant, etc.) sont regroupes dans le "Profil utilisa- teur". Grce aux fonctions email du WLangage, une appli- cation ou un site peut manipuler directement les emails grs dans une application ou un site utili- sant "Simple MAPI". 2.6.1 Principe d'utilisation Pour envoyer ou lire des messages grce Simple MAPI, il faut : 1. Dcrire un profil utilisateur. Ce profil utilisateur doit tre cr directement dans l'application Micro- soft de gestion des emails (MS Exchange par exem- ple). 2. Se connecter depuis l'application ou le site // Ouverture de la session ... // de messagerie MaSession est un EmailSessionIMAP MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession) Exemple utilisant une variable de type Email : MonMessage est un Email EmailLitPremier(MaSession, ... MonMessage) TANTQUE PAS MonMessage.EnDehors // Placer ici le traitement // du message lu... ... EmailLitSuivant(MaSession, ... MonMessage) FIN Exemple utilisant la structure Email : EmailLitPremier(MaSession) TANTQUE PAS Email.EnDehors // Placer ici le traitement // du message lu ... EmailLitSuivant(MaSession) FIN MonMessage est un Email POUR TOUT MonMessage NON LU DE ... MaSession // Placer ici le traitement // du message lu ... FIN WLangage.book Page 248 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 249 l'application de gestion des emails (MS Exchange 4 par exemple) grce la fonction EmailOuvreSes- sion. 3. Envoyer et lire les messages. 4. Fermer la session avec l'application de gestion des emails (MS Exchange 4 par exemple) grce la fonction EmailFermeSession. 2.6.2 tape 1 : Crer un profil utilisateur Le profil utilisateur permet de configurer l'applica- tion de gestion des emails (MS Exchange 4 par exemple). Dans le profil utilisateur sont dfinis : le protocole SMTP utilis, le protocole POP3 utilis, les diffrents services de communication utili- ss. Pour utiliser les fonctions "email" du WLan- gage, le profile utilisateur doit utiliser le service de communication Microsoft Exchange Server. Remarque : Il est ncessaire de crer autant de profils sur le poste qu'il y a d'utilisateurs ou de comptes emails diffrents. Le nom du profil sera ensuite utilis pour ouvrir la session de messagerie grce la fonction EmailOuvreSession. Pour crer un profil : 1. Ouvrez le panneau de configuration. 2. Double-cliquez sur l'option "Courrier". 3. Cliquez sur le bouton "Afficher les profils". 4. Dans la fentre "Choix d'un profil", cliquez sur le bouton "Ajouter". 5. Donnez un nom au profil. Ce nom sera utilis dans les programmes WinDev. 6. Slectionnez l'option "Ajouter un nouveau compte de messagerie". 7. Slectionnez le service "Microsoft Exchange Ser- ver". 8. Donnez le nom du serveur Microsoft Exchange. 2.6.3 tape 2 : Ouverture d'une session de messages L'ouverture dune session de messages est rali- se grce la fonction EmailOuvreSession. Cette fonction doit tre la premire fonction "email" utili- se dans votre application WinDev (ou votre site WebDev). La fonction EmailOuvreSession renvoie l'identifiant de la session. Cet identifiant sera utilis dans tou- tes les fonctions de gestion des emails du WLan- gage. Exemple : La procdure suivante permet d'ouvrir une session de messagerie partir d'un profil. En cas d'erreur, la variable Email.Erreur permet d'iden- tifier l'erreur survenue. 2.6.4 tape 3 : Envoi d'emails L'envoi d'emails par Simple MAPI est ralis grce aux fonctions : EmailEnvoieMessage : cette fonction permet de placer le message dans la bote d'envoi de l'appli- cation de gestion des emails (bote d'envoi de MS Exchange 4 par exemple). Fonction OuvertureSession(Profil) NumSession est un entier NumSession = EmailOuvreSession(... Profil) SI NumSession = 0 ALORS Erreur("La session n'a pas"+... "pu tre ouverte. Erreur : "+... Email.Erreur) FIN RENVOYER NumSession WLangage.book Page 249 Mardi, 23. avril 2013 1:59 13 250 Partie 6 : Communication EmailMiseAJour : cette fonction permet de syn- chroniser le serveur d'emails et l'application de gestion des emails : les nouveaux emails reus sont automatiquement transfrs dans la bote de rception, les emails prsents dans la bote d'envoi sont envoys. Exemple : Le code suivant permet d'envoyer tous les emails prsents dans une table mmoire (table "AENVOYER") par l'intermdiaire de MS Exchange 4. Chaque ligne de la table correspond un email. Pour chaque email, les informations prsentes dans la table mmoire sont transfres dans la structure email, et l'email est envoy. Le serveur d'emails est ensuite mis jour. 2.6.5 tape 3bis : Lecture des emails La lecture d'emails par Simple MAPI est ralise grce : la fonction EmailMiseAJour : cette fonction per- met de synchroniser le serveur d'emails et le logi- ciel de gestion d'emails utilis : les nouveaux emails reus sont automatiquement transfrs dans la bote de rception, les emails prsents dans la bote d'envoi sont envoys. aux fonctions de lecture des emails (EmailLitPre- mier, EmailLitSuivant, etc.) : ces fonctions per- mettent d'initialiser la structure email du WLangage avec les caractristiques de l'email en cours de lecture (auteur de l'email, sujet, etc.). Exemple : Le code suivant permet de lire des emails. Les emails reus sont stocks dans une table mmoire (table "Messages"). La variable NumSession correspond l'identifiant de la ses- sion. Dans cet exemple, les messages reus sont suppri- ms de la bote de rception et du serveur d'emails par la fonction EmailSupprimeMessage. I est un entier POUR I = 1 TableOccurrence(... ("AENVOYER") // Le courrier n'est envoy // qu' une seule personne Email.NbDestinataire = 1 Email.destinataire[1] = ... ExtraitChane(AENVOYER[I], 1) // Sujet et message Email.Sujet = ... ExtraitChane(AENVOYER[I], 2) Email.Message = ... ExtraitChane(AENVOYER[I], 3) // Pas de fichier attach Email.NbAttache = 0 // Envoi du message // MS Exchange 4 EmailEnvoieMessage ... (NumSession, Faux) FIN // Envoi des messages depuis // MS Exchange 4 // vers le serveur d'email SI PAS ... EmailMiseAjour(NumSession) ALORS Erreur("Problme. Erreur"+... Email.Erreur) FIN // Reoit les messages en attente // qui sont sur le serveur d'email SI PAS ... EmailMiseAjour(NumSession) ALORS Erreur("Problme. Erreur"+ ... Email.Erreur) FIN // Lecture du premier message non lu SI PAS EmailLitPremier(... NumSession,"Non lus") ALORS Erreur("Erreur lors de la "+... "lecture du premier message") FIN // Parcours des messages non lus // avec affichage dans // une table mmoire TableSupprimeTout("Messages") TANTQUE PAS Email.EnDehors // La date de rception, // l'adresse de l'expditeur // et le message sont // affects dans la table TableAjoute("Messages",... Email.DateRception + TAB +... Email.AdresseExpditeur + ... TAB +Email.Message) // Suppression du message SI PAS EmailSupprimeMessage(... NumSession) ALORS Erreur("Erreur : le message"+... "n'a pas t supprim") FIN // Lecture du message suivant non lu SI PAS EmailLitSuivant(... NumSession,"Non lus") ALORS Erreur("Erreur lors de la"+... " lecture du message suivant") FIN FIN WLangage.book Page 250 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 251 2.6.6 tape 4 : Fermeture de la session de messages Lorsque la gestion des emails reus et/ou envoys est termine, la fermeture de la session est rali- se avec la fonction EmailFermeSession. Cette fonction doit tre la dernire fonction "email" utili- se. Exemple : Le code suivant est une procdure per- mettant de fermer une session de messagerie. Dans ce code, la variable NumSession correspond l'identifiant de session renvoy par la fonction EmailOuvreSession.. 2.7 Grer les emails avec CEMapi (WinDev Mobile uniquement) CEMAPI est une API de gestion des emails utilise par la plupart des applications Pocket pour envoyer et recevoir des emails (Pocket Outlook gnrale- ment). CEMAPI permet de simplifier la gestion des emails reus chez l'hbergeur. Lorsqu'un email est lu, il est automatiquement charg dans la bote de messa- ges locale et supprim du serveur (chez l'hber- geur). Toutes les caractristiques ncessaires la gestion des emails (protocole POP3, protocole SMTP, accs distant, etc.) sont regroupes dans le "Compte utili- sateur". Grce aux fonctions email du WLangage, une appli- cation WinDev peut manipuler directement les emails grs dans une application utilisant "CEMAPI". Pour plus de dtails, consultez laide en ligne. 2.8 Lire et crire un email La lecture et lcriture demails peuvent tre rali- ses : soit via la structure email (conserve par compa- tibilit) soit via les variables de type EmailXXX. Pour plus de dtails, consultez laide en ligne. 2.9 Fonctions de gestion des emails Les fonctions permettant de grer les emails sont les suivantes : Procedure FermetureSession(... NumSession) // Fermeture de la session EmailFermeSession(NumSession) EmailChangeEtat Change l'tat d'un email sur un serveur de messagerie. EmailChangeTimeOut Change la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et POP3 EmailChargefichierAtta- ch Ajoute un fichier en attachement d'un email. EmailCherchePremierNo- tes Recherche un ou plusieurs emails selon des critres spcifis, dans une base locale ou distante Lotus Notes ou Domino. EmailConstruitSource Gnre le code source de lemail envoyer partir des variables actuellement prsentes dans la structure email. EmailCopie Copie un email prsent dans un rpertoire vers un autre rpertoire d'un serveur IMAP. EmailEnvoie Envoie un message par le protocole POP3 en contrlant entirement le buffer de lemail EmailEnvoieMessage Envoie un message EmailEtat Permet de connatre l'tat d'un email envoy lors d'une session SMTP ouverte en mode asynchrone WLangage.book Page 251 Mardi, 23. avril 2013 1:59 13 252 Partie 6 : Communication EmailFermeSession Ferme la session POP3 EmailImporteHTML Permet d'envoyer simplement un mail au format HTML avec des images inclues EmailImporteSource Replit les diffrentes variables de la structure email partir du contenu de la variable Email.Source. EmailJauge Gre une jauge de progression pour l'envoi et la rception d'emails EmailLanceAppli Lance l'application native d'envoi d'emails de l'appareil Android EmailLitDernier Lit le dernier message en attente sur le serveur EmailLitEntteDernier Lit len-tte du dernier message en attente sur le serveur (protocole POP3 unique- ment) EmailLitEntteMessage Lit len-tte dun message identifi par son numro (protocole POP3 uniquement) EmailLitEnttePrcdent Lit len-tte du message prcdent en attente (protocole POP3 uniquement) EmailLitEnttePremier Lit len-tte du premier message (protocole POP3 uniquement) EmailLitEntteSuivant Lit len-tte du message suivant (protocole POP3 uniquement) EmailLitMessage Lit un message identifi par son numro EmailLitPrcdent Lit le message prcdent en attente EmailLitPremier Lit le premier message EmailLitSuivant Lit le message suivant EmailLitTimeOut Lit la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et POP3 EmailMiseAJour Envoie les messages vers le serveur d'email Internet et reoit les messages en attente sur le serveur Internet EmailMsgErreur Retourne le message correspondant l'identifiant de l'erreur EmailNbMessage Permet de connatre le nombre de messages actuellement sur le serveur EmailOuvreMessagerie Ouvre le logiciel de messagerie par dfaut de l'internaute sur le poste navigateur EmailOuvreSession Ouvre une session de gestion des emails EmailOuvreSessionPOP3 Ouvre une session de lecture demails avec le protocole POP3 EmailOuvreSessionSMTP Ouvre une session denvoi demails avec le protocole SMTP EmailRaz Re-initialise les variables de la structure email EmailSauveFichierAtta- ch Copie les fichiers attachs au mail sur le poste local EmailSupprimeMessage Supprime un message EmailTailleMessage Permet de connatre la taille d'un message (email) avant de le charger EmailVrifieAdresse Vrifie la validit dune adresse email Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 252 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 253 3. ACCDER LOTUS NOTES ET OUTLOOK 3.1 Accder Lotus Notes 3.1.1 Prsentation WinDev et WinDev permettent dsormais d'accder facilement aux diffrentes donnes manipules par Lotus Notes (base Domino). Il est ainsi possible de rcuprer, modifier, ajouter ou manipuler vos contacts, vos rendez-vous, vos tches, vos emails, vos bases de donnes, ... L'ensemble des donnes gres par Lotus Notes est organis ainsi : Une base par utilisateur contenant les emails, les tches et les rendez-vous de cet utilisateur. Une base commune tous les utilisateurs conte- nant les contacts et les groupes de contacts. Plusieurs bases de donnes contenant des docu- ments. Pour accder Lotus Notes, le client Lotus Notes doit tre install sur le poste des utilisateurs finals. L'accs Lotus Notes est possible uniquement sous Lotus Notes version 6.5 ou suprieure. 3.1.2 Mthode daccs Lotus Notes 1. tablissement de la connexion avec le serveur Domino : fonction NotesOuvreConnexion. 2. Ouverture d'une session d'accs aux emails, tches, rendez-vous, contacts et/ou groupes de contacts : fonction EmailOuvreSessionNotes (en indiquant l'identifiant de la connexion et la base locale ou distante Lotus Notes utiliser, syntaxe 2). 3. Ouverture d'une session d'accs aux documents : fonction NotesOuvreBase (en indi- quant l'identifiant de la connexion et la base locale ou distante Lotus Notes utiliser). 4. Changement de la base Lotus Notes utiliser : fonctions NotesFermeBase et NotesOuvreBase. 5. Fermeture de la connexion avec le serveur Domino : fonction FermeSession ou EmailFerme- Session. 3.1.3 Mthode d'accs concise si vous ne voulez pas accder aux documents Si vous voulez accder uniquement aux emails, tches, rendez-vous, contacts et/ou groupes de contacts, il est possible d'tablir la connexion avec le serveur Domino et d'ouvrir une session d'accs la base Lotus Notes en utilisant directement la fonction EmailOuvreSessionNotes (syntaxe 1), sans appeler la fonction NotesOuvreConnexion. 3.1.4 Manipulation des donnes Aprs avoir tabli la connexion avec le serveur Domino et indiqu la base Lotus Notes utiliser, vous pouvez manipuler : les emails grce aux fonctions Email (voir page 254) les tches grce aux fonctions Tche (voir page 256) les rendez-vous grce aux fonctions RendezVous (voir page 256) les contacts grce aux fonctions Contact (voir page 257) les groupes de contacts grce aux fonctions Groupe (voir page 257) les documents grce aux fonctions Notes (voir page 258) 3.2 Accder Outlook 3.2.1 Prsentation WinDev et WinDev permettent dsormais d'accder facilement aux diffrentes donnes manipules par Outlook. Il est ainsi possible de rcuprer, modifier, ajouter ou manipuler vos contacts, vos rendez-vous, vos tches, vos emails, ... 3.2.2 Mthode daccs Outlook 1. Ouverture d'une session d'accs aux emails, tches, rendez-vous, contacts et/ou groupes de contacts : fonction EmailOuvreSessionOutlook ou OutlookOuvreSession. 2. Fermeture de la session : fonction FermeSes- sion ou EmailFermeSession. WLangage.book Page 253 Mardi, 23. avril 2013 1:59 13 254 Partie 6 : Communication 3.2.3 Envoi et rception des emails Pour envoyer et recevoir les emails, il est nces- saire que Outlook soit lanc sur le poste en cours. Pour rendre l'envoi et la rception d'emails effectifs : Envoi et rception automatique : Slectionnez les options suivantes dans les options de Outlook : "Envoyer les messages immdiatement lors de la connexion" "Vrifier l'arrive de nouveaux messages toutes les X minutes" et spcifiez le nombre de minu- tes voulu. Envoi et rception manuels : Cliquez sur le bou- ton "Envoyer / Recevoir". 3.2.4 Version de Outlook L'accs Outlook est possible uniquement sous Outlook version 97 ou suprieure. Remarque : Les groupes de contacts ne sont pas grs par Outlook version 97. Il n'est donc pas pos- sible d'y accder dans cette version de Outlook. Attention : Sous Outlook Express, il est possible uniquement d'accder aux emails. Dans ce cas, uti- lisez la fonction EmailOuvreSession pour ouvrir la session d'accs aux emails. L'accs Outlook est compatible avec les serveurs MS Exchange. 3.2.5 Manipulation des donnes Aprs avoir tabli la connexion avec le serveur Domino et indiqu la base Lotus Notes utiliser, vous pouvez manipuler : les emails grce aux fonctions Email (voir page 255) les tches grce aux fonctions Tche (voir page 256) les rendez-vous grce aux fonctions RendezVous (voir page 256) les contacts grce aux fonctions Contact (voir page 257) les groupes de contacts grce aux fonctions Groupe (voir page 257) les documents grce aux fonctions Notes (voir page 258) 3.3 Fonctions Lotus Notes et Outlook 3.3.1 Fonctions emails pour Lotus Notes EmailCherchePremierNo- tes Recherche un ou plusieurs emails selon des critres spcifis, dans une base locale ou distante Lotus Notes ou Domino. EmailConstruitSource Gnre le code source de l'email envoyer partir des variables actuellement prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. EmailEnvoieMessage Permet d'envoyer un message. EmailFermeSession Ferme la session. EmailImporteSource Remplit les diffrentes variables de la structure email partir du contenu de la variable Email.Source. EmailJauge Gre une jauge de progression pour l'envoi et la rception d'emails. EmailLitDernier Lit le dernier email reu. EmailLitEntteDernier Lit l'en-tte du dernier email reu. EmailLitEntteMessage Lit l'en-tte d'un email reu. EmailLitEnttePrcdent Lit l'en-tte de l'email prcdant l'email en cours. EmailLitEnttePremier Lit l'en-tte du premier email reu. EmailLitEntteSuivant Lit l'email reu suivant l'email en cours. EmailLitMessage Lit un email reu. EmailLitPrcdent Lit l'email prcdent l'email en cours. EmailLitPremier Lit le premier message. EmailLitSuivant Lit le message suivant. WLangage.book Page 254 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 255 3.3.2 Fonctions emails pour Outlook EmailOuvreSessionNotes Permet d'accder aux diffrentes donnes manipules par le logiciel de message- rie Lotus Notes (emails, contacts, groupes de contacts, tches, rendez-vous). EmailRaz Rinitialise les variables de la structure email. EmailSupprimeMessage Supprime un message. FermeSession Ferme la session. EmailVrifieAdresse Vrifie la validit d'une adresse email. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. EmailAjouteDossier Ajoute un dossier dans le logiciel de messagerie Outlook EmailChangeDossier Modifie le dossier en cours dans le logiciel de messagerie Outlook EmailCherchePremier Recherche un ou plusieurs emails selon des critres spcifis dans le logiciel de messagerie Outlook EmailConstruitSource Gnre le code source de l'email envoyer partir des variables actuellement prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. EmailDossierCourant Renvoie le nom du dossier en cours dans le logiciel de messagerie Outlook EmailEnvoieMessage Permet d'envoyer un message EmailFermeSession Ferme la session EmailImporteSource Remplit les diffrentes variables de la structure email partir du contenu de la variable Email.Source. EmailImporteHTML Permet d'envoyer simplement un mail au format HTML avec des images inclues EmailListeDossier Renvoie la liste des dossiers prsents dans le logiciel de messagerie Outlook EmailLitDernier Lit le dernier email reu EmailLitEntteDernier Lit l'en-tte du dernier email reu EmailLitEntteMessage Lit l'en-tte d'un email reu EmailLitEnttePrcdent Lit l'en-tte de l'email prcdant l'email en cours EmailLitEnttePremier Lit l'en-tte du premier email reu EmailLitEntteSuivant Lit l'en-tte de l'email suivant l'email en cours EmailLitMessage Lit un email reu EmailLitPrcdent Lit l'email prcdent l'email en cours EmailLitPremier Lit le premier email reu EmailLitSuivant Lit l'email reu suivant l'email en cours EmailNbMessage Renvoie le nombre de messages reus actuellement prsents EmailOuvreSessionOut- look Permet d'accder aux diffrentes donnes manipules par le logiciel de messa- gerie Outlook EmailSauveFichierAttach Copie les fichiers attachs au mail sur le poste local EmailSupprimeDossier Supprime un dossier dans le logiciel de messagerie Outlook EmailSupprimeMessage Supprime un message EmailVrifieAdresse Vrifie la validit d'une adresse email. FermeSession Ferme la session OutlookListeProfil Liste les profils Outlook disponibles. WLangage.book Page 255 Mardi, 23. avril 2013 1:59 13 256 Partie 6 : Communication 3.3.3 Fonctions Tche Les fonctions de gestion des tches prsentes dans la liste des tches d'une messagerie Lotus Notes ou Out- look sont les suivantes : 3.3.4 Fonctions Rendezvous Les fonctions de gestion des rendez-vous prsents dans l'agenda d'une messagerie Lotus Notes ou Outlook sont les suivantes : OutlookOuvreSession Permet d'accder aux diffrentes donnes manipules par le logiciel de messa- gerie Outlook (emails, contacts, groupes de contacts, tches, rendez-vous et dos- siers). OutlookProfilDfaut Rcupre le profil dfini par dfaut dans Outlook Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. TcheAjoute Ajoute une tche dans la liste des tches d'une messagerie Lotus Notes ou Outlook TcheDernier Lit la dernire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook TcheLit Lit une tche prcdemment lue dans la liste des tches d'une messagerie Lotus Notes ou Outlook TcheModifie Modifie la tche en cours dans la liste des tches d'une messagerie Lotus Notes ou Out- look TchePrcdent Lit la tche prcdant la tche en cours dans la liste des tches d'une messagerie Lotus Notes ou Outlook TchePremier Lit la premire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook TcheRAZ Rinitialise la structure Tche. TcheSuivant Lit la tche suivant la tche en cours dans la liste des tches d'une messagerie Lotus Notes ou Outlook TcheSupprime Supprime la tche en cours de la liste des tches d'une messagerie Lotus Notes ou Out- look Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. RendezVousAjoute Ajoute un rendez-vous dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousDernier Lit le dernier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousLit Lit un rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousModifie Modifie le rendez-vous en cours dans l'agenda d'une messagerie Lotus Notes ou Out- look RendezVousPrcdent Lit le rendez-vous prcdent le rendez-vous en cours, dans l'agenda d'une message- rie Lotus Notes ou Outlook RendezVousPremier Lit le premier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousRAZ Rinitialise la structure RendezVous RendezVousSuivant Lit le rendez-vous suivant le rendez-vous en cours, dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousSupprime Supprime le rendez-vous en cours de l'agenda d'une messagerie Lotus Notes ou Out- look Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 256 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 257 3.3.5 Fonctions Contact Les fonctions de gestion des contacts prsents dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook sont les suivantes : 3.3.6 Fonctions Groupe Les fonctions de gestion des groupes de contacts prsents dans le carnet d'adresses d'une messagerie Lotus Notes, Domino ou Outlook sont les suivantes : ContactAffiche Ouvre la fiche d'un contact dans l'application native de gestion des contacts de l'appa- reil (tlphone Android). ContactAjoute Ajoute un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactCherche Recherche un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Out- look ContactCre Affiche la fentre de cration de contact de l'application native de gestion des contacts de l'appareil (tlphone Android) ContactDernier Lit le dernier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactEdite Ouvre en dition la fiche d'un contact en cours dans l'application native de gestion des contacts de l'appareil (tlphone Android) ContactLit Lit un contact prcdemment lu, prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactModifie Modifie le contact en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactPrcdent Lit le contact prcdent le contact en cours, dans le carnet d'adresses d'une message- rie Lotus Notes ou Outlook ContactPremier Lit le premier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactRAZ Rinitialise la structure Contact ContactSlectionne Affiche la liste des contacts de l'appareil (tlphone Android) ContactSuivant Lit le contact suivant du contact en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactSupprime Supprime le contact en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. GroupeAjoute Ajoute un groupe de contacts dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupeDernier Lit le dernier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupeLit Lit un groupe de contacts prcdemment lu, prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupeModifie Modifie le groupe de contacts en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupePrcdent Lit le groupe de contacts prcdant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupePremier Lit le premier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupeRAZ Rinitialise la structure Groupe WLangage.book Page 257 Mardi, 23. avril 2013 1:59 13 258 Partie 6 : Communication 3.3.7 Fonctions Notes Les fonctions de gestion des documents Notes prsents dans Lotus Notes sont les suivantes : GroupeSuivant Lit le groupe de contacts suivant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook GroupeSupprime Supprime le groupe de contacts en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. NotesActiveVue Indique la vue manipuler dans Lotus Notes NotesAjouteFichierAttach Attache un fichier un champ du document en cours dans Lotus Notes NotesChamp Renvoie la valeur des champs du document en cours dans Lotus Notes NotesDsactiveVue Dsactive la vue en cours de manipulation dans Lotus Notes NotesDimensionChamp Renvoie la dimension d'un champ du document en cours dans Lotus Notes NotesDocumentCherche Recherche un document dans Lotus Notes NotesDocumentDernier Positionne sur le dernier document prsent dans Lotus Notes NotesDocumentPrcdent Positionne sur le document prcdant le document en cours dans Lotus Notes NotesDocumentPremier Positionne sur le premier document prsent dans Lotus Notes NotesDocumentSuivant Positionne sur le document suivant le document en cours dans Lotus Notes NotesDocumentSupprime Supprime le document en cours de la base Lotus Notes NotesEnDehors Permet de savoir s'il y a un document en cours dans Lotus Notes NotesEnregistre Enregistre le document en cours dans Lotus Notes NotesExtraitFichierAttach Extrait un fichier attach un champ du document en cours dans Lotus Notes NotesFermeBase Ferme la base locale ou distante Lotus Notes ou Domino utilise NotesListeChamp Renvoie la liste des champs du document en cours dans Lotus Notes NotesListeFichierAttach Renvoie la liste des fichiers attachs un champ du document en cours dans Lotus Notes NotesListeVue Renvoie la liste des vues prsentes dans la base Lotus Notes en cours NotesModifieChamp Modifie le champ spcifi du document en cours dans Lotus Notes NotesModifieFichierAttach Modifie un fichier attach un champ du document en cours dans Lotus Notes NotesNbFichierAttach Renvoie le nombre de fichiers attachs un champ du document en cours dans Lotus Notes NotesOuvreBase Permet d'accder aux documents grs par Lotus Notes NotesOuvreConnexion Ouvre une connexion avec une base locale ou distante Lotus Notes ou Domino NotesRAZ Cre un document vide dans Lotus Notes NotesSupprimeChamp Supprime le champ spcifi du document en cours dans Lotus Notes NotesSupprimeFichierAtta- ch Supprime un fichier attach d'un champ du document en cours dans Lotus Notes NotesVueChercheDernier Recherche le dernier document prsent dans la vue en cours dans Lotus Notes NotesVueCherchePremier Recherche le premier document prsent dans la vue en cours dans Lotus Notes NotesVueListeColonne Liste les colonnes prsentes dans la vue en cours dans Lotus Notes Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 258 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 259 4.GOOGLE 4.1 Gestion des contacts Google 4.1.1 Prsentation Le service Google Contact permet de grer des con- tacts sur Internet. WinDev et WebDev permettent par exemple de raliser une application qui syn- chronise les contacts d'un applicatif existant avec les contacts de Google Contact. Avertissement : Avant d'utiliser une fonctionnalit relie des services Google, nous vous conseillons vivement de vous reporter la licence d'utilisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. 4.1.2 Comment grer les contacts Google ? Pour grer les contacts Google : 1. Crez si ncessaire un compte Google. La cra- tion de ce compte peut tre ralise grce l'adresse suivante : http://code.google.com/intl/fr/ apis/maps/signup.html. Attention : l'adresse de cette page peut tre modi- fie depuis la date de rdaction de cette page. Le compte Google est identifi par une adresse email et le mot de passe associ. 2. Dans le code de votre application, crez une variable de type gglConnexion. Cette variable con- tient les caractristiques de la connexion votre compte Google. Pour crer un contact Google : Un contact Google peut tre cr soit par l'interface de Google, soit par programmation l'aide des fonctions WLangage. Pour crer un contact Google grce aux fonctions WLangage : 1. Crez une variable de type gglContact. 2. Dfinissez les caractristiques du contact grce aux proprits du type gglContact. 3. Validez la cration du contact grce la fonction GglEcrit. Remarque : Si vous utilisez un proxy pour accder Internet, il est ncessaire de configurer le proxy (fonction Proxy) pour utiliser les fonctions Google. 4.1.3 Comment rcuprer un contact Google ? Pour rcuprer un contact Google : 1. Dclarez un tableau de variables de type ggl- Contact. 2. Utilisez la fonction GglListeContact. Cette fonc- tion permet de lister les contacts. Les contacts trouvs sont affects au tableau de variables de type gglContact. Exemple : 4.1.4 Comment modifier ou supprimer des contacts Google ? Principe : Le principe est simple : Il est ncessaire de recher- cher et de se positionner sur le contact modifier ou supprimer avant de raliser l'opration voulue. Pour modifier un contact : 1. Rcuprez la liste des contacts. 2. Recherchez le contact modifier. 3. Modifiez les caractristiques du contact. 4. Validez les modifications grce la fonction GglEcrit. // Rcupre tous les contacts TabContacts est un tableau de ... 0 gglContact TabContacts = GglListeContact(Cnx) // Parcours des contacts UnContact est un gglContact POUR TOUT UnContact DE TabContacts Trace(UnContact..Nom) FIN WLangage.book Page 259 Mardi, 23. avril 2013 1:59 13 260 Partie 6 : Communication Exemple : Pour supprimer un contact : 1. Rcuprez la liste des contacts. 2. Recherchez le contact supprimer. 3. Supprimez le contact grce la fonction GglSup- prime. Exemple : 4.1.5 Fonctions de gestion des contacts Google Les fonctions suivantes permettent de grer des contacts par le service "Google Contacts" : 4.2 Gestion des agendas Google 4.2.1 Prsentation Le service Agenda Google Calendar est une appli- cation Internet fournie par Google qui permet de grer un agenda sur Internet. WinDev et WebDev permettent par exemple de ra- liser une application de synchronisation de plan- ning avec un applicatif dj en place : utilisation d'une salle de runion, d'un vhicule, ... Ces fonctions WLangage permettent galement de raliser des interfaces spcifiques (adaptes au mtier, plus conviviales, ...) et de rajouter des traite- ments particuliers (impressions, ...). Exemples de traitements ralisables nativement en WLangage : Rcupration de la liste des agendas avec leurs dtails (agendas professionnels, personnels, ...). Rcupration de la liste des rendez-vous d'un agenda. Recherche dans les rendez-vous d'un agenda. Ajout, modification, suppression de rendez-vous. Avertissement : Avant d'utiliser une fonctionnalit relie des services Google, nous vous conseillons vivement de vous reporter la licence d'utilisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. // Rcupre tous les contacts TabContacts est un tableau de ... 0 gglContact TabContacts = GglListeContact(Cnx) // Parcours des contacts UnContact est un gglContact POUR TOUT UnContact DE TabContacts SI UnContact..Nom = "MOULAIN" ALORS UnContact..AdressePostale[1] ..Adresse = "34080 Montpellier" // Mise jour effective des // changements sur le serveur GglEcrit(Cnx, UnContact) FIN FIN // Rcupre tous les contacts TabContacts est un tableau de ... 0 gglContact TabContacts = GglListeContact(Cnx) // Parcours des contacts UnContact est un gglContact POUR TOUT UnContact DE TabContacts SI UnContact..Nom = "MOULAIN" ALORS // Suppression GglSupprime(Cnx, UnContact) FIN FIN GglEcrit Cre ou met jour un contact ou un groupe de contacts. GglListeContact Rcupre la liste des contacts associs au compte Google spcifi. GglListeContactParRe- qute Rcupre une liste de contacts partir de paramtres personnaliss. GglListeGroupeContact Rcupre la liste des groupes de contacts associs au compte Google spcifi. GglRequte Effectue une requte de communication (requte HTTP) un service Google. GglSupprime Supprime un contact ou un groupe de contacts. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 260 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 261 4.2.2 Comment grer un agenda Google ? Pour grer un agenda Google : 1. Crez si ncessaire un compte Google. La cra- tion de ce compte peut tre ralise grce l'adresse suivante : http://code.google.com/intl/fr/ apis/maps/signup.html. Attention : l'adresse de cette page peut tre modifie depuis la date de rdaction de cette page. Le compte Google est identifi par une adresse email et le mot de passe associ. 2. Dans le code de votre application, crez une variable de type gglConnexion. Cette variable con- tient les caractristiques de la connexion votre compte Google. Pour crer un agenda Google : Un agenda Google peut tre cr soit par l'interface de Google, soit par programmation l'aide des fonctions WLangage. Pour crer un agenda Google grce aux fonctions WLangage : 1. Crez une variable de type gglAgenda. 2. Dfinissez les caractristiques de l'agenda grce aux proprits du type gglAgenda. 3. Dfinissez si ncessaire les vnements lis l'agenda (variable de type gglEvnement). 4. Validez la cration de l'agenda grce la fonc- tion GglEcrit. Remarque : si vous utilisez un proxy pour accder Internet, il est ncessaire de configurer le proxy (fonction Proxy) pour utiliser les fonctions Google. 4.2.3 Comment rcuprer un agenda Goo- gle et ses lments ? 1re mthode : rcupration de la liste des agen- das puis de leurs vnements. Pour rcuprer un agenda Google partir de la liste des agendas : 1. Dclarez un tableau de variables de type gglA- genda (pour rcuprer plusieurs agendas). 2. Utilisez la fonction GglListeAgenda. Cette fonc- tion permet de lister les agendas disponibles. Les agendas trouvs sont affects au tableau de varia- bles de type gglAgenda. 3. Utilisez la fonction GglRemplitAgenda pour rcuprer les vnements. Il est possible de rcu- prer les vnements d'un seul ou de plusieurs agendas. Il est possible de filtrer les vnements rcuprer (par exemple entre deux dates). Exemple : 2me mthode : rcupration d'un agenda spcifi- que. Pour rcuprer un agenda Google spcifique et ses vnements : 1. Dclarez une variable de type gglAgenda. 2. Utilisez la fonction GglRcupreAgenda. Cette fonction permet de rcuprer l'agenda Google (et ses vnements) correspondant au titre spcifi. Exemple : 4.2.4 Comment ajouter, modifier ou suppri- mer des vnements dans un agenda Google ? Principe : Le principe de la modification des vnements est simple : l'agenda est rcupr en local, les modifi- cations sont effectues en local, puis l'agenda est mis jour sur le serveur. Remarque : Dans le cas d'agendas partags, il est conseill de mettre jour rgulirement les agen- das sur le serveur TabAgendas est un tableau de ... 0 gglAgenda TabAgendas = GglListeAgenda(Cnx) // Premier agenda Agenda est un gglAgenda Agenda = TabAgendas[1] // Rcupre les vnements entre // le 01/01/2008 et le 01/01/2009 // inclus GglRemplitAgenda(Cnx, Agenda, ... "20080101", "20090102") // Parcours des vnements dun // agenda Evt est un gglEvnement POUR TOUT Evt DE Agenda Trace(Evt..Titre) FIN // Rcupration de l'agenda // nomm "Travail" Agenda est un gglAgenda Agenda = GglRcupreAgenda(Cnx,... "Travail") // Parcours des vnements de // l'agenda SI PAS ErreurDtecte ALORS Evt est un gglEvnement POUR TOUT Evt de gglAgenda Trace(Evt..Titre) FIN FIN WLangage.book Page 261 Mardi, 23. avril 2013 1:59 13 262 Partie 6 : Communication Pour ajouter des vnements un agenda : 1. Rcuprez l'agenda voulu (et si ncessaire ses vnements). 2. Dclarez une variable de type gglEvnement. 3. Dfinissez les caractristiques de l'vnement grce aux proprits de la variable. 4. Utilisez la fonction GglEcrit pour mettre jour l'agenda sur le serveur Exemple : Pour supprimer un vnement d'un agenda : 1. Rcuprez l'agenda voulu et ses vnements. 2. Recherchez l'vnement supprimer. 3. Supprimez l'vnement. 4. Validez les modifications grce la fonction GglEcrit. Remarque : Il est possible d'effectuer plusieurs suppressions avant d'utiliser la fonction GglEcrit. Exemple : 4.2.5 Fonctions de gestion des agendas Google Les fonctions suivantes permettent de grer des agendas par le service Agenda Google Calendar : // Rcupration de l'agenda // nomm "Travail" Agenda est un gglAgenda = ... GglRcupreAgenda(Cnx,"Travail") // Cration d'un vnement MonEvnement est un gglEvnement MonEvnement.DateDbut = ... "20081201085000" MonEvnement.DateFin = ... "20081201093000" MonEvnement.Titre = "Rendez-vous" MonEvnement.Contenu = ... "Rendez-vous concernant"+ ... "le bilan du mois de novembre" // Ajout de l'vnement dans // l'agenda Ajoute(Agenda.Evnement, ... MonEvnement) // Mise jour de l'agenda sur // le serveur GglEcrit(Cnx, Agenda)TabAgendas ... est un tableau de 0 gglAgenda TabAgendas = GglListeAgenda(Cnx) // Rcupre les vnements // futurs du premier agenda GglRemplitAgenda(Cnx, ... TabAgendas[1]) // Cration d'un vnement MonEvnement est un gglEvnement MonEvnement.DateDbut = ... "20081201085000" MonEvnement.DateFin = ... "20081201093000" MonEvnement.Titre = "Rendez-vous" MonEvnement.Contenu = ... "Rendez-vous concernant le"+... "bilan du mois de novembre" // Ajout de l'vnement dans // l'agenda Ajoute(TabAgendas[1].Evnement,... MonEvnement) // Mise jour de l'agenda // sur le serveur GglEcrit(Cnx, TabAgendas[1]) // Rcupration de l'agenda // nomm "Travail" Agenda est un gglAgenda = ... GglRcupreAgenda(Cnx, "Travail") // Suppression du deuxime // vnement de l'agenda Supprime(Agenda.Evnement, 2) // Mise jour effective // des changements sur le serveur GglEcrit(Cnx, Agenda) GglEcrit Cre ou met jour un agenda. GglListeAgenda Rcupre la liste des agendas Google associs au compte Google spcifi. GglRcupreAgenda Rcupre un agenda Google et ses vnements partir de son titre ou identifiant. GglRemplitAgenda Remplit un agenda prcdemment rcupr : les vnements correspondant l'agenda sont rcuprs (ventuellement en utilisant certains critres). GglRemplitAgenda- ParRequte Remplit un agenda prcdemment rcupr : les vnements correspondant l'agenda sont rcuprs partir d'une requte personnalise. GglRequte Effectue une requte de communication (requte HTTP) un service Google. GglSupprime Supprime un agenda. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 262 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 263 4.3 Utiliser le service de gestion d'album photo Google Picasa 4.3.1 Prsentation Picasa Albums Web est une application de gestion d'images et de photos en ligne propose par Goo- gle. Exemples de traitements pouvant tre raliss en WLangage : Rcuprer la liste des albums et tous leurs dtails. Rcuprer la liste des photos d'un album, les tags d'une photo, ... Envoyer des photos, rcuprer des photos, ... Rcuprer et intgrer des photos de comptes Google Picasa. Avertissement : Avant d'utiliser une fonctionnalit relie des services Google, nous vous conseillons vivement de vous reporter la licence d'utilisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. 4.3.2 Comment le faire ? 1. Crez une variable de type gglAlbum. Cette variable contient les caractristiques de l'album. 2. Pour chaque photo intgrer dans l'album, utili- sez une variable de type gglPhoto pour dcrire les caractristiques de la photo. Il est galement possi- ble de dcrire les tags et les commentaires asso- cis la photo. 3. Ajoutez la photo l'album (chaque photo est un lment du tableau DonnesPhoto prsent dans la variable gglAlbum). 4. Utilisez la fonction GglEcrit pour crer l'album photo sur le serveur Google Exemple : MonAlbum est un gglAlbum UnTag est un gglTag UnePhoto est un gglPhoto UnCommentaire est un gglCommentaire // Cration de l'album MonAlbum.Titre = "Vacances d't" MonAlbum.Description = ... "Vacances d't passes ... en Allemagne en famille" MonAlbum.Timestamp = ... "Date et heure UTC" MonAlbum.CommentaireActiv = // Photo 1 UnePhoto.CommentaireActiv = ... VraiUnePhoto.NomFichier = "Test" UnePhoto.Image = ComplteRep(... fRepExe()) + CST_RpImage + ... "US.jpg" UnePhoto.Lgende = ... "Tours prs du fleuve inconnu." // Ajout de tags UnTag.Texte = "tour" Ajoute(UnePhoto.Tag, UnTag) UnTag.Texte = "Etats-Unis" Ajoute(UnePhoto.Tag, UnTag) UnTag.Texte = "By night" Ajoute(UnePhoto.Tag, UnTag) // Ajout de commentaires UnCommentaire.Texte = ... "Superbe photo ! Ajoute(UnePhoto.Commentaire, ... UnCommentaire)... UnCommentaire.Texte = ... "Photo retouche !!! ... "Ajoute(UnePhoto.Commentaire, ... UnCommentaire) UnCommentaire.Texte = ... "Comment as-tu fait ?" Ajoute(UnePhoto.Commentaire, ... UnCommentaire) // Ajout de la photo 1 dans l'album Ajoute(MonAlbum.DonnesPhoto, ... UnePhoto) // Photo 2 UnePhoto = allouer un gglPhoto .. // Permet de rinitialiser UnePhoto.Image = ComplteRep(... fRepExe()) + CST_RpImage+ ... "puzzle.png" Ajoute(MonAlbum.DonnesPhoto, ... UnePhoto) // Photo 3 UnePhoto = allouer un gglPhoto UnePhoto.CommentaireActiv = Faux UnePhoto.NomFichier = ... "Poisson combattant" UnePhoto.Image = ComplteRep( ... fRepExe()) + CST_RpImage + ... "combattant.jpg" Ajoute(MonAlbum.DonnesPhoto, ... UnePhoto) // Photo 4 UnePhoto = allouer un gglPhoto UnePhoto.NomFichier = "Dessin" dDbutDessin(IMG_Map) dCercle(20,20,50,50,VertPastel,... RougeClair) WLangage.book Page 263 Mardi, 23. avril 2013 1:59 13 264 Partie 6 : Communication Pour rcuprer et modifier un album Picasa : 1. Rcuprez l'album Picasa voulu. Il est possible par exemple d'utiliser : la fonction GglListeAlbum pour rcuprer la liste des albums disponibles. la fonction GglRcupreAlbum pour rcuprer un album spcifique. Diffrentes options permettent d'indiquer quels seront les lments rcuprs (vignettes, tags, couvertures, ?). Les images des photos ne seront pas rcupres. la fonction GglRemplitAlbum pour rcuprer les caractristiques d'un album (par exemple un album list par la fonction GlListeAlbum). Diff- rentes options permettent d'indiquer quels seront les lments rcuprs (vignettes, tags, couvertures). Les images des photos ne seront pas rcupres. 2. Pour rcuprer les photos de l'album, parcourez les photos de l'album (proprit ..DonnesPhoto de la variable gglAlbum) et utilisez la fonction GglRem- plitPhoto. Diffrentes options permettent de spci- fier les lments rcuprer. 3. Pour ajouter une photo dans l'album: dcrivez la photo grce une variable gglPhoto. ajoutez la photo l'album (chaque photo est un lment du tableau DonnesPhoto prsent dans la variable gglAlbum). utilisez la fonction GglEcrit sur la variable de type gglAlbum pour mettre jour l'album sur le ser- veur Google. 4. Pour modifier une photo de l'album: modifiez les caractristiques de la photo dans l'album (grce une variable gglPhoto si nces- saire). utilisez la fonction GglEcrit sur la variable de type gglPhoto correspondant la photo modifier pour mettre jour l'album sur le serveur Google Limitations Il n'est pas possible d'ajouter une image au for- mat PNG depuis une application WinDev Mobile. Les fonctions Google Picasa utilisent les API four- nies par Google. Certaines fonctionnalits peu- vent fonctionner sur le service en ligne et tre temporairement bloques via les API par Google. 4.3.3 Fonctions de gestion des albums Picasa Les fonctions suivantes permettent de grer des albums de photos Google Picasa : UnePhoto.Image = ... dSauveImageJPEG(IMG_Map,... enMmoire) IMG_Map = "" Ajoute(MonAlbum.DonnesPhoto, ... UnePhoto) // Cration de l'album SI PAS GglEcrit(sConnexion,... MonAlbum) ALORS Erreur("Erreur la cration"+... "de l'album : " + ErreurInfo) FIN GglEcrit Cre ou met jour un album ou une photo Google Picasa. GglListealbum Rcupre la liste des albums "Google Picasa" disponibles pour l'utilisateur. GglListeCommentaire Rcupre : la liste des commentaires enregistrs pour le compte client Google. la liste des commentaires associs une photo d'un album Google Picasa. GglListePhoto Liste les photos des albums Google Picasa correspondant certains critres. GglListeTag Rcupre : la liste des tags associs un compte client Google. la liste des tags associs un album Google Picasa la liste des tags associs une photo d'un album Google Picasa GglRcupreAlbum Rcupre un album Google Picasa. GglRemplitAlbum Rcupre dans un album Google Picasa, les donnes correspondantes aux options demandes. GglRemplitPhoto Rcupre dans un album Google Picasa, les donnes sur les photos correspondan- tes aux options demandes. GglSupprimer Supprime un album ou une photo Google Picasa. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 264 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 265 4.4 Gestion des documents Google 4.4.1 Prsentation Google Docs et Google Spreadsheet sont respecti- vement le traitement de texte et le tableur en ligne proposs par Google. WinDev et WebDev permettent de grer directe- ment ces documents grce plusieurs fonctions WLangage. Il est possible de : Uploader des documents sur le serveur Google. Traduire des documents automatiquement lors de lupload. Supprimer des documents. Lister les documents et faire une recherche dans les documents. Rcuprer des documents. Avertissement : Avant d'utiliser une fonctionnalit relie des services Google, nous vous conseillons vivement de vous reporter la licence d'utilisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. 4.4.2 Comment grer les documents Google ? Pour grer les documents Google prsents sur un serveur Google : 1. Crez si ncessaire un compte Google. La cra- tion de ce compte peut tre ralise grce l'adresse suivante : http://code.google.com/intl/fr/ apis/maps/signup.html. Attention : l'adresse de cette page peut tre modi- fie depuis la date de rdaction de cette page. Le compte Google est identifi par une adresse email et le mot de passe associ. 2. Dans le code de votre application, crez une variable de type gglConnexion. Cette variable con- tient les caractristiques de la connexion votre compte Google. 3. Pour grer les documents prsents sur le ser- veur Google, utilisez une des fonctions suivantes : Si vous utilisez un proxy pour accder Internet, il est ncessaire de configurer le proxy (fonction Proxy) pour utiliser les fonctions Google. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, Win- Dev Mobile), consultez laide en ligne. 4.5 Utiliser le service de cartographie Google Maps 4.5.1 Prsentation Le service de cartographie Google Maps est un logi- ciel de cartographie Internet propos par Google. Il permet d'afficher un plan en offrant de nombreu- ses possibilits de visualisation. Remarque : Le service de cartographie propos est Google Static Maps. Exemples de traitements pouvant tre raliss en WLangage : Rcuprer une carte, l'afficher dans un champ d'une fentre ou d'un tat et l'envoyer par email. Dfinir la zone de la carte et taille de l'image rcuprer en dfinissant la latitude, la longitude, le taux de zoom, ... Dessiner un itinraire sur la carte (point par point) : un chemin peut par exemple tre rcu- pr lors d'un parcours avec un GPS qui enregis- tre le parcours effectu. Avertissement : Avant d'utiliser une fonctionnalit relie des services Google, nous vous conseillons vivement de vous reporter la licence d'utilisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. GglEnvoieDocument Envoie un document sur le serveur Google. GglListeDocument Rcupre la liste des docu- ments disponibles sur le serveur Google pour l'utilisa- teur en cours GglRcupreDocu- ment Tlcharge un document depuis le service Google Docs. GglSupprime Supprime un document Google du serveur WLangage.book Page 265 Mardi, 23. avril 2013 1:59 13 266 Partie 6 : Communication 4.5.2 Comment le faire ? Rcuprer une carte dans vos applications ou sites Pour intgrer une carte utilisant le service de carto- graphie Google Maps dans vos applications ou sites : 1. Gnrez une cl Google. Cette cl est fournie par Google. La gnration de cette cl peut tre ralise grce l'adresse suivante : http:// code.google.com/intl/fr/apis/maps/signup.html. Attention : l'adresse de cette page peut tre modi- fie depuis la date de rdaction de cette page. 2. Dans votre projet WinDev ou WebDev, crez un champ Image. Ce champ va afficher la carte vou- lue. 3. Dans le code permettant de rcuprer la carte, affectez le rsultat de la fonction GglRcupre- Carte au champ Image. Cette fonction attend les paramtres suivants : la cl Google la latitude et la longitude du point central de la carte le zoom effectu la taille de l'image rcuprer. La taille maximale est 640 x 640. Cette limite est dfinie par le ser- vice de cartographie Google Maps la date de la rdaction de cette page. le type de carte voulu (plan, satellite, ...). Par dfaut, cette carte n'a pas de cadre, est au for- mat GIF et n'a pas de marqueurs. La langue affi- che sur la carte correspond la langue du pays affich. Rcuprer une carte avec paramtrage avanc (marqueurs, ...) Pour intgrer une carte avance utilisant le service de cartographie Google Maps dans vos applica- tions ou sites : 1. Gnrez une cl Google. Cette cl est fournie par Google. La gnration de cette cl peut tre ralise grce l'adresse suivante : http:// code.google.com/intl/fr/apis/maps/signup.html. 2. Dans votre projet WinDev ou WebDev, crez un champ Image. Ce champ va afficher la carte vou- lue. 3. Dans le code permettant de rcuprer la carte : Crez une variable de type gglParamtreCarte. Cette variable va permettre de dfinir toutes les caractristiques de la carte : prsence d'un cadre, affichage d'un chemin, format de l'image reue, marqueurs, ... Indiquez uniquement les caractristiques voulues. Affectez le rsultat de la fonction GglRcupre- Carte au champ Image. Dans le paramtre <Para- mtres avancs>, indiquez le nom de la variable gglParamtreCarte contenant les options vou- lues. Remarques : En cas de dpassement des limites fixes par Google (nombre de points d'un chemin, nombre de marqueurs, taille de l'image, ...), aucune image n'est renvoye. Dans ce cas, il est con- seill de modifier les paramtres de la carte en diminuant le nombre d'lments afficher. Si vous utilisez un proxy pour accder Internet, il est ncessaire de configurer le proxy (fonction Proxy) pour utiliser les fonctions Google. 4.5.3 Autres Services Le service Google Maps permet galement d'obte- nir les coordonnes d'une adresse. Vous pouvez utiliser cette fonctionnalit grce la fonction WLangage GglAdresseVersCoordonnes. Cette fonction renvoie la latitude et la longitude de l'adresse indique dans une variable de type ggl- Coordonne. 4.5.4 Fonctions de gestion des cartes Goo- gle Les fonctions suivantes permettent de grer des cartes par le service de cartographie "Google Maps" : GglAdresseVers- Coordones Rcupre les coordonnes (cou- ple latitude/longitude) d'une adresse. GglRcupre- Carte Rcupre la carte d'un lieu prcis par le service de cartographie Google Maps. GglRequte Effectue une requte de commu- nication (requte HTTP) un ser- vice Google. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, Win- Dev Mobile), consultez laide en ligne. WLangage.book Page 266 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 267 5. SALESFORCE 5.1 Utiliser le service Salesforce 5.1.1 Prsentation Salesforce est un logiciel de CRM trs populaire travers le monde. Il est commercialis sous forme de Saas (Software as a Service), c'est--dire que l'application et les donnes sont hberges sur des fermes de serveurs par Salesforce. Mais il arrive souvent que des besoins trs particu- liers naissent autour de logiciels de ce type. Le dveloppement de modules complmentaires est un atout fort dans l'utilisation et la personnalisation avance de ce type de logiciel. Grce aux fonctions WLangage Salesforce, vos applications peuvent s'interfacer de manire native avec Salesforce. Avertissement : Avant d'utiliser une fonctionnalit relie des services Salesforce, nous vous con- seillons vivement de vous reporter la licence d'uti- lisation de ce service. Certaines restrictions peuvent s'appliquer. Le contenu des licences peut varier avec le temps. PC SOFT dgage toute responsabilit de l'usage qui peut tre fait des fonctions d'accs natif. Il vous appartient de vrifier que l'usage que vous faites respecte la licence du fournisseur du service. 5.1.2 Comment le faire ? Se connecter Salesforce Avant de pouvoir utiliser une fonction WLangage Salesforce, il est ncessaire de se connecter la plate-forme Salesforce. Cette connexion est rali- se grce la fonction SFConnecte et une varia- ble de type sfConnexion. Utiliser les fonctionnalits Salesforce. Les fonctions WLangage Salesforce permettent de : lire, modifier et ajouter des enregistrements dans les fichiers des bases de donnes Salesforce. Ces fichiers peuvent tre des fichiers pr-dfinis ou des fichiers personnaliss. Utiliser les fonctionnalits Salesforce. Les fonctions WLangage Salesforce permettent de : lire, modifier et ajouter des enregistrements dans les fichiers des bases de donnes Salesforce. Ces fichiers peuvent tre des fichiers prdfinis ou des fichiers personnaliss. fusionner des enregistrements. Convertir des pistes ou "Lead" en compte, con- tact ou opportunit. demander l'excution d'un traitement spcifique. Il est possible de soumettre des enregistrements au processus d'approbation ou d'effectuer une action d'approbation. 5.2 Fonctions Salesforce Les fonctions de gestion des bases de donnes Salesforce sont les suivantes : SFAjoute Cre un enregistrement dans un fichier d'une base de donnes Salesforce. SFAvanceRequte Continue d'excuter une requte SOQL (Salesforce Object Query Language) sur les enregistrements d'une base de donnes Salesforce SFConnecte Permet de s'authentifier auprs de la plate-forme Salesforce. SFConvertitPiste Convertit des pistes (galement appeles LEAD). Ces pistes peuvent tre converties en compte, en contact ou en opportunit. SFDconnecte Dconnecte la plate-forme Salesforce, la session Salesforce en cours ou les ses- sions Salesforce spcifies. SFExcuteRequte Excute une requte SOQL (Salesforce Object Query Language) sur une base de donnes Salesforce. WLangage.book Page 267 Mardi, 23. avril 2013 1:59 13 268 Partie 6 : Communication SFExcuteTraiement Demande l'excution d'un traitement spcifique. Il est possible de soumettre des enregistrements au processus d'approbation ou d'effectuer une action d'approba- tion. SFFusionne Fusionne des enregistrements Salesforce (appels galement objets Salesforce). SFLit Rcupre des enregistrements Salesforce partir de leurs identifiants. SFModifie Modifie les enregistrements d'un fichier dfini dans Salesforce. SFRecherche Effectue une recherche parmi les enregistrements d'une base de donnes Sales- force. La recherche est effectue grce au langage SOSL (Salesforce Object Search Language). SFRechercheModifi Recherche et rcupre les enregistrements (objets Salesforce) modifis pendant la priode spcifie. SFRechercheSup- prim Recherche et rcupre les enregistrements (objets Salesforce) supprims pendant la priode spcifie. SFRestaure Restaure des enregistrements Salesforce prcdemment supprims. SFSupprime Supprime des enregistrements d'une base de donnes Salesforce. SFVideCorbeille Vide les enregistrements spcifis de la corbeille Salesforce. WLangage.book Page 268 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 269 6. FLUX RSS 6.1 Prsentation WinDev, WebDev et WinDev Mobile permettent de produire et/ou de consommer un flux RSS (Rapid Simple Syndication). Un flux RSS permet de mettre disposition (pro- duire) un flux de donnes dans un format standard. Ce flux de donnes pourra tre lu (consomm) par une application. Un lecteur de flux RSS permet d'afficher un ou plu- sieurs flux RSS. WinDev est livr en standard avec un exemple de lecteur de flux RSS : WD Lecteur RSS. 6.2 Comment le faire ? Pour lire un flux RSS : 1. Dclarez une variable de type rssFlux. Cette variable contiendra toutes les informations concer- nant le flux RSS manipuler. 2. Chargez le flux RSS grce la fonction rssInitia- lise. La variable de type flux RSS est initialise avec le flux spcifi. 3. Vrifiez que le canal du flux est valide et le char- ger. Par exemple : 4. Le contenu du flux RSS peut tre directement affich dans une table lie par databinding la variable de type rssCanal contenant les entres du flux (dans notre exemple, MonCanal.Entre). Remarque : Il est conseill d'utiliser : soit des boucles de type POUR TOUT par exemple pour lire les entres d'un canal associ un flux. soit des boucles manuelles utilisant la proprit ..Occurrence (utilisable sur le type rssCanal pour connatre le nombre de canaux et sur le type rssEntre pour connatre le nombre d'entres). Databinding et flux RSS Le Databinding est disponible sur les variables de type rssXXX ce qui permet d'afficher des informa- tions RSS sans programmation. 6.3 Fonctions de gestion des flux RSS Les fonctions de gestion des flux RSS sont les suivantes : MonRSS est un rssFlux MonRSS = rssInitialise(... "http://blogs.webdev.info/ rss.awp?blog=supporttechnique",... depuisURL) SI MonRSS.Canal..Occurrence >= 1 ALORS MonCanal est un rssCanal MonCanal = MonFluxRSS.Canal[1] ... rssAffiche Construit un flux RSS et affiche directement le rsultat sur le navigateur de l'inter- naute. rssConstruitChane Construit le flux RSS et renvoie le rsultat au format XML dans une chane de caract- res. rssInitialise Charge en mmoire un flux RSS. rssSauve Construit le flux RSS et sauvegarde le flux RSS dans un fichier XML. WLangage.book Page 269 Mardi, 23. avril 2013 1:59 13 270 Partie 6 : Communication 7. SERVEUR LDAP 7.1 Prsentation Le protocole LDAP (Lightweight Directory Access Protocol) est de plus en plus utilis dans les entre- prises. Ce protocole permet de grer des annuaires en rseau. Ce protocole dfinit les oprations daccs et de recherche dans les donnes, ce qui permet de rendre compatibles des systmes qui ne le seraient pas forcment. Selon les informations stockes dans lannuaire LDAP, vous pouvez par exemple utiliser un annuaire LDAP pour identifier un utilisateur lors de sa con- nexion une application, vrifier les droits de lutili- sateur sur lapplication, ...Fonctions de gestion dun serveur LDAP Les fonctions LDAP disponibles sont les suivantes : LDAPAjouteAttribut Ajoute un attribut ou ajoute une nouvelle valeur un attribut existant. LDAPConnecte Permet de se connecter un serveur LDAP LDAPDbutAjout Initialise l'ajout d'un nouvel objet dans un serveur LDAP. LDAPDbutModification Initialise la modification d'un objet existant dans un serveur LDAP. LDAPDconnecte Permet de se dconnecter d'un serveur LDAP. LDAPListeAttribut Liste les attributs d'un objet d'un serveur LDAP. LDAPListeFils Liste les fils d'un objet d'un serveur LDAP. LDAPMode Modifie le mode de fonctionnement d'une session LDAP LDAPNbValeur Renvoie le nombre de valeurs d'un attribut. LDAPRAZ R-initialise la structure LDAPSession utilise par la fonction LDAPConnecte. LDAPRecherche Lance une recherche dans un serveur LDAP. La recherche effectue est tou- jours rcursive. LDAPRemplaceAttribut Remplace toutes les valeurs d'un attribut par une valeur donne. LDAPRemplaceValeurAttri- but Remplace une valeur donne d'un attribut par une nouvelle valeur donne. LDAPRenommeAttribut Renomme un attribut. Lors de ce renommage, la valeur des attributs est con- serve. LDAPSupprime Supprime un objet du serveur LDAP. Pour des raisons de scurit, l'objet est supprim uniquement s'il n'a pas de fils. LDAPSupprimeAttribut Supprime un attribut et toutes ses valeurs. LDAPSupprimeValeurAttribut Supprime une valeur d'un attribut spcifi. LDAPValeur Renvoie la valeur correspondant l'indice pass en paramtre pour l'attribut spcifi. LDAPValideAjout Valide l'ajout d'un nouvel objet dans un serveur LDAP. LDAPValideModification Valide la modification d'un objet existant dans un serveur LDAP. Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 270 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 271 8. WINDEV ET LA TLPHONIE 8.1 Prsentation WinDev permet de grer simplement les appels tlphoniques entrants et sortants grce aux fonc- tions WLangage de tlphonie. Ces fonctions per- mettent par exemple de grer une bote vocale, un rpondeur, ... directement dans une application WinDev. Configuration ncessaire WinDev Pour pouvoir utiliser les fonctionnalits de la tl- phonie, il est ncessaire de possder : un modem. Pour enregistrer et jouer des enregistrements, ce modem doit grer la voix. Pour avoir les caractristiques de la personne qui appelle, le modem doit possder l'option "Notifica- tion du numro appelant" (caller Id). le protocole Tapi 2.0. Cette technologie est utili- sable sur tous les systmes, cependant, il est ncessaire : si le systme utilis est Windows NT4, d'instal- ler le service pack 4 minimum si le systme est Windows 95, de mettre jour le systme (mise jour disponible l'adresse ftp://ftp.microsoft.com/developr/tapi/ tapi2195.zip). Adresse valide lors de la ralisation de cette documentation. Vrifier la configuration Pour vrifier la configuration de votre poste, il est conseill de lancer WDTelDiagno.exe livr avec WinDev. Cet outil permet de lister les lignes TAPI disponibles, et prcise la ligne qui sera utilise par dfaut lors de l'utilisation des fonctions de tlpho- nie. Il est ainsi possible de dtecter rapidement les conflits pouvant exister entre les diffrentes lignes TAPI. Remarque : Les lignes TAPI sont diffrentes des lignes tlphoniques classiques disponibles. Avant d'utiliser les fonctions de tlphonie, il est possible de dterminer par programmation le pri- phrique TAPI sur lequel la dtection d'appels ou la composition d'appels doit tre effectue. Utilisez les fonctions : Configuration ncessaire WinDev Mobile Pour pouvoir utiliser les fonctions de tlphonie, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphoni- que (type GSM). et/ou sur un smartphone. 8.2 Grer les appels entrants La gestion des appels entrants est ralise dans un "Thread" spcifique. Lorsquun appel entrant est dtect, la procdure associe au thread est excu- te. C'est dans cette procdure que la gestion de l'appel est ralise. 8.2.1 Les diffrentes tapes Pour grer les appels entrants dans une applica- tion WinDev : 1. Dterminez si ncessaire le priphrique TAPI sur lequel la dtection d'appels doit tre effectue. Utilisez les fonctions : WD WDMobile telCapacit Permet de connatre les possibili- ts d'un priphrique TAPI telListePriph- rique Permet de connatre la liste des priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le pri- phrique utiliser dans les fonc- tions TAPI. telCapacit Permet de connatre les possibili- ts d'un priphrique TAPI telListePriph- rique Permet de connatre la liste des priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le pri- phrique utiliser dans les fonc- tions TAPI. WLangage.book Page 271 Mardi, 23. avril 2013 1:59 13 272 Partie 6 : Communication 2. Dmarrez la dtection d'appels entrants grce la fonction telDmarreDtectionAppel. Cette fonc- tion excute une procdure WLangage spcifique. Cette procdure sera automatiquement excute lorsquun appel entrant sera dtect. 3. Dans cette procdure, vous pouvez : connatre l'tat de l'appel grce aux constantes suivantes : grer compltement l'appel grce aux fonctions suivantes : obtenir les caractristiques de l'appel entrant : effectuer des oprations spcifiques : Attention : Cette procdure WLangage tant excute dans un thread, toutes les contraintes des threads doivent tre respectes (ouverture de fentre impossible, pas de gestion des timers, pas de gestion des v- nements, ...). Pour plus de dtails, consultez laide en ligne. Il est conseill de limiter les traitements raliss dans cette procdure. En effet, pendant la dure de l'appel, la dtection d'autres appels (ainsi que tous les vnements de tlphonie) est gele. Si des traitements longs doivent tre raliss, il est conseill de traiter l'appel dans le thread principal de l'application (voir exemple ci-dessous). 4. Pour terminer la session de dtection d'appels entrants, utilisez la fonction TelFinDtectionAppel. 8.2.2 Exemple Cet exemple permet de grer les appels entrants dans le thread principal. Code de dclaration des globales de la fentre ralisant la dtection d'appels. Dans ce code sont dclars les diffrents vnements permet- tant de grer les appels dans le thread principal de l'application. telLigneOccupe La ligne est actuellement occupe telLigneDcroche La ligne est connecte telLigneNumrote Numrotation en cours telLigneTonalit La ligne reoit la tonalit telLigneRaccroche Le correspondant a raccro- ch telLigneAttendR- ponse L'appel est compos : recher- che du correspondant telLigneSonnerie Sonnerie en cours chez le correspondant telNouvelAppel Nouvel appel dtect en attente de rponse ou de rejet. telInformationAppel Les informations supplmen- taires (prsentation du numro) sont disponibles. Ces informations ne sont gnralement disponibles qu'aprs la premire sonne- rie. telAppelDbut Renvoie la date et heure du dbut d'appel telAppelEstTermin Permet de savoir si l'appel est termin telAppelFin Renvoie la date et heure de la fin de l'appel telDureAppel Renvoie la dure de l'appel telNumroAppelant Renvoie le numro de tl- phone appelant telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonc- tion TelJoue) telEnregistre Enregistre la communication en cours sous forme d'un fichier .WAV. telJoue Joue un fichier sonore (.WAV) pour la ligne spcifie. Il est par exemple possible de jouer ainsi le message du rpon- deur. telNumrote Permet de simuler l'utilisation des touches du clavier tl- phonique. telRpondAppel Rpond un appel entrant (pralablement dtect) telToucheEnfonce Permet de connatre l'histori- que des touches enfonces sur le clavier tlphonique. GLOBAL gnIdEvenement est un entier //Evnement pour grer //les appels entrant en popup WLangage.book Page 272 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 273 Code d'initialisation de la fentre : ce code per- met de dmarrer la procdure de dtection d'appels. Procdure de dtection d'appels : Cette proc- dure permet de dtecter les appels entrants. Pour chaque appel entrant, les caractristiques de l'appel sont transmises au thread principal grce la fonction PostMessage. Attention : Les traitements raliss dans cette procdure sont appels partir d'un thread. La gestion de l'affichage doit tre ralise partir du thread principal (d'o l'utilisation de PostMes- sage). Pour dboguer ce type de traitement, vous devez utiliser la fonction Trace. 8.3 Grer les appels sortants 8.3.1 Les diffrentes tapes Pour grer les appels sortants dans une application WinDev : 1. Dterminez si ncessaire le priphrique TAPI sur lequel la composition des appels doit tre effec- tue. Utilisez les fonctions : 2. Composez le numro de tlphone l'aide du modem (fonction telCompose). 3. Cette fonction appelle une procdure WLangage spcifique permettant de grer la progression de SI Evnement("Appeltect","*.*",... "AppelTel")=0 ALORS Erreur("Impossible de grer "+... "la popup de dtection d'appel",... ErreurInfo()) FIN SI Evnement("FinAppelDetect",... "*.*","AppelTelFin")=0 ALORS Erreur("Impossible de grer "+... "la popup de dtection d'appel",... ErreurInfo()) FIN SI Evnement(... "IdentifiantAppelDetect",... "*.*","AppelTelInfo")=0 ALORS Erreur("Impossible de grer "+... "la popup de dtection d'appel",... ErreurInfo()) FIN // Service de dtection des appels SI telDmarreDtectionAppel(... "AppelEntrant", ... telOptionTypeFax,... "DetectionAppel") ALORS // Le service de dtection des // appels a dmarr Message("Dtection des"+ ... "appels "+" activs") SINON // Le service de dtection des // appels n'a pas dmarr Erreur("Impossible de "+... "dmarrer"+... "la dtection des appels"+RC+... "Dtail de l'erreur :"+RC+... ErreurInfo(errMessage)) FIN PROCEDURE DetectionAppel(... nIdService,nIdAppel,nStatut) // Dtection des appels entrants SELON nStatut // Dtection d'un nouvel appel : // Note : On ne disposera // d'informations supplmentaires // qu'aprs au moins une sonnerie CAS telNouvelAppel : // Signale l'arrive d'un nouvel // appel la fentre principale // pour ouvrir une Popup PostMessage(Handle(Fen_Appel),... "AppelTel",nIdAppel,nStatut) // Informations sur l'appel CAS telInformationAppel : // Signale l'arrive // d'un nouvel appel // la fentre principale // pour ouvrir une Popup PostMessage(Handle(Fen_Appel),... "AppelTelInfo",nIdAppel,nStatut) // La ligne a t raccroche CAS telLigneRaccroche: // Signale l'arrive d'un // nouvel appel la fentre // principale pour ouvrir une Popup PostMessage(Handle(Fen_Appel),... "AppelTelFin",nIdAppel,nStatut) FIN telCapacit Permet de connatre les possibili- ts d'un priphrique TAPI telListePriph- rique Permet de connatre la liste des priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le pri- phrique utiliser dans les fonc- tions TAPI. WLangage.book Page 273 Mardi, 23. avril 2013 1:59 13 274 Partie 6 : Communication l'appel. Dans cette procdure, il est possible de connatre l'tat de la ligne grce aux variables : 4. Dcrochez le combin du tlphone pour com- muniquer. 5. Pendant la communication, il est possible d'utili- ser les fonctions WLangage permettant de manipu- ler l'appel (voir ci-dessous). Il n'est pas ncessaire de prciser d'identifiant d'appel car l'appel trait sera l'appel en cours c'est--dire l'appel sortant. 6. A la fin de l'appel, fermez la ligne avec la fonction TelRaccroche. 7. Raccrochez le combin tlphonique. 8.3.2 Manipuler un appel sortant Les manipulations pouvant tre ralises sur les appels sortants sont les suivantes : obtenir les caractristiques de l'appel sortant : effectuer des oprations spcifiques : 8.4 Fonctions de tlphonie Ces fonctions permettent de manipuler facilement toutes les fonctions de tlphonie d'un modem depuis une application WinDev : telLigneOccupe La ligne est actuellement occupe telLigneDcroche La ligne est connecte telLigneNumrote Numrotation en cours telLigneTonalit La ligne reoit la tonalit telLigneRaccroche Le correspondant a raccro- ch telLigneAttendR- ponse L'appel est compos : recher- che du correspondant telLigneSonnerie Sonnerie en cours chez le correspondant telAppelDbut Renvoie la date et heure du dbut d'appel telAppelEstTermin Permet de savoir si l'appel est termin telAppelEstOccup Permet de savoir si le numro appel est occup telAppelFin Renvoie la date et heure de la fin de l'appel telDureAppel Renvoie la dure de l'appel telAppelPasDeR- ponse Permet de savoir si une rponse a t donne l'appel telNumroAppelant Renvoie le numro de tl- phone appelant telNumroAppel Renvoie le numro de tl- phone appel telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonc- tion telJoue) telEnregistre Enregistre la communication en cours sous forme d'un fichier .WAV. telJoue Joue un fichier sonore (.WAV) pour la ligne spcifie. telNumrote Permet de simuler l'utilisation des touches du clavier tl- phonique. telToucheEnfonce Permet de connatre l'histori- que des touches enfonces sur le clavier tlphonique. telAppelDbut Renvoie la date et heure du dbut d'appel telAppelEnAttente Permet de savoir si l'appel est en attente telAppelEstOccup Permet de savoir si le numro appel est occup telAppelEstTermin Permet de savoir si l'appel est termin telAppelFin Renvoie la date et heure de la fin de l'appel telAppelPasDeRponse Permet de savoir si une rponse a t donne l'appel telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue) telCapacit Permet de connatre les capacits du priphrique TAPI slectionn telCompose Compose un numro de tlphone pour une prise de ligne vocale. WLangage.book Page 274 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 275 telComposeLigne Compose un numro de tlphone pour une prise de ligne vocale, en choisis- sant le priphrique utiliser telDmarreDtectionAppel Dmarre un service de dtection d'appel TelDialerAffiche Ouvre lapplication de tlphonie (dialer) par dfaut et affiche le numro spci- fi. Aucun appel nest dclench TelDialerCompose Ouvre lapplication de tlphonie (dialer) par dfaut du tlphone et compose le numro spcifi telDureAppel Renvoie la dure de l'appel telEnregistre Enregistre la communication en cours sous forme d'un fichier .WAV. telErreur Indique si la dernire fonction Telxxx a renvoy une erreur dans le module TAPI telExcuteTransfert Effectue un transfert d'appel avec possibilit de reprise de l'appel telFinDtectionAppel Termine la dtection d'appel spcifie. telJoue Joue un fichier sonore (.WAV) pour la ligne spcifie. Il est par exemple possible de jouer ainsi le message du rpondeur. telListePriphrique Liste les priphriques TAPI installs sur le poste telMetAppelEnAttente Met un appel en attente telNumroAppelant Renvoie le numro de tlphone appelant telNumroAppel Renvoie le numro de tlphone appel telNumrote Permet de simuler l'utilisation des touches du clavier tlphonique. telOrigine Permet de connatre l'origine d'un appel telPriphrique Slectionne le priphrique TAPI utiliser par dfaut telRaccroche Raccroche une ligne tlphonique ouverte avec la fonction telCompose telRpondAppel Rpond un appel entrant (pralablement dtect) telReprendAppelEnAttente Reprend un appel en attente telToucheEnfonce Permet de connatre la touche actuellement enfonce. telTransfertDirect Effectue un transfert d'appel "en aveugle" Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 275 Mardi, 23. avril 2013 1:59 13 276 Partie 6 : Communication 9. GESTION DES SMS 9.1 Prsentation WinDev Mobile permet de : envoyer simplement des SMS. parcourir les SMS reus. supprimer un ou plusieurs SMS reus. Un SMS (Short Message Service, appel galement Textos, Mini messages, Tlmessages, ...) corres- pond un message texte (160 caractres maxi- mum) envoy sur un tlphone portable. Configuration ncessaire Pour pouvoir utiliser les fonctions SMS, l'applica- tion doit tre installe : sur un Pocket PC disposant d'un accs tlphoni- que (type GSM). et/ou sur un smartphone. WinDev pour Pocket PC permet uniquement d'envoyer des SMS. La rception des SMS se fait de manire standard par l'appareil utilis (Pocket PC, smartphone, tlphone portable, ...). 9.2 La structure SMS 9.2.1 Prsentation La structure SMS est une structure prdfinie du WLangage (aucune dclaration n'est ncessaire). Cette structure permet de crer un SMS. Remarque : Pour remettre zro toutes les varia- bles de la structure SMS, utilisez la fonction SMS- RAZ. 9.2.2 Les diffrentes variables de la struc- ture SMS La structure est compose des membres suivants : WDMobile DateR- ception Date et heure de rception du SMS Remarque : Sur Pocket PC 2002, ce membre contient la date et lheure de lecture du SMS. Essai Boolen (Vrai par dfaut) Indique si le message doit tre rgulirement envoy en cas de non-rception. Indice Entier correspondant lindice du SMS reu. Message Chane de caractres contenant le message envoyer ou reu (160 caractres maximum). Numro Chane de caractres contenant le numro du correspondant ou de lexpditeur. Prfixe- National Chane de caractres contenant le prfixe national (33 par dfaut cor- respondant au prfixe pour la France). Si le numro du correspondant commence par "0" et qu'un prfixe national est spcifi, le "0" sera remplac par ce prfixe. Si le prfixe national n'est pas sp- cifi, utilisez directement un numro au format international. Par exemple, 33612345678. TypeNu- mro Indique le type de numro utilis : smsNumroInternational (valeur par dfaut) : ces num- ros sont accessibles de par- tout et sont de la forme 06.xx.xx.xx.xx. smsNumroNational : numro court, accessible uniquement depuis le territoire national. WLangage.book Page 276 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 277 9.2.3 Lecture et suppression de SMS sur un Smartphone Pour lire et/ou supprimer les SMS sur un Smart- phone (fonctions SMSNbMessage, SMSPremier, SMSSuivant ou SMSSupprime), l'excutable de l'application WinDev Mobile et son framework (librairies WinDev Mobile) doivent tre signs lec- troniquement. Pour raliser cette opration, il est ncessaire d'acqurir un certificat. Remarque : L'utilisation des fonctions SMSEnvoie et SMSRaz ne ncessite aucune signature spcifi- que. 9.2.4 Diffrents types de numros Deux types de numros peuvent tre utiliss pour envoyer des SMS : Les numros courts (galement appels "Natio- naux"). Ces numros sont accessibles unique- ment depuis le territoire national. Les numros classiques (galement appels "Internationaux", de la forme 06.xx.xx.xx.xx). Ces numros sont accessibles depuis n'importe quel endroit. 9.2.5 Fonctionnement diffrent en mode GO et en utilisation relle En mode GO (simulation sur le poste de dveloppe- ment), une erreur WLangage est gnre lors de l'utilisation d'une des variables de la structure SMS. 9.3 Fonctions WLangage Ces fonctions permettent d'envoyer facilement des SMS : Pour plus de dtails sur ces fonctions, consultez laide en ligne. SMSEnvoie Envoie un SMS SMSNbMessage Renvoie le nombre de SMS reus ou le nombre maximal de SMS pouvant tre reus SMSPremier Positionne sur le premier SMS reu SMSRAZ R-initialise toutes les variables de la structure SMS SMSSuivant Positionne sur le suivant SMS reu SMSSupprime Supprime le SMS spcifi WLangage.book Page 277 Mardi, 23. avril 2013 1:59 13 278 Partie 6 : Communication 10. ENVOYER DES FAX 10.1 Prsentation De nombreuses fonctions WLangage permettent d'envoyer des fax par l'intermdiaire du serveur de fax systme disponible sous Windows XP et Win- dows 2000. Comment envoyer des fax ? Pour envoyer des fax depuis une application ou un site, il faut : 1. Configurer le poste partir duquel les fax doi- vent tre envoys. 2. Crer l'application ou le site d'envoi de fax. 3. Configurer si ncessaire par programmation les diffrentes options de configuration du serveur de fax. Remarques : La fonction iAperu / iDestination permet gale- ment denvoyer une impression sur un fax. Sous Windows Vista, la gestion des fax est dispo- nible uniquement avec Windows Vista Profession- nel et Windows Vista Edition Intgrale. 10.2 Configurer le poste "serveur de fax" 10.2.1 Configuration du poste en cours Les lments ncessaires pour envoyer un fax : Windows XP ou 2000, un modem configur sur le poste, le service de fax standard Windows doit tre dmarr. 1. Vrifier la configuration du modem Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de con- figuration") et slectionnez l'option "Modem et tl- phonie". 2. Installer un serveur de fax standard Windows version XP et 2000 est livr avec un ser- veur de fax. Pour installer ce serveur de fax, utilisez l'option "Ajout / Suppression de programmes" du panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de configuration"). 3. Vrifier que le service de fax standard de Win- dows est en mode rception. 10.2.2 Configuration du serveur de fax sous Windows 2000 Sous Windows 2000, le serveur de fax est appel "Tlcopieur". Pour configurer le serveur de fax : 1. Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtre .. Panneau de confi- guration"). 2. Double-cliquez sur l'option "Tlcopieur". Si cette option n'apparat pas, installez le serveur de fax de Windows 2000 (voir ci-dessus). 3. Slectionnez l'onglet "Options avances" et cli- quez sur le bouton "Ouvrir la console de gestion du service de tlcopie". 4. L'option "Priphrique" liste les modems et fax installs sur le poste. 5. Double-cliquez sur votre modem/fax. 6. Dans l'onglet "Gnral", activez l'envoi de fax pour pouvoir envoyer des fax depuis une applica- tion ou un site. 7. Validez. Remarque : Pour crer un fichier de couverture (.Cov), utilisez l'onglet "Page de garde". 10.2.3 Configuration du serveur de fax sous Windows XP Pour configurer le serveur de fax : 1. Slectionnez l'option "Dmarrer .. Impression et Fax". 2. Double-cliquez sur l'option "Fax". Le moniteur de fax s'ouvre. 3. Slectionnez l'option "Outils .. Configuration". 4. Validez les paramtres par dfaut, jusqu'au plan "Configuration de rception et d'envoi des fax". 5. Activez l'envoi de fax pour pouvoir envoyer des fax depuis une application ou un site. 6. Validez. Le serveur de fax est dmarr. Remarque : Pour crer un fichier de couverture (.Cov), utilisez l'option "Outil .. Page de couverture personnelle". WD WebDev WB Attention : Les manipulations suivan- tes ne s'appliquent que sur le poste ser- veur utilis pour envoyer des fax (et non sur les postes des navigateurs). WLangage.book Page 278 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 279 10.3 Application ou site d'envoi de fax 10.3.1 Envoyer un fax depuis une application ou un site Pour envoyer un fax depuis une application ou un site, il faut : 1. Prparer le fax, c'est--dire le fichier qui va tre envoy. Il est possible galement d'associer une premire page spcifique au fax (appele "Couver- ture"). Cette premire page est un fichier de type ".Cov" et peut tre cre partir du serveur de fax. 2. Utiliser la fonction FaxConnecte. Cette fonction permet de connecter l'application ou le site au ser- veur de fax install sur le poste en cours. 3. Envoyer le fax : soit avec la fonction FaxEnvoie. Lors de cet envoi, il est possible de prciser le nom d'une proc- dure WLangage. Cette procdure sera appele chaque modification de l'tat du fax dans le ser- veur de fax. L'tat du fax peut tre connu par la fonction FaxEtat. soit avec la fonction iAperu / iDestination et les fonctions d'impression. Cette solution permet d'imprimer directement un tat ralis avec l'di- teur d'tats. Dans ce cas, il est possible de don- ner un nom au fax envoy. L'tat du fax pourra ensuite tre connu avec la fonction FaxEtat. Remarque : Il n'est possible d'envoyer qu'un seul fax la fois. Il est cependant possible d'excuter plusieurs fonctions FaxEnvoie la suite : les diff- rents fax seront mis dans la chane d'attente denvoi des fax. La procdure WLangage combine la fonction FaxEtat permettra de connatre le fax en cours de traitement. 4. Lorsque le ou les diffrents fax sont envoys, il suffit de dconnecter l'application ou le site du ser- veur de fax avec la fonction FaxDconnecte. 10.3.2 Envoyer un fax cr avec lditeur dtats Pour envoyer un fax cr avec l'diteur d'tats : Il est possible : soit d'utiliser uniquement la fonction iAperu / iDestination (syntaxe 3). L'tat imprim par la fonction iImprimeEtat sera directement envoy au numro de fax spcifi. Dans ce cas, aucune gestion de suivi du fax n'est possible. soit d'utiliser les fonctions Fax et la fonction iAperu / iDestination (syntaxe 4). La fonction iAperu / iDestination effectue si ncessaire une connexion au serveur de fax et renvoie l'identi- fiant de cette connexion. Cet identifiant peut tre utilis avec les fonctions Fax pour suivre l'volu- tion de l'envoi du fax. 10.4 Configurer le serveur de fax par programmation 10.4.1 Options du serveur de fax Le serveur de fax standard de Windows propose plusieurs options, configurables directement depuis l'interface du serveur de fax. Ces diffrentes options peuvent tre configures directement par programmation, en manipulant la base de regis- tres. Il est possible de paramtrer et d'obtenir : des informations concernant l'envoi de fax (Win- dows 2000). La cl de registre correspondante est HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\Fax // Envoie l'tat "FactureCli" // par fax iDestination(iFax,"0006050402") iImprimeEtat(FactureCli) // Envoie l'tat "FactureCli" // par fax IdConnect est un entier IdConnect = FaxConnecte() IdConnect = iDestination(... iFax,"0006050402",... "MonFax",IdConnect) ... iImprimeEtat(FactureCli) Nombre d'essais Retries Nombre de minutes entre deux tentatives Retry Delay Nombre de jours avant suppression des tlco- pies non envoyes Dirty Days Archiver les tlcopies sortantes ArchiveOutgoingFax Rpertoire des tlcopies sortantes ArchiveDirectory WLangage.book Page 279 Mardi, 23. avril 2013 1:59 13 280 Partie 6 : Communication des informations concernant l'expditeur du fax (Windows 2000) : La cl de registres correspondante est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\F ax\UserInfo : 10.4.2 Astuces Pour raliser un serveur de fax et grer les rexp- ditions de fax, il est prfrable d'indiquer au niveau du gestionnaire de fax les options suivantes : Pas de re-tentative d'expdition des fax : RegistreEcrit("HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Fax","Retries",0) Dlai de 0 mn entre deux tentatives : RegistreEcrit("HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Fax","Retry Delay",0) 0 jour de conservation des fax non envoys : RegistreEcrit("HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Fax","Dirty Days",0) Il est possible de considrer qu'un fax pass par l'tat FaxEtatInit OU FaxEtatAppel et qui revient dans l'tat FaxEtatInactif est un fax qui a tent d'tre expdi une fois. Ce fax peut ensuite tre rexpdi (il ne sera pas rexpdi automatique- ment car l'option "Pas de re-tentative d'expdition des fax" est vrai). 10.5 Fonctions de gestion des fax Ces fonctions permettent d'envoyer des fax depuis une application ou un site : Remarque : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax. Impression de la ban- nire du haut Branding Interdire les pages de garde personnel ServerCoverPageOnly Heure de dbut de la priode de tarif rduit StartCheapTime Heure de fin de la priode de tarif rduit StopCheapTime Numro de fax expditeur FaxNumber Adresse Messagerie Mailbox Socit Company Titre Title Nom complet FullName Service Department Adresse professionnelle Office Tlphone personnel HomePhone Tlphone professionnel OfficePhone Affiche le moniteur d'tat en envoi ET rception VisualNotification Moniteur d'tat toujours Dessus AlwaysOnTop Avertissement sonore SoundNotification Code de facturation BillingCode FaxBoteEnvoi numre les fax en attente ou en cours d'envoi FaxBoteRception numre les fax en attente ou en cours de rception FaxConnecte Ouvre une connexion un serveur de fax FaxDeconnecte Ferme la connexion un serveur de fax FaxEnvoie Envoie un fax FaxEtat Renvoie l'tat du fax spcifi FaxRinitialise Redmarre un fax dans la file d'attente FaxReprend R-active un fax mis en pause dans la file d'attente FaxSupprime Supprime un fax de la file d'attente et annule son envoi FaxSuspend Met en pause un fax dans la file d'attente Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 280 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 281 11. RCUPRER DES PAGES HTML 11.1 Prsentation Il est possible de rcuprer des pages au format HTML. Pour rcuprer des pages HTML, il suffit de : 1. Excuter une requte sur le serveur Web grce la fonction HTTPRequte. Cette requte peut tre de type GET ou POST. Cette requte peut tre excute sur une URL clas- sique ou sur une URL protge. 2. Rcuprer le rsultat de la requte avec la fonc- tion HTTPDonneRsultat. Grce ces fonctions, il est possible de rcuprer : le contenu complet dune page HTML, des fichiers de donnes, des images, ... 11.2 Fonctions HTTP Les fonctions permettant de grer les requtes HTTP sont les suivantes : HTTPAjouteFichier Ajoute un fichier dans un formulaire HTTP. HTTPAjouteParamtre Ajoute un paramtre dans un formulaire HTTP. HTTPAnnuleFormu- laire Annule une dclaration de formulaire HTTP et libre toutes ses ressources. HTTPCertificat Modifie le certificat client utilis par dfaut pour s'identifier sur un serveur. HTTPCookieEcrit Ajoute ou modifie un cookie. HTTPCookieGre Active/dsactive la gestion des cookies lors des appels de la fonction HTTPRequete HTTPCookieLit Retourne la valeur d'un cookie reu suite une requte HTTP. HTTPCookieRAZ Supprime l'ensemble des cookies (globalement ou pour un domaine) stocks par les appels la fonction HTTPRequte. HTTPCookieRcupre Rcupre les cookies lus par un appel HTTPRequte pour un domaine HTTP. HTTPCookieRemplace Remplace l'ensemble des cookies stocks pour un domaine pour la fonction HTT- PRequte. HTTPCreFormulaire Cre un formulaire HTTP. HTTPDestination Indique le fichier de sauvegarde du rsultat de la prochaine requte HTTP, excute dans le mme thread. HTTPDonneRsultat Rcupre le rsultat ou l'en-tte de la dernire requte HTTP lance (cette requte a t lance par la fonction HTTPRequte) HTTPEnvoieFormu- laire Envoie un formulaire HTTP. HTTPJauge Gre une jauge lors de la rception d'une requte HTTP HTTPListeCertificat Liste les certificats client prsents sur la machine pour s'authentifier sur un serveur. HTTPParamtre Permet de paramtrer les fonctions utilisant le protocole HTTP. HTTPRAZFormulaire Vide un formulaire HTTP en cours d'dition. HTTPRequte Lance une requte HTTP sur un serveur HTTPTimeOut Rgle le Time out pour les fonctions WLangage utilisant le protocole HTTP InternetConnect Dtermine si une connexion Internet (par ADSL ou par modem) est active sur le poste en cours Proxy Indique que les fonctions de communication utilisant le protocole HTTP (fonctions HTTP, DotNet, J2EE et SOAP) passeront par un proxy pour excuter leurs requtes Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 281 Mardi, 23. avril 2013 1:59 13 282 Partie 6 : Communication 12. GESTION DE FICHIERS SUR INTERNET 12.1 Prsentation Pour envoyer et recevoir des fichiers par Internet, WinDev propose plusieurs possibilits : Le FTP ou le RPC WinDev. Ces protocoles ncessi- tent l'utilisation d'un serveur FTP / RPC spcifi- que ralis avec WinDev le FTP standard. Ce protocole ncessite l'utilisa- tion d'un serveur FTP standard. Pour plus de dtails, consultez le paragraphe Communiquer avec un serveur FTP, page 285. Remarque : RPC : Remote Procedure Call FTP : File Transfert Protocol 12.1.1 Envoyer et recevoir des fichiers par FTP ou RPC WinDev : les rgles suivre Pour envoyer et recevoir des fichiers, il faut respec- ter les rgles ci-dessous : 1. Se connecter un serveur FTP WinDev par la fonction NetConnecte. Cette fonction tablit une connexion entre WinDev et le serveur et fournit un identifiant de connexion. 2. Transmettre, rcuprer des fichiers. 3. Fermer la connexion avec le serveur avec la fonction NetDconnecte. Attention : Le protocole de communication TCP/IP doit tre install, et une adresse I.P doit tre dfinie. Un serveur FTP ou RPC WinDev ne fonctionne qu'en mode 32 bits. 12.1.2 Autres fonctionnalits Il est galement possible de : Obtenir le nom et l'adresse IP d'une machine. Excuter un programme sur un serveur FTP ou RPC WinDev. Dclencher un vnement Windows sur le ser- veur FTP ou RPC WinDev. Transmettre une chane de caractres un ser- veur FTP ou RPC WinDev. 12.2 Utilisation dtaille du FTP / RPC WinDev 12.2.1 tape 1 : Etablissement d'une con- nexion avec un serveur RPC / FTP WinDev Pour transfrer des fichiers, il est ncessaire d'ta- blir une connexion avec un serveur RPC ou FTP WinDev. L'tablissement de la connexion est ra- lis avec la fonction NetConnecte. Le code d'ta- blissement d'une connexion doit se trouver avant la premire fonction "Net". La valeur retourne par NetConnecte doit tre conserve car celle-ci sera utilise par les autres fonctions "RPC" et "FTP". Le code pour se connecter un serveur RPC est par exemple le suivant : 12.2.2 tape 2 : Transmission d'un fichier un serveur FTP WinDev Dans l'exemple suivant un fichier est transmis au serveur FTP WinDev (fonction NetEnvoieFichier). Une jauge de progression permet de suivre la pro- gression du transfert. WD Fonction ConnexionRPC (Adresse,... Utilisateur, Motdepasse) //Connexion un serveur RPC NumConnexion est un entier NumConnexion = NetConnecte(... Adresse, ServeurRPC, ... Utilisateur, Motdepasse) Renvoyer NumConnexion - - Code d'initialisation de la - - fentre "ClientRPC" GLOBAL Transfert_Termin est un boolen Transfert_Termin = Faux Transfert_EnCours est un boolen Transfert_EnCours = Faux Evnement("Jauge_Transfert",... "ClientRPC", "EnvoieFichier") .... hConnect est un entier hConnect = NetConnecte(... "148.61.125.245", ServeurFTP,... "GUEST", "") - - Bouton d'envoi du transfert SI Transfert_EnCours = Vrai ALORS ... WLangage.book Page 282 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 283 12.2.3 tape 3 : Rcupration d'un fichier depuis un serveur FTP WinDev La fonction NetRcupreFichier permet de rcup- rer un fichier prsent sur le serveur FTP / RPC WinDev. Remarque : il est possible de connatre facilement la liste des rpertoires et fichiers sur un serveur FTP WinDev. Vous pourrez trouver un exemple dans la description d'utilisation de la fonction NetListe- Rep. 12.2.4 Etape 4 : Fermeture d'une connexion avec un serveur RPC / FTP WinDev Aprs avoir transfr des fichiers, il est ncessaire de rompre la connexion avec le serveur RPC ou FTP WinDev. La dconnexion est ralise avec la fonc- tion NetDeconncete. Le code de dconnexion doit se trouver aprs la dernire instruction "Net". La variable "NumConnexion", ncessaire la dcon- nexion, contient la valeur retourne par NetCon- necte. Le code pour se dconnecter d'un serveur RPC WinDev est le suivant : Erreur("Un transfert de "+... "fichiers est actuellement "+... "en cours") SINON Transfert_Termin = Faux Transfert_EnCours = Vrai SI NetEnvoieFichier(hConnect,... "C:\autoexec.bat", ... "C:\autoexec.cli", ... "EnvoieFichier", 10) = Faux ALORS Info("chec du transfert") FIN ... FIN - - Procdure Jauge_Transfert : - - gestion du transfert en cours Procdure Jauge_Transfert Message("Transfert en cours") Jauge(_EVE.wParam, _EVE.lParam) SI _EVE.wParam = _EVE.lParam ALORS Transfert_EnCours = Faux Transfert_Termin = Vrai Message("Transfert termin") Info("Transfert termin") FIN -- Code d'ouverture de la fentre // Demande d'un message disponible // Windows GLOBAL WM_MYMESSAGE est un entier lpString est une chane fixe ... sur 20 lpString = "Jauge_Main" ... hConnect est un entier // Connexion hConnect = ... NetConnecte("148.61.125.245",... ServeurFTP, "GUEST", "") WM_MYMESSAGE = ... AppelDLL32("USER32", ... "RegisterWindowMessageA" lpString) // Branchement de la procdure Jauge // sur ce message Evnement("MAJJauge", "MAIN",... WM_MYMESSAGE) -- Code du bouton de rcupration -- de fichier Sablier(Vrai) SI PAS NetRcupreFichier(... hConnect,... "C:\autoexec.bat", ... "C:\autoexec.cli", ... WM_MYMESSAGE, 10) ALORS Erreur("Erreur dans le "+... "transfert de fichiers") FIN Sablier(Faux) - - Procdure MAJJauge() Procdure MAJJauge() // Affichage de la jauge // Si tout le fichier est // transfr, // on rinitialise la jauge SI _EVE.wparam = _EVE.lparam ALORS // Transfert termin Jauge() SINON // Transfert en cours Jauge(_EVE.wparam,... _EVE.lparam, ... "Transfert en cours") FIN //Dconnexion un serveur //RPC WinDev //NumConnexion contient la valeur //retourne par NetConnecte NetDeconnecte(NumConnexion) WLangage.book Page 283 Mardi, 23. avril 2013 1:59 13 284 Partie 6 : Communication 12.3 Fonctions Net Les fonctions permettant de grer les communications FTP/RPC WinDev sont les suivantes : NetAdresseIP Renvoie l'adresse IP (Internet Protocol) d'un poste NetAdresseMAC Renvoie l'adresse MAC de l'une des cartes rseau de la machine. NetConnecte Connecte un serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev NetDconnecte Dconnecte d'un serveur FTP (File TRansfert Protocol) ou RPC (Remote Procdure Call) ralis avec WinDev NetDmarreServeur Lance un serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ra- lis avec WinDev NetEnvoieBuffer Transmet une chane de caractres un serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev NetEnvoieFichier Transmet un fichier un serveur FTP (File Transfer Protocol) ralis avec WinDev NetEnvoieMessage Dclenche un vnement Windows sur le systme d'un poste serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev NetEnvoieMessageClient Envoie un message du poste serveur vers tous les postes clients connects NetExcute Excute un programme spcifique sur un serveur FTP (File Transfert Protocol) ou RPC (Remote Procdure Call) ralis avec WinDev NetFermeAccsDistant Ferme la ligne prcdemment ouverte par la fonction NetOuvreAccsDistant NetFinServeur Arrte un serveur FTP (File TRansfert Protocol) ou RPC (Remote Procdure Call) ralis avec WinDev et prcdemment lanc avec la fonction NetDmarreServeur NetInfoAccsDistant Renvoie des informations, statistiques sur l'tat d'une connexion NetIPVersMAC Renvoie l'adresse MAC correspondant l'adresse IP fournie. NetListeAccsDistant Renvoie la liste des accs distants disponibles NetListeAdresseIP Renvoie la liste des adresses IP (Internet Protocol) d'une machine. NetListeDisque Liste les disques disponibles NetListeRep Liste les rpertoires et les fichiers NetMACVersIP Renvoie l'adresse IP correspondant une adresse MAC NetMessageBoxClient Affiche une bote de dialogue sur chaque poste client connect au serveur NetMessageBoxDistant Affiche une bote de dialogue sur l'cran du poste serveur FTP (File Transfer Proto- col) ou RPC (Remote Procedure Call) ralis avec WinDev NetMsgErreur Renvoie le message d'erreur correspondant au numro d'erreur retourn par les fonctions NetOuvreAccsDistant et NetFermeAccsDistant NetNomMachine Renvoie le nom de la machine locale NetOptionServeur Gre les droits des clients sur le poste serveur (serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev) NetOuvreAccsDistant tablit une connexion distante avec un modem NetRcupreFichier Rcupre un fichier existant sur un serveur FTP (File Transfer Protocol) ralis avec WinDev NetRenommeFichier Renomme (ou dplace) un fichier prsent sur le serveur FTP (File Transfer Proto- col) ou RPC (Remote Procedure Call) ralis avec WinDev NetSupprimeFichier Supprime un fichier prsent sur le serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev Pour plus de dtails sur ces fonctions, consultez laide en ligne. WLangage.book Page 284 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 285 13. COMMUNIQUER AVEC UN SERVEUR FTP 13.1 Manipuler des fichiers sur un serveur RPC 13.1.1 Prsentation Le FTP (File Transfer Protocol) est un protocole de transfert de fichiers d'un site vers un autre site dis- tant. Ce protocole permet d'changer des fichiers par TCP/IP, Wi-Fi ou Internet. Sur Internet, plusieurs milliers de serveurs de fichiers sont accessibles par FTP. Ces serveurs pro- posent des logiciels shareware ou freeware, acces- sibles au public. Des fonctions WLangage vous permettent de grer des fichiers sur un serveur FTP depuis vos applica- tions ou depuis vos sites. 13.1.2 Le FTP Convention d'utilisation En thorie, il n'est pas possible de se connecter un site par FTP sans un compte FTP et un mot de passe. Seul un utilisateur possdant un compte et un mot de passe peut se connecter sur ce site. En pratique, tous les serveurs prsents sur Inter- net ont un compte Anonymous. Le mot de passe de ce compte n'est pas mis en place, mais il est demand de saisir son adresse email. Pour rapatrier uniquement des fichiers prsents sur un serveur FTP, il suffit de se connecter en "uti- lisateur anonyme". Pour envoyer des fichiers sur un serveur FTP (par exemple pour envoyer des pages HTML sur votre site Web), il est ncessaire d'avoir un compte non- anonyme et un mot de passe. 13.1.3 Principe d'utilisation Pour manipuler des fichiers sur un serveur FTP depuis une application ou un site, il est ncessaire de suivre les rgles suivantes : 1. Connexion un serveur FTP (fonction FTPCon- necte). 2. Transmission et rcupration des fichiers (selon le mode de connexion tabli). En cas de connexion passive, l'application ou le site doit demander l'autorisation au serveur FTP avant chaque manipu- lation de fichiers sur le serveur. Il est galement possible de : obtenir les caractristiques sur des fichiers pr- sents sur un serveur FTP : attributs, taille, ... manipuler des fichiers prsents sur un serveur FTP : cration, suppression, ... lister les fichiers d'un rpertoire prsent sur un serveur FTP en lanant une procdure effectuant un traitement pour chaque fichier trouv. 3. Fermeture de la connexion avec le serveur (fonc- tion FTPDconnecte). 13.1.4 Chemin relatif / chemin absolu Les notions de chemin relatif et de chemin absolu sont trs importantes dans une application FTP. Un chemin commenant par un slash est consi- dr comme un chemin absolu : il s'agit du che- min par rapport la racine du serveur FTP (paramtre propre au serveur). ex: /pub/user/FLO Si le chemin ne commence pas par un slash, il est considr comme un chemin relatif, c'est-- dire le chemin par rapport au rpertoire en cours. WLangage.book Page 285 Mardi, 23. avril 2013 1:59 13 286 Partie 6 : Communication Ce rpertoire en cours peut-tre connu ou modi- fi avec la fonction FTPRepEnCours. Lors de la connexion un site FTP, le rpertoire ini- tial (le "home directory" de l'utilisateur) n'est pas forcment la racine du serveur FTP. Il est donc con- seill d'utiliser des chemins relatifs. 13.1.5 Exemple Un exemple complet est livr avec WinDev : WD FTP. Cet exemple permet de se connecter et de se dconnecter d'un serveur FTP. Lorsque la connexion est tablie, l'ensemble des fichiers prsents sur le serveur et sur le poste en cours sont lists. Il est possible de : transfrer les fichiers du poste local sur ce ser- veur FTP, et de rcuprer les fichiers prsents sur le serveur FTP sur le poste local. crer, renommer et supprimer des fichiers et/ou des rpertoires prsents sur le serveur FTP. obtenir les caractristiques des fichiers prsents sur ce serveur FTP (taille et attributs des fichiers, ...). 13.2 Fonctions FTP Les fonctions permettant de grer le FTP (File Transfer Protocol) sont les suivantes : FTPAttribut Identifie les attributs d'un fichier prsent sur un serveur FTP (File Transfer Protocol) FTPCommande Envoie une commande FTP spcifique un serveur FTPConnecte Connecte le poste en cours un serveur FTP (File Transfer Protocol) FTPDate Renvoie les diffrentes dates (cration, modification ou accs) d'un fichier prsent sur un serveur FTP (File Transfer Protocol) FTPDconnecte Dconnecte le poste en cours du serveur FTP (File Transfer Protocol) FTPEnvoie Transfre un fichier ou un rpertoire sur un serveur FTP (File Transfer Protocol) FTPHeure Renvoie les diffrentes heures (cration, modification ou accs) d'un fichier prsent sur un serveur FTP (File Transfer Protocol) FTPListeFichier Liste les fichiers d'un rpertoire d'un serveur FTP et retourne le nombre de fichiers lists FTPNom Renvoie le nom du dernier fichier accd par une fonction FTP (File Transfer Proto- col) FTPProxy Spcifie si les fonctions de communication utilisant le protocole FTP doivent ou non passer par un proxy pour excuter leurs requtes FTPRcupre Transfre un fichier ou un rpertoire d'un serveur FTP (File Transfer Protocol) sur le poste en cours FTPRenommeFichier Renomme ou dplace un fichier prsent sur un serveur FTP (File Transfer Protocol) FTPRepCre Cre un rpertoire sur un serveur FTP (File Transfer Protocol) FTPRepEnCours Identifie ou modifie le rpertoire en cours sur un serveur FTP (File Transfer Protocol) FTPRepSupprime Supprime un rpertoire et son contenu (fichiers et sous-rpertoires) d'un serveur FTP (File Transfer Protocol) FTPSupprimeFichier Supprime un fichier d'un serveur FTP (File Transfer Protocol) FTPTaille Renvoie la taille (en octets) d'un fichier prsent sur un serveur FTP (File Transfer Pro- tocol) Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 286 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 287 14. GESTION DES SOCKETS 14.1 Prsentation Des fonctions WLangage permettent de raliser une gestion avance des sockets. Une socket est une ressource de communication utilise par les applications pour communiquer d'une machine une autre sans se soucier du type de rseau. Ce mode de communication peut par exemple tre utilis pour tablir une communication entre des postes relis par Internet. Avec un Pocket PC, l'change de donnes entre deux machines peut tre effectu : soit par Wi-Fi. soit par ActiveSync. soit par GPRS (attention : tous les abonnements tlphoniques ne permettent pas de connecter deux machines). soit par carte rseau. WinDev, WebDev et WinDev Mobile permettent de grer : Les sockets standard Les sockets UDP Les sockets par infrarouge Les sockets SSL Quelques exemples d'utilisation des sockets : gestion d'une messagerie en temps rel, accs un serveur de news (forum). 14.1.1 Diffrentes possibilits Une application WinDev peut grer les sockets selon diffrents modes : Application WinDev Cliente : l'application se con- necte un serveur quelconque et change des donnes par une socket. Pour plus de dtails, consultez le paragraphe Application WinDev Cliente / Site WebDev Client, page 287. Application WinDev "Serveur simplifi" : l'applica- tion WinDev est un serveur, changeant des informations par une socket avec un seul poste client (socket WinDev conseille sur le poste client mais non obligatoire). Pour plus de dtails, consultez le paragraphe Application WinDev "Serveur simplifi", page 288. Application WinDev "Serveur standard" : l'applica- tion WinDev est un serveur, changeant des informations par sockets avec plusieurs postes client quelconques. Pour plus de dtails, consul- tez le paragraphe Serveur de socket standard, page 289. 14.1.2 Exemple WinDev est livr en standard avec un exemple de gestion des sockets : WD Messagerie instantane. 14.2 Application WinDev Cliente / Site WebDev Client Une application cliente d'un serveur de sockets se connecte un serveur quelconque pour changer des informations par l'intermdiaire d'une socket. Exemple : Une application WinDev cliente ou un site WebDev client peut se connecter un serveur de news standard sur Internet. 14.2.1 Principe dune application cliente ou dun site client Etape 1 : Connexion au serveur Pour se connecter une socket du serveur, il suffit d'utiliser la fonction SocketConnecte. Cette fonc- tion permet d'effectuer une demande de connexion au serveur. La socket est identifie par son port et par une adresse. Etape 2 : change de donnes Lorsque deux postes ont connect leur socket, un flux de communication s'tablit entre ces deux pos- tes. Il est alors possible pour ces deux postes de lire et d'crire des chanes de caractres sur la soc- ket. WLangage.book Page 287 Mardi, 23. avril 2013 1:59 13 288 Partie 6 : Communication Remarque : Pour ne pas bloquer les applications ou les sites, la gestion de la rception des messa- ges est souvent gre par un thread spcifique (pour plus de dtails sur les threads, consultez Gestion des threads, page 294). Pour lire et crire sur la socket du poste serveur, l'application cliente WinDev ou le site client Web- Dev doit utiliser les fonctions SocketLit et Socke- tEcrit. Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple : 1. Le poste client crit sur la socket : il envoie une requte au poste serveur. 2. Le poste serveur effectue une lecture dans la socket. 3. Si une rponse au message est ncessaire, le poste serveur envoie une rponse au poste client. Etape 3 : Fin de la communication Pour terminer la communication, il suffit de fermer la socket depuis le poste client avec la fonction SocketFerme. Remarque : il est galement possible de terminer la communication depuis le poste serveur. 14.2.2 Mode de transmission des informa- tions Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du mes- sage. Plusieurs mthodes sont disponibles pour dtermi- ner la longueur du message lors de la communica- tion entre sockets. Mthode 1 : Mode WinDev / WebDev : Par dfaut, le nombre de caractres du message est indiqu au dbut du message. Ce mode de transmission est conseill lors d'une communication par sockets entre deux applications WinDev, ou entre un site WebDev et une application WebDev serveur. Le message est de la forme : "11\r\nHelloWord" Mthode 2 : Mode standard : La fin du message est signale par un caractre spcifique, dtermin par avance. Ce mode de transmission est conseill lors d'une communication par sockets entre une application WinDev et une autre application, ou entre un site WebDev et un autre site. Dans ce cas, il sera ncessaire d'inclure un caractre spcifique dans le message afin d'indiquer que le message est termin. Le message est de la forme :"Hello world<EOF>" Mthode 3 : Mode standard avec buffer : Corres- pond au mode standard optimis pour les protoco- les les plus utiliss sur Internet. La fonction SocketChangeModeTransmission per- met de modifier le mode de transmission utilis. 14.3 Application WinDev "Serveur simplifi" WinDev offre la possibilit de crer un serveur de socket simplifi. Ce serveur permet de communi- quer avec un seul poste client simultanment. Ce type d'application est trs utile lorsque deux appli- cations distantes ont besoin de communiquer. Remarque : WinDev offre galement la possibilit de crer un serveur de sockets plus labor (ser- veur de sockets standard), grant la connexion de plusieurs postes client simultanment. Pour plus de dtails, consultez le paragraphe Serveur de socket standard, page 289. 14.3.1 Le serveur simplifi Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonc- tion SocketCre. Une socket est associe un port spcifique. Pour simplifier la manipulation de la socket par programmation sur le poste serveur, prcisez le nom de la socket. Le poste client va venir se connecter sur cette soc- ket pour changer des donnes. La connexion entre les deux postes sera effectivement ralise au premier change de donnes entre les deux postes (c'est--dire la premire lecture d'informa- tions par le poste serveur). WD WDMobile WLangage.book Page 288 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 289 La connexion est tablie au premier succs de la fonction SocketLit sur le serveur. Etape 2 : change de donnes Lorsque deux postes utilisent la mme socket, un flux de communication s'tablit entre ces deux pos- tes. Il est alors possible pour ces deux postes de lire et d'crire des chanes de caractres sur la soc- ket. Remarque : Pour ne pas bloquer les applications, la gestion de la rception des messages est souvent gre par un thread spcifique (pour plus de dtails sur les threads, consultez Gestion des threads, page 294). Pour lire et crire sur la socket, l'application serveur WinDev doit utiliser les fonctions SocketLit et Soc- ketEcrit. Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple : 1. Le poste client crit sur la socket : il envoie une requte au poste serveur. 2. Le poste serveur effectue une lecture sur la soc- ket dans un thread. Ds qu'un message est reu, le message est trait par le poste serveur. 3. Si une rponse au message est ncessaire, le poste serveur identifie le poste client (fonction Soc- ketClientInfo), et lui envoie une rponse. Etape 3 : Fermeture de la socket Pour terminer la communication, le serveur peut fermer la socket avec la fonction SocketFerme. Remarque : la socket peut aussi tre ferme par le poste client. 14.3.2 Mode de transmission des informa- tions Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du mes- sage. WinDev propose plusieurs mthodes pour dtermi- ner la longueur du message lors de la communica- tion entre sockets. Mthode 1 : mode WinDev : Par dfaut, le nombre de caractres du message est indiqu au dbut du message. Ce mode de transmission est conseill lors d'une communication par sockets entre deux applications WinDev. Le message est de la forme : "11\r\nHelloWord" Mthode 2 : mode standard : La fin du message est signale par un caractre spcifique, dtermin par avance. Ce mode de transmission est conseill lors d'une communication par sockets entre une application WinDev et une autre application. Dans ce cas, il sera ncessaire d'inclure un caractre spcifique dans le message afin d'indiquer que le message est termin. Le message est de la forme :"Hello world<EOF>" Mthode 3 : mode standard avec buffer : Corres- pond au mode standard optimis pour les protoco- les les plus utiliss sur Internet. La fonction SocketChangeModeTransmission per- met de modifier le mode de transmission utilis. 14.4 Serveur de socket standard WinDev offre la possibilit de crer un serveur de sockets standard. Ce serveur permet de grer la connexion de plusieurs postes client sur une mme socket. Ce principe est utilis par exemple pour crer un serveur de news. 14.4.1 Le serveur de socket standard Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonc- tion SocketCre. Une socket est associe un port spcifique. Il est possible de crer plusieurs soc- kets, chaque socket utilisant un numro de port spcifique. A chaque socket est associ un nom (permettant de manipuler la socket par program- mation) et un numro de port. WD WLangage.book Page 289 Mardi, 23. avril 2013 1:59 13 290 Partie 6 : Communication Etape 2 : Attente de connexion sur la socket Tous les postes souhaitant communiquer avec le poste serveur peuvent se connecter sur la socket : ce sont des postes clients. Le poste serveur gre les diffrentes demandes de connexion des postes clients grce la fonction SocketAttendConnexion. Cette fonction permet de savoir si une demande de connexion est ralise sur une socket spcifique. Il est conseill d'utiliser la fonction SocketAttend- Connexion dans un thread spcifique. Cette fonc- tion est ainsi excute en tche de fond. Lorsquune demande de connexion est dtecte, il est possible : soit d'accepter la connexion (fonction SocketAccepte) : dans ce cas, un canal de com- munication spcifique est cr. Pour ne pas blo- quer les applications, la gestion de la rception des messages est souvent gre par un thread spcifique (pour plus de dtails sur les threads, consultez Gestion des threads, page 294). soit de refuser la connexion (fonction SocketRe- fuse). Exemple L'exemple suivant permet de crer une socket sur le poste serveur, et de grer les connexions des postes clients dans un thread. Si la connexion est accepte, la gestion de cette connexion est rali- se dans un thread spcifique. Il y a un thread excut par connexion. Chaque thread utilise la mme fonction de service "Proc- dureGestion". Pour autoriser l'excution de la pro- cdure par diffrents threads simultanment, il est ncessaire de changer le mode de synchronisation des threads : utilisez la fonction ThreadMode avec le paramtre ThreadSectionCritique dans le code d'initialisation du projet. La synchronisation entre threads doit tre effectue manuellement (pour plus de dtails, consultez Gestion des threads, page 294). Pour diffrencier les threads, leur nom correspond celui du canal de communication (nom unique). Etape 3 : change de donnes Lorsque deux postes utilisent la mme socket, un canal de communication s'tablit entre ces deux postes. Il est alors possible pour ces deux postes de lire et d'crire des chanes de caractres sur la socket. Pour lire et crire sur la socket, l'application serveur WinDev doit utiliser les fonctions SocketLit et Soc- ketEcrit. Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple : 1. Le poste client crit sur la socket : il envoie une requte au poste serveur. 2. Le poste serveur effectue une lecture dans la socket dans un thread. Ds qu'un message est reu, le message est trait par le poste serveur. 3. Si une rponse au message est ncessaire, le poste serveur identifie le poste client, et lui envoie une rponse. Etape 4 : Pour terminer la communication, il suffit de fermer la socket avec la fonction SocketFerme. 14.4.2 Mode de transmission des informa- tions Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du mes- sage. WinDev propose plusieurs mthodes pour dtermi- ner la longueur du message lors de la communica- tion entre sockets. Mthode 1 : mode WinDev : Par dfaut, le nombre de caractres du message est indiqu au dbut du message. Ce mode de transmission est conseill lors d'une communication par sockets entre deux applications WinDev. Le message est de la forme : "11\r\nHelloWord" Mthode 2 : mode standard : La fin du message est signale par un caractre spcifique, dtermin par avance. SI PAS SocketCre("serveur", ... 8000) ALORS Erreur("erreur cration " +... ErreurInfo(errMessage)) SINON ThreadExcute("Thread1", ... threadNormal,... ProcdureAttente) FIN Procdure ProcdureAttente() BOUCLE SI SocketAttendConnexion(... "Serveur") Alors Canal est une chane Canal = SocketAccepte ... ("Serveur") ThreadExcute(Canal, ... threadNormal,... ProcdureGestion, canal) FIN FIN WLangage.book Page 290 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 291 Ce mode de transmission est conseill lors d'une communication par sockets entre une application WinDev et une autre application. Dans ce cas, il sera ncessaire d'inclure un caractre spcifique dans le message afin d'indiquer que le message est termin. Le message est de la forme :"Hello world<EOF>" Mthode 3 : mode standard avec buffer : Corres- pond au mode standard optimis pour les protoco- les les plus utiliss sur Internet. La fonction SocketChangeModeTransmission per- met de modifier le mode de transmission utilis. 14.5 Fonctions Socket Les fonctions permettant de grer les sockets sont les suivantes : SocketAccepte Accepte la connexion d'un poste client sur le poste serveur SocketAttendConnexion Teste si une demande de connexion a t effectue par un poste client SocketChangeModeTransmission Change le mode de transmission utilis sur une socket SocketClientInfo Permet un poste serveur de rcuprer des informations concernant une socket connecte sur un poste client SocketConnecte Permet de se connecter une socket donne SocketConnecteBluetooth Connecte un poste client une socket Bluetooth spcifique. SocketConnecteInfraRouge Connecte un poste client une socket donne, via le port infrarouge SocketConnecteSSL Connecte un poste client un serveur SSL. SocketCre Cr une socket SocketCreBluetooth Cre une socket Bluetooth. SocketCreInfraRouge Cre une socket utilisant le port infrarouge SocketCreSSL Cre une socket SSL. SocketCreUDP Cre une socket utilisant le protocole UDP SocketEcrit Transmet un message entre deux sockets SocketExiste Teste l'existence d'une socket SocketFerme Ferme une socket ou ferme une connexion une socket sur le poste ser- veur SocketLit Rcupre un message envoy par une socket SocketRefuse Refuse la connexion demande par un poste client Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 291 Mardi, 23. avril 2013 1:59 13 292 Partie 6 : Communication 15. GESTION DES CLS BLUETOOTH 15.1 Prsentation Crez facilement un nouveau type d'applications ! Sans contact entre le PC et l'appareil mobile, de nombreux traitements peuvent tre excuts sur le PC en utilisant les donnes du Mobile. Quelques exemples : Une application sur PC (ou Mobile) peut piloter des services sur un priphrique supportant la norme bluetooth. Une application peut automatiquement rcup- rer des photos prsentes sur un tlphone qui passe porte. Une application peut lire la liste des contacts d'un tlphone. Un PC peut imprimer les donnes prsentes sur un PDA. 15.2 Comment le faire ? Pour communiquer par bluetooth, plusieurs familles de fonctions sont votre disposition : Les fonctions Bluetooth (BTxxx) : Ces fonctions permettent de grer les appareils Bluetooth. Il est par exemple possible de lister les services d'un priphrique, de les activer ou dsactiver. Il est galement possible de se faire authentifier auprs d'un priphrique Bluetooth, et d'obtenir diverses informations sur le priphrique. Les fonctions OBEXxxx : Ces fonctions permet- tent de grer les changes de fichiers par le pro- tocole OBEX. Les fonctions SocketConnecteBluetooth et Soc- ketCreBluetooth qui permettent de grer des sockets utilisant des priphriques Bluetooth. 15.3 Quelles cls utiliser ? Les fonctions permettant de manipuler les cls Bluetooth fonctionnement actuellement avec les cls utilisant une pile de protocoles de technologie Microsoft ou Bluesoleil. Pour connatre la pile utili- se, utilisez la fonction BTPile. Certaines fonctions WLangage ne peuvent tre utili- ses qu'avec certains types de piles. Ces informa- tions sont dtailles dans chaque fonction WLangage concerne. Parmi les cls USB compatibles, les cls suivantes utilisent une pile Microsoft (donc sans installer le pilote livr avec les cls) : D-Link DBT-120, Broadcom Bluetooth 2.0 EDR USB, EMTEC Dongle Bluetooth 2.0 EDR - EKCOB110, HAMA Nano Bluetooth Adaptater 2.0 EDR - 10m, Conceptronic Dongle Bluetooth 2.0 EDR - CBT200U2A, Kensington Bluetooth USB Micro Adapter (Blue- tooth 2.0 - USB 2.0), (*) Belkin adaptateur Bluetooth 2.0 - F8T013FR1 - Porte 10 mtres (USB 2.0), (*) Belkin adaptateur Bluetooth 2.0 - F8T012FR1 - Porte 100 mtres (USB 2.0), TrendNet TBW-104UB - Adaptateur USB Blue- tooth 2.0, (*) TrendNet TBW-102UB - Adaptateur Bluetooth Class 2 (Bluetooth 1.1), ... Cette liste non exhaustive sera actualise rgulire- ment. (*) Certaines cls ne fonctionnent pas directement avec Windows, il faut installer un driver avec le mode opratoire suivant : 1. S'il a t install, dsinstaller le pilote fourni avec la cl par "Ajout/Suppression de programmes" du Panneau de Configuration, 2. Insrer le CD livr avec la cl dans le lecteur, NE PAS lancer son excution automatique, 3. Connecter la cl, 4. Indiquer Windows de rechercher le driver sur le CD. Cette mthode permet d'avoir une cl reconnue par Windows, et donc d'utiliser une pile de protocoles Microsoft. WLangage.book Page 292 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 293 15.4 Les fonctions Bluetooth et OBEX 15.4.1 Fonctions Bluetooth Les fonctions permettant de grer les appareils Bluetooth sont les suivantes : 15.4.2 Fonctions OBEX Les fonctions permettant de grer les changes de fichiers par le protocole OBEX sont les suivantes : BTAccepteConnexion Permet de savoir si une radio Bluetooth accepte ou non les demandes de connexion en provenance des priphriques de son entourage. BTActive Active ou dsactive la gestion du Bluetooth sur l'appareil BTActiveService Active un service offert par un priphrique Bluetooth. BTChangeConnectivit Permet de paramtrer une radio Bluetooth pour accepter ou non les demandes de connexion provenant des priphriques de son entourage. BTChangeVisibilit Change la visibilit d'une radio Bluetooth. BTConnectePriphrique Permet de se faire authentifier auprs d'un priphrique Bluetooth. BTDconnectePriphrique Annule l'authentification auprs d'un priphrique Bluetooth. BTDsactiveService Dsactive un service sur un priphrique Bluetooth. BTEstVisible Permet de savoir si une radio Bluetooth est visible. BTEtat Renvoie l'tat actuel d'activation du Bluetooth sur l'appareil ou demande tre notifi des changements d'tat d'activation BTInfoPriphrique Renvoie des informations spcifiques sur un priphrique Bluetooth. BTInfoRadio Renvoie des informations spcifiques sur une radio Bluetooth connecte la machine. BTListePriphrique Liste les priphriques Bluetooth accessibles. BTListeRadio Liste les radios Bluetooth connectes la machine. BTListeService Liste les services offerts par un priphrique Bluetooth. BTOuvrePropritsPriphrique Ouvre la fentre des proprits d'un priphrique Bluetooth. BTPile Renvoie la pile Bluetooth en cours d'utilisation. BTSlecteurPriphrique Ouvre une fentre systme pour slectionner un priphrique Bluetooth. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. OBEXConnecte Permet de se connecter un priphrique supportant le protocole OBEX. OBEXDconnecte Permet de se dconnecter d'un priphrique supportant le protocole OBEX. OBEXEnvoieFichier Envoie un fichier sur un priphrique grant le protocole OBEX. OBEXEnvoieVCard Envoie un fichier VCard (carte de visite virtuelle) un priphrique grant le proto- cole OBEX. OBEXListeFichier Liste les fichiers partags par un priphrique utilisant le protocole OBEX. OBEXRcupreFichier Rcupre un fichier sur un priphrique grant le protocole OBEX. OBEXRcupreVCard Rcupre une VCard sur un priphrique grant le protocole OBEX. Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 293 Mardi, 23. avril 2013 1:59 13 294 Partie 6 : Communication 16. GESTION DES THREADS 16.1 Prsentation Des fonctions WLangage permettent de raliser une gestion avance des threads. Les threads permettent d'excuter du code (ou des traitements) en parallle de l'application principale. Il est ainsi possible d'excuter plusieurs traite- ments diffrents en tche de fond, sans bloquer l'application principale. Les threads remplacent certains types de timer. Un thread efficace est un thread qui attend un v- nement, par exemple, une action de l'utilisateur, la rception d'un email, la rception d'un appel tl- phonique, ... Quelques exemples d'utilisation des threads : Rcupration d'emails en tche de fond, pendant la saisie d'un nouvel email par exemple. Application ou site de communication : gestion des appels tlphoniques, communication par socket, ... 16.1.1 D'une gestion simple des threads vers une gestion avance Il existe plusieurs possibilits de gestion des threads : Excuter des threads. Grer les smaphores dans les threads, c'est-- dire limiter l'excution simultane d'un code par un ou plusieurs threads un instant donn. Grer les signaux afin d'effectuer une synchroni- sation entre plusieurs threads. 16.1.2 Exemple WinDev est livr en standard avec un exemple de gestion des threads : WD Pool de threads. 16.2 Principe dutilisation des threads Une application ou un site est en cours d'excution. Cette application ou ce site s'excute dans un thread principal. A tout moment, cette application ou ce site peut lancer un thread secondaire : ce thread s'excute en parallle de l'application ou du site. Ce thread correspond une procdure (locale ou globale) de l'application ou du site. Ce thread secondaire va s'excuter en parallle de l'application ou du site principal. Il est possible de raliser dans ce thread tous les traitements ralisa- bles en tche de fond : rception des emails, ... Remarque : un thread efficace est un thread qui attend un vnement spcifique, par exemple une action de l'utilisateur, la rception d'un appel tl- phonique ou d'un email, ... 16.2.1 Gestion simple des threads Un thread secondaire est cr avec la fonction ThreadExcute. Un thread secondaire est automatiquement arrt lorsque : la procdure correspondant au thread est termi- ne, l'objet l'origine du thread est ferm. Il est galement possible de forcer l'arrt d'un thread grce la fonction ThreadArrte. Attention : si une fonction WLangage est en cours d'excution lors de l'arrt d'un thread, l'arrt ne sera effectif qu'aprs l'excution de la fonction. Fonctions WLangage Les fonctions suivantes permettent une gestion simple des threads : ThreadArrte Arrte un "thread" secondaire. ThreadExcute Lance l'excution d'un "thread" secondaire. Ce "thread" est non bloquant. ThreadMode Change le mode de gestion des threads. WLangage.book Page 294 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 295 16.2.2 Caractristiques des threads En WLangage, un thread secondaire peut tre asso- ci : une procdure locale la fentre ou la page en cours, une procdure globale au projet, une mthode de classe, une mthode globale de classe 16.2.3 Accs aux lments existants et con- texte HyperFileSQL Lors de la cration d'un thread, toutes les dclara- tions, objets, lments, ... existants sont communs : au nouveau thread secondaire au thread dans lequel le thread secondaire a t cr (dans la plupart des cas, correspond au thread principal). Ces threads peuvent ainsi accder aux variables, procdures, ... Toutes les variables cres aprs le lancement d'un thread sont accessibles unique- ment dans le thread o elles sont cres. De mme, lors de la cration d'un thread, le con- texte HyperFileSQL est automatiquement dupliqu. Chaque thread manipule un contexte HyperFileSQL spcifique. Il y a autant de contextes HyperFileSQL que de threads en cours d'excution. La totalit du contexte HyperFileSQL est recopie (filtre, condition de recherche, ...). Dans chaque thread, le contexte HyperFileSQL volue indpendamment. Il est ainsi possible par exemple de raliser deux parcours diffrents sur le mme fichier dans deux threads diffrents. Exemple : Un filtre est cr sur le fichier Client. La fonction ThreadExcute est appele pour crer le thread CTX2. Dans chaque thread, le fichier client est filtr. Si le filtre est dsactiv dans le thread principal, le filtre sera toujours actif dans le thread CTX2. Attention : Ecritures et affectations dans un thread : Si des critures ou des affectations sont effectues dans un thread, les autres threads en cours d'excution ne partagent pas ces informa- tions. Certaines incohrences peuvent apparatre. Exemple : Ces deux threads partagent les variables mais ne grent pas l'accs aux ressources communes. Si le thread 1 est excut avant le thread 2, i vaudra 1 au lieu de 2. Remarque : Pour partager une affectation entre plusieurs threads, il est ncessaire d'utiliser des smaphores. 16.2.4 Limites des traitements raliss par le thread Traitements interdits Attention : Il n'est pas possible d'excuter les traite- ments suivants dans les threads : Ouverture de fentres WinDev avec les fonctions WLangage telles que Ouvre, Utilise, Ferme, ... Si des fentres doivent tre manipules dans des threads (cas rare), une gestion spcifique doit tre mise en place. Pour plus de dtails, consul- tez Ouverture d'une fentre partir d'un thread secondaire, page 300. Affichage de pages WebDev (ou de contextes de page) avec les fonctions WLangage telles que ContexteOuvre, FramesetAffiche, PageAffiche, PageUtilise, ... Gestion d'vnement. Gestion de timer. Traitements d'une application WinDev / site WebDev Par dfaut, tout traitement WinDev / WebDev (code de clic d'un bouton par exemple), toutes les proc- dures, les mthodes des classes ne peuvent tre excuts que par un seul thread un moment donn. Pour permettre plusieurs threads d'excuter ces traitements en mme temps, il est ncessaire de : 1. Changer le mode de gestion par dfaut des threads (fonction ThreadMode). 2. Grer dans le code de l'application ou du site les sections critiques et les smaphores. Code Thread 1 Code Thread 2 a=i a++ i=a b=i b++ i=b WLangage.book Page 295 Mardi, 23. avril 2013 1:59 13 296 Partie 6 : Communication 16.3 Grer les smaphores dans les threads Les smaphores permettent de limiter l'excution simultane d'un code (procdure, ligne de code, ...) un ou plusieurs threads un instant donn. Par exemple : Deux threads spcifiques sont utili- ss dans une application bancaire : un thread pour crditer les comptes, un thread pour dbiter les comptes. A un instant donn, il ne peut y avoir qu'un crdit de compte ou un dbit de compte. 16.3.1 Principe Le smaphore a t cr avec la fonction Sma- phoreCre. 1. Le thread n1 excute la fonction SmaphoreDbut : aucun thread n'est actuelle- ment prsent dans le smaphore. 2. Le thread n1 excute la partie de code prot- ge par le smaphore. 3. Pendant que le thread n1 excute le code pro- tg par le smaphore, un thread n2 excute la fonction SmaphoreDbut : le code protg par le smaphore tant dj en cours d'excution par le thread n1, le thread n2 attend le dblocage du smaphore. 4. Le thread n1 excute la fonction SmaphoreFin : plus aucun thread n'excute le code du smaphore. 5. Le thread n2 peut excuter le code protg par le smaphore. 6. Le thread n2 excute la fonction SmaphoreFin : plus aucun thread n'excute le code du smaphore. 16.3.2 Mettre en place un smaphore Les diffrentes tapes de la mise en place d'un smaphore sont les suivantes : 1. Cration d'un smaphore avec la fonction Sma- phoreCre. Le smaphore est associ un nom. 2. Appel de la fonction SmaphoreDbut avant la portion de code protger. 3. Appel de la fonction SmaphoreFin pour dlimi- ter la portion de code protger. Les lignes de codes situes aprs la fonction SmaphoreFin ne seront plus protges. 4. Destruction du smaphore avec la fonction SmaphoreDtruit. Remarques : Les parties de code protges par un smaphore doivent tre les plus courtes possibles et concer- ner uniquement des traitements "critiques". WLangage.book Page 296 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 297 Un smaphore de mme nom peut tre utilis pour protger plusieurs zones de code diffren- tes. Un seul thread pourra tre un instant donn dans une des zones protges par le smaphore. Lorsqu'un thread est en attente, les ressources du processeur ne sont pas utilises. Les smaphores s'appliquent aussi bien au thread principal qu'aux threads secondaires (crs avec la fonction ThreadExcute). Il est ncessaire d'viter le blocage du thread principal. En effet, si le thread principal est bloqu (en attente), l'application ou le site ne peut plus s'excuter. Les fonctions SmaphoreDbut et Smaphore- Fin doivent tre utilises dans le mme traite- ment (par exemple dans une procdure). Les fonctions de gestion des smaphores Les fonctions du WLangage spcifiques la gestion des smaphores sont les suivantes : Exemple : Pour raliser une affectation partage par plusieurs threads, il est ncessaire d'encapsu- ler dans un smaphore aussi bien l'affectation des variables que la lecture de ces variables. 16.3.3 Un smaphore limit : la section criti- que Une section critique est un smaphore limit un seul thread sur une seule portion de code (traite- ment, procdure, ...). Au contraire des smaphores, une section critique ne peut tre utilise qu'une seule fois. Par exemple, il est possible d'utiliser une section critique pour protger une procdure de mise jour des champs d'une fentre ou dune page. Les fonctions de gestion des sections critiques Les fonctions du WLangage spcifiques la gestion des sections critiques sont les suivantes : 16.4 Grer les mutex dans les threads Les mutex permettent de limiter l'excution simul- tane d'un code (procdure, ligne de code, ...) un thread un instant donn. Un mutex peut tre par- tag par plusieurs applications. Remarque : D'autres systmes permettent gale- ment de protger une partie de code : les smaphores permettent de limiter l'excution simultane d'un code (procdure, ligne de code, ...) un ou plusieurs threads un instant donn. Un smaphore peut tre partag par plusieurs applications. les sections critiques permettent de limiter l'ex- cution simultane d'un code (procdure, ligne de code, ...) un thread un instant donn dans une seule application. 16.4.1 Principe Le mutex a t cr avec la fonction MutexCre. 1. Le thread n1 excute la fonction MutexDbut : aucun thread n'est actuellement prsent dans le mutex. 2. Le thread n1 excute la partie de code prot- ge par le mutex. 3. Pendant que le thread n1 excute le code pro- tg par le smaphore, un thread n2 excute la fonction MutexDbut : le code protg par le mutex tant dj en cours d'excution par le thread n1, le thread n2 attend le dblocage du mutex. 4. Le thread n1 excute la fonction MutexFin : plus aucun thread n'excute le code du mutex. 5. Le thread n2 peut excuter le code protg par SmaphoreCre Cre un smaphore SmaphoreDbut Bloque le thread en cours en attendant que le smaphore soit ouvert (c'est--dire qu'une place "libre" soit disponible dans la zone protge) SmaphoreD- truit Dtruit explicitement un smaphore SmaphoreFin Autorise un ou plusieurs threads de sortir de la zone protge par le smaphore SectionCritiqueD- but Signale le dbut d'une section critique : aucun autre thread ne pourra excuter le code tant que le thread courant ne sera pas sorti de la section critique SectionCritiqueFin Signale la fin d'une section critique : un autre thread pourra excuter le code WLangage.book Page 297 Mardi, 23. avril 2013 1:59 13 298 Partie 6 : Communication le mutex. 6. Le thread n2 excute la fonction MutexFin : plus aucun thread n'excute le code du mutex. 16.4.2 Comment mettre en place un mutex ? Les tapes : les diffrentes tapes de la mise en place d'un mutex sont les suivantes : Les diffrentes tapes de la mise en place d'un mutex sont les suivantes : 1. Cration d'un mutex avec la fonction MutexCre. Le mutex est associ un nom. 2. Appel de la fonction MutexDbut avant la por- tion de code protger. 3. Appel de la fonction MutexFin pour dlimiter la portion de code protger. Les lignes de code situes aprs la fonction MutexFin ne seront plus protges. 4. Destruction du mutex avec la fonction MutexD- truit. Remarques : Les parties de code protges par un mutex doi- vent tre les plus courtes possibles et concerner uniquement des traitements "critiques". Lorsqu'un thread est en attente, les ressources du processeur ne sont pas utilises. Les mutex s'appliquent aussi bien au thread prin- cipal qu'aux threads secondaires (crs avec la fonction ThreadExcute). Il est ncessaire d'vi- ter le blocage du thread principal. En effet, si le thread principal est bloqu (en attente), l'applica- tion ne peut plus s'excuter. Les fonctions MutexDbut et MutexFin doivent tre utilises dans le mme traitement (par exemple dans une procdure). Les mutex peuvent tre partags ou non entre les diffrentes applications excutes sur le poste. Il suffit d'indiquer le mode de partage des mutex lors de leur cration (fonction MutexCre). 16.4.3 Les fonctions de gestion des mutex 16.5 Synchroniser des threads laide de signaux Les signaux permettent de synchroniser les diff- rents threads d'une application. Un thread peut ainsi attendre l'excution d'un autre thread. Le WLangage propose deux modes de gestion des signaux : gestion simple : synchronisation entre deux threads gestion avance : synchronisation entre plus de deux threads 16.5.1 Gestion simple des signaux Deux threads s'excutent en parallle (un thread principal et un thread secondaire par exemple). Un des threads attend une action spcifique du second thread pour pouvoir s'excuter. Exemple : Application ou site grant un correcteur d'orthographe Lorsque l'utilisateur saisit le caractre ESPACE dans un champ de saisie, le correcteur orthographi- que est automatiquement lanc sur le mot prc- dent. Dans ce cas, la correction orthographique est gre dans un thread secondaire. MutexCre Cre explicitement un mutex MutexDbut Bloque le thread courant en attendant que le mutex soit libre MutexDtruit Dtruit explicitement un mutex. MutexFin Signale que le thread libre le mutex WLangage.book Page 298 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 299 A chaque appui sur la touche ESPACE, le thread principal envoie un signal au thread secondaire afin de lancer le correcteur d'orthographe. Le code est le suivant : Code du thread principal : Code du thread secondaire (ThreadCorrection) : Fonctions du WLangage Les fonctions suivantes permettent de raliser une gestion simple des signaux : 16.5.2 Gestion avance des signaux Une gestion avance des signaux consiste com- muniquer entre plusieurs threads (plus de 2 threads). Certains threads sont en attente d'une tche ralise par le thread principal. Lorsque le thread principal ralise cette tche, il envoie un signal tous les threads secondaires. Mise en place Pour mettre en place une gestion des signaux avan- ce, les diffrentes tapes sont les suivantes : 1. Cration d'un signal (fonction SignalCre). Par dfaut, ce signal est ferm. 2. Attente du signal (fonction SignalAttend). 3. Synchronisation des threads grce la fonction SignalModifie : le signal est ouvert. Tous les threads en attente sont dbloqus et le signal est automatiquement referm (fonctionnement par dfaut). 4. Destruction du signal (fonction SignalDtruit). Les fonctions de gestion des signaux avancs Les fonctions du WLangage spcifiques la gestion des signaux avancs sont les suivantes : 16.6 Grer louverture dune fentre WinDev dans un thread secondaire Un thread secondaire ne peut pas ouvrir directe- ment une fentre avec les fonctions classiques du WLangage telles que : Ouvre, Utilise, ... Or il peut tre utile d'afficher une fentre partir d'un thread secondaire. Par exemple, si un thread est utilis pour grer la rception des appels tl- phonique, lorsqu'un appel entrant est dtect ce thread peut afficher une fentre avec les caract- ristiques de l'appelant. La solution consiste faire ouvrir la fentre par le thread principal. SI Droite(Saisie1, 1) = " " ALORS ThreadEnvoieSignal(... "ThreadCorrection") FIN BOUCLE SI ThreadAttendSignal() = Vrai ALORS LanceCorrection() FIN FIN ThreadAttend- Signal Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" ThreadEnvoie- Signal Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer SignalAttend Bloque le thread en cours en attendant que le signal spcifi soit ouvert SignalCre Cre un signal SignalDtruit Dtruit explicitement un signal SignalModifie Modifie l'tat d'un signal WLangage.book Page 299 Mardi, 23. avril 2013 1:59 13 300 Partie 6 : Communication 16.6.1 Ouverture d'une fentre partir d'un thread secondaire Pour ouvrir une fentre partir d'un thread secondaire : 1. Lorsque le thread secondaire veut ouvrir une fentre, il envoie un message au thread principal grce la fonction PostMessage. Ce message indique au thread principal la fentre ouvrir et les paramtres ncessaires l'ouverture de la fentre. 2. Le thread principal gre un vnement spcifi- que, correspondant la demande d'ouverture de fentre. Lorsque cet vnement survient, la proc- dure WLangage lance ouvre la fentre spcifie (avec la fonction Ouvre par exemple) avec si nces- saire les paramtres indiqus. 16.6.2 Exemple La mthode dcrite ci-dessus est utilise dans l'exemple WD Messagerie instantane. Le code d'ouverture de la fentre principale permet de : mettre en place un vnement pour grer l'ouver- ture de la fentre dans le thread principal. dclencher les threads secondaires. . L'ouverture de la fentre est ralise par exemple dans le code de la procdure EcouteRequteDe- butMessage. Cette procdure est excute dans un thread. Le code utilis pour ouvrir la fentre depuis le thread est le suivant : Le message "DbutChat" est envoy la fentre principale (identifie par son Handle). Ce message contient les diffrents paramtres passer la fentre. Le message est trait par l'vnement dfini dans le code d'ouverture de la fentre. Lors- que le message survient, la procdure Ouverture- Chat est automatiquement excute. C'est cette procdure qui ouvre la fentre. Le code de cette procdure est le suivant : // Mise en place d'un vnement pour // grer l'ouverture de la fentre // de "chat" gnIdEvenement = Evnement(... "OuvertureChat","*.*", ... "DebutChat") SI gnIdEvenement = 0 ALORS // Erreur lors de la mise en place // de l'vnement de gestion de la // fentre de "chat" Erreur("Impossible de grer"+... "la fentre d'ouverture"+ ... "de chat",ErreurInfo()) // L'application ne peut pas // fonctionner sans cet vnement FinProgramme() FIN // Ecoute des requtes de // connexion // et de tests de prsence ThreadExcute("ThreadPresence",... threadNormal,... "EcouteDemandePresence") ThreadExcute("ThreadRequete",... threadNormal,... "EcouteDemandeConnexion") // Demande d'ouverture de // la fentre de "chat" PostMessage(... Handle(Fentre_Principale),... "DebutChat",CONTACT.IDCONTACT,... CONTACT.IDCONTACT) PROCEDURE OuvertureChat(nParam,... nContact) OuvreSoeur(Fentre_Message, ... nContact) WLangage.book Page 300 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 301 16.7 Fonctions de gestions des threads Les fonctions permettant de grer les threads sont les suivantes : ExcuteThreadPrinci- pal Dclenche l'excution de la procdure spcifie par le thread principal de l'applica- tion. MutexCre Cre explicitement un mutex MutexDbut Bloque le thread courant en attendant que le mutex soit libre MutexDtruit Dtruit explicitement un mutex MutexFin Signale que le thread libre le mutex SectionCritiqueDbut Signale le dbut d'une section critique : aucun autre thread ne pourra excuter le code tant que le thread courant ne sera pas sorti de la section critique SectionCritiqueFin Signale la fin d'une section critique : un autre thread pourra excuter le code SmaphoreCre Cre un smaphore SmaphoreDbut Bloque le thread en cours en attendant que le smaphore soit ouvert (c'est--dire qu'une place "libre" soit disponible dans la zone protge) SmaphoreDtruit Dtruit explicitement un smaphore SmaphoreFin Autorise un ou plusieurs threads de sortir de la sortie de la zone protge par le smaphore SignalAttend Bloque le thread en cours en attendant que le signal spcifi soit ouvert SignalCre Cre un signal SignalDtruit Dtruit explicitement un signal SignalModifie Modifie l'tat d'un signal ThreadArrte Arrte un "thread" secondaire ThreadAttend Attend la fin de l'excution du "thread" dsign. Un temps maximum d'attente peut tre prcis ThreadAttendSignal Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" ThreadCourant Renvoie le nom du thread en cours d'excution ThreadEnvoieSignal Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer ThreadEtat Renvoie l'tat actuel d'un thread ThreadExcute Lance l'excution d'un "thread" secondaire. Ce "thread" est non bloquant ThreadMode Change le mode de gestion des threads ThreadPause Temporise le thread en cours pour la dure indique ThreadPriorit Renvoie ou modifie le niveau de priorit d'un thread ThreadReprend Relance l'excution d'un "thread" prcdemment suspendu par la fonction Thread- Suspend ThreadSuspend Suspend temporairement l'excution du "thread" dsign. Le traitement en cours n'est pas bloqu Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 301 Mardi, 23. avril 2013 1:59 13 302 Partie 6 : Communication 17. SOAP 17.1 Prsentation Le "SOAP" (Simple Objet Access Protocol) est un protocole de communication qui permet d'excuter des procdures sur un serveur distant. Ce protocole s'appuie principalement sur les proto- coles HTTP et XML. Il peut galement s'utiliser avec le protocole SMTP. Les donnes sont transmises entre le poste local et le serveur SOAP sous forme de texte structur au format XML (Extensible Markup Language). Avantage du protocole SOAP Le principal avantage du protocole SOAP vient du fait qu'il repose sur deux protocoles standard : XML pour la structure des messages, HTTP pour le transport des donnes. De ce fait, le protocole SOAP est indpendant des systmes d'exploitation et des langages de pro- grammation. Le protocole SOAP permet l'inter-op- rabilit. De plus, l'utilisation du protocole HTTP (pour le transfert des donnes) permet au protocole SOAP de franchir les "firewalls" (barrires de scurit) sans problme. 17.1.1 WinDev / WebDev et le protocole SOAP WinDev et WebDev permettent de crer une appli- cation cliente SOAP. Cette application utilise les fonctions SOAP du WLangage pour faire excuter des procdures au serveur SOAP et rcuprer leur rsultat. De plus, winDev permet de crer une application serveur SOAP. Cette application est compose de procdures qui seront lances par l'application cliente. 17.1.2 Exemple WinDev est livr en standard avec un exemple utili- sant les fonctions SOAP : WD Utilisation SOAP. 17.2 Excuter des procdures sur un serveur SOAP Un ensemble de fonctions SOAP vous permet de grer l'excution de procdures sur un serveur SOAP depuis vos applications WinDev ou depuis vos sites WebDev. 17.2.1 Principe d'utilisation L'ensemble des paramtres ncessaires l'excu- tion d'une procdure SOAP est fourni dans la docu- mentation du serveur SOAP et de ses procdures. Pour excuter une procdure sur un serveur SOAP : 1. Initialisez la structure des paramtres de la pro- cdure excuter (consultez "La structure d'une procdure SOAP"). Remarque (WinDev uniquement) : Pour effectuer des vrifications supplmentaires sur le serveur SOAP, ajoutez un en-tte de procdure (fonction SOAPAjouteEntte). 2. Excutez la procdure (fonction SOAPExcute ou SOAPExcuteXML). Les oprations suivantes sont automatiquement ralises : connexion entre le poste en cours et le serveur SOAP, transmission des paramtres de la procdure au serveur SOAP, vrification de l'en-tte si ncessaire, excution de la procdure, envoi du rsultat ou de l'erreur de la procdure au poste en cours. 3. Testez le rsultat de la procdure. Le rsultat des fonctions SOAPExcute ou SOA- PExcuteXML permet de savoir si la connexion a bien t tablie. Si la connexion n'a pas t tablie, utilisez la fonc- tion ErreurInfo pour connatre les causes de l'erreur. WLangage.book Page 302 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 303 Si la connexion a t tablie, testez le rsultat de la fonction SOAPDonneRsultat : Si le rsultat est diffrent d'une chane vide (""), la procdure a t excute avec succs. Si le rsultat correspond une chane vide (""), la procdure n'a pas t excute et/ou a retourn une erreur. Pour connatre l'erreur de la proc- dure, utilisez la fonction SOAPErreur. Remarque :Actuellement, les transferts ne sont pas scuriss (pas de cryptage des donnes trans- fres). Il est recommand de ne pas utiliser le pro- tocole SOAP pour transfrer des donnes sensibles. 17.2.2 La structure SOAP La structure suivante est utilise pour passer des paramtres une procdure excute sur un ser- veur SOAP : Cette structure doit tre utilise pour chaque para- mtre. Par exemple : SOAP.Valeur[1] = 94010 SOAP.Nom[1] = "CodePostal" SOAP.Type[1] = SOAPTypeChane Cette structure est quivalente : SOAP.ParamXML[1] = <CodePostal xsi:type="xsd:string">94010</CodePostal> 17.3 Crer et installer une application serveur SOAP WinDev L'application serveur SOAP est une application con- tenant toutes les procdures excuter. Ces proc- dures sont excutes par l'application cliente SOAP. 17.3.1 Principe Variable Type Dtail SOAP.NameSpace Chane de caractres optionnelle Espace de nommage (appel "NameSpace") du paramtre SOAP.Nom Chane de caractres Nom du paramtre SOAP.ParamXML Chane de caractres optionnelle Ensemble sous forme XML des structures d'un paramtre. Si ce paramtre est spcifi, les autres paramtres (Valeur, Nom, Type, NameSpace et StyleEncodage) sont ignors. SOAP.StyleEncodage Chane de caractres optionnelle Style d'encodage (appel "EncodingStyle") du paramtre SOAP.Type Constante Type du paramtre SOAP.Valeur Tout type Valeur du paramtre WLangage.book Page 303 Mardi, 23. avril 2013 1:59 13 304 Partie 6 : Communication 17.3.2 Comment crer une application Serveur SOAP Pour crer une application Serveur SOAP : 1. Crez un projet WinDev de type "Bibliothque". 2. Crez des procdures globales. Chaque proc- dure globale pourra tre excute par le poste Client SOAP. Attention : l'application serveur ne doit pas avoir dinterface (pas de fentres, d'tats, de fentre de trace ou de botes de dialogue). Cette application est galement limite par les droits dfinis pour le serveur Web. 3. Saisissez si ncessaire le code d'initialisation et de fermeture du projet. Ces deux codes seront res- pectivement excuts au chargement et au dchar- gement de la bibliothque sur le serveur. 4. Gnrez la bibliothque de votre projet (fichier .WDL). Ce fichier contient toutes les procdures du projet. Remarque : Dans l'application Cliente SOAP, pour prciser le nom de la bibliothque utilise (WDL), il suffit de prciser ce nom dans le NameSpace (fonction SoapExcute). Attention : Actuellement, les transferts ne sont pas scuriss (pas de cryptage des donnes transf- res). Il est recommand de ne pas utiliser le proto- cole SOAP pour transfrer des donnes sensibles. Pour tester votre application serveur SOAP sur le poste de dveloppement : 1. Gnrez la bibliothque (Fichier .WDL) de votre application Serveur (sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Gnrer"). 2. Configurez le serveur Internet install sur votre poste pour votre application WinDev (configuration pour Apache, IIS5 ou Netscape iPlanet 4.1). Pour plus de dtails, consultez laide en ligne. 3. Configurez l'administrateur SOAP (application WDSOAPConfig.EXE dans le rpertoire "Donnes" de WinDev). Pour plus de dtails, consultez "Confi- gurer ladministrateur". 4. Redmarrez votre serveur Web. 5. Lancez le test de votre application cliente SOAP. Pour installer votre application sur un poste serveur SOAP : 1. Gnrez la bibliothque (Fichier .WDL) de votre application Serveur (sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Gnrer"). Attention : Il ne faut pas renommer les DLL Win- Dev. 2. Crez la procdure dinstallation de votre appli- cation. Sous le volet "Projet", dans le groupe "Gn- ration", droulez "Procdure dinstallation" et slectionnez "Crer la procdure dinstallation". 3. Les fichiers devant tre slectionns pour l'ins- tallation sont les suivants : application WDSOAPConfig.EXE prsente dans le rpertoire "Donnes" du rpertoire d'installation de WinDev. les DLL WinDev ncessaires l'excution de votre application. Vrifiez que les DLL suivantes sont slectionnes : WD180IMG.DLL, WD180OBJ.DLL, WD180STD.DLL et WD180VM.DLL. les DLL WinDev spcifiques au serveur HTTP utilis : WD180SAPA.DLL pour Apache, WD180SIIS pour IIS, etc. 4. Installez l'application sur le poste serveur. 5. Configurez le serveur Internet pour votre applica- tion WinDev (configuration pour Apache, IIS5 ou Netscape iPlanet 4.1). Pour plus de dtails, consul- tez laide en ligne. 6. Configurez ladministrateur SOAP. Pour plus de dtails, consultez laide en ligne. 7. Pour que le client soap puisse contacter le ser- veur, l'adresse du serveur utilise dans la fonction SoapExcute doit tre de la forme : Remarque : Si plusieurs applications serveur soap sont installes sur le mme poste, il est obligatoire d'installer : toutes les bibliothques (WDL) dans le mme rpertoire, toutes les DLL WinDev utilises dans le mme rpertoire. Un seul administrateur SOAP sera install et utilis. <Adresse IP du serveur>\ ... Serveur.soap WLangage.book Page 304 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 305 17.4 Fonctions SOAP Les fonctions permettant de grer les procdures SOAP sont les suivantes : SOAPAjouteEntte Ajoute un en-tte la prochaine procdure SOAP excuter SOAPDonneRsultat Renvoie le rsultat de la dernire procdure SOAP excute avec succs SOAPEncodeRsultat Permet de paramtrer le format de la valeur retourne par le serveur SOAP WinDev au programme client SOAP SOAPErreur Renvoie l'erreur de la dernire procdure SOAP ayant chou SOAPExcute Excute une procdure sur un serveur SOAP SOAPExcuteXML Excute une procdure sur un serveur SOAP Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 305 Mardi, 23. avril 2013 1:59 13 306 Partie 6 : Communication 18. WEBSERVICES XML WinDev et WebDev permettent dimporter directe- ment des services Web XML de type .Net et J2EE dans vos applications WinDev et dans vos sites WebDev. De plus, WinDev permet de gnrer directement des services Web XML utilisant la technologie SOAP partir de vos applications WinDev. 18.1 Importer des Webservices XML 18.1.1 Prsentation WinDev, WebDev et WinDev Mobile permettent d'importer directement des Webservices dans vos applications. Un Webservice est un ensemble de points d'entres mis la disposition des utilisateurs afin d'effectuer diffrents traitements. Par exemple, un service d'accs distant met votre disposition les traitements d'accs aux donnes. Les changes d'informations avec un Webservice se font au for- mat XML et utilisent les protocoles SOAP (Simple Object Access Protocol) et HTTP. A partir de la description au format WSDL (Web Ser- vices Description Language) de ce service, WinDev, WebDev ou WinDev Mobile va gnrer automati- quement des types et des fonctions WLangage cor- respondants l'interface de programmation du Webservice. Remarque : Par compatibilit avec les versions pr- cdentes, il est galement possible de demander la gnration d'une collection de procdures ou d'une classe dont les mthodes correspondent aux op- rations du Webservice. Il est nanmoins recom- mand d'utiliser le nouveau mcanisme de gnration automatique de types natifs. Pour utiliser le Webservice, il suffit d'utiliser les fonctions gnres au moment de l'import. 18.1.2 Importer un Webservice dans un projet Pour importer un Webservice : 1. Sous le volet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez loption "Impor- ter un Webservice (SOAP, .Net, J2EE)". L'assistant d'importation d'un Webservice se lance. 2. Slectionnez la description WSDL du service importer. Cette description peut tre charge : soit partir d'une adresse Internet, soit depuis un fichier XML prsent sur le poste en cours. 3. Validez lassistant, le Webservice est automati- quement ajout dans l'explorateur de projet (dans la branche "Webservices") et prt tre utilis. 18.1.3 Mettre jour la description d'un Webservice Lorsquun Webservice volue (corrections, nouvel- les versions, etc.), sa description peut galement tre amene voluer. Pour mettre jour le type dans votre projet, il faut : 1. Slectionner le Webservice dans lexplorateur de projet. 2. Slectionner l'option "Mettre jour" du menu contextuel. Remarque : les Webservices imports en utilisant le mcanisme de compatibilit avec les versions prcdentes ne peuvent pas tre mis jour. 18.1.4 Proprits d'un Webservice Proprits d'un Webservice modifiables dans l'diteur Pour modifier les proprits d'un Webservice dans l'diteur : 1. Slectionnez le Webservice dans l'explorateur de projet. 2. Choisissez l'option "Description" du menu con- textuel. 3. La fentre des proprits souvre. Dans cette fentre, il est possible de modifier les proprits suivantes : L'adresse d'import du Webservice : il s'agit de l'URL permettant d'atteindre le WSDL dcrivant le Webservice. Le nom d'utilisateur et le mot de passe utiliss pour importer le WSDL. Remarque : Les proprits modifiables dans l'di- teur et les proprits modifiables par programma- tion n'ont pas de lien WLangage.book Page 306 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 307 Proprits d'un Webservice modifia- bles par programmation Pour adresser un Webservice par programmation, il suffit d'utiliser le nom du Webservice tel qu'il est prsent dans l'explorateur de projet. Remarque : il est possible de faire un glisser-dpo- ser directement depuis l'explorateur de projet dans l'diteur de code pour insrer le nom du Webser- vice. Les proprits modifiables par programmation sont : Remarque : Si un nom d'utilisateur et un mot de passe sont spcifis, l'authentification des requ- tes HTTP se fera en utilisant le schma d'authentifi- cation "Basic", dans lequel les paramtres sont en clair dans la requte HTTP. Il est prfrable d'utili- ser des requtes HTTPS si l'authentification est ncessaire. 18.1.5 Utiliser un Webservice import dans le projet Pour utiliser la collection de procdures du Webser- vice, il suffit d'appeler les fonctions gnres auto- matiquement par l'import. Les types de variables dclars automatiquement lors de l'import du WSDL offrent un certain nombre de proprits : Manipulation avance du flux XML du Webservice Dans certains cas, il est ncessaire de manipuler prcisment le flux de donnes XML chang avec le Webservice. Certains Webservices demandent par exemple d'ajouter des enttes dans leur flux XML pour permettre l'authentification ou retour- nent des meta informations dans les enttes de la rponse. Pour rpondre ces demandes particulires, les fonctions suivantes peuvent tre utilises : SOAPPrpare : Cette fonction construit la requte au Webservice pour une fonction et des paramtres donns mais ne l'envoie pas. Nom Effet Adresse Cette proprit permet de rempla- cer l'adresse d'appel du Webser- vice dcrite dans le WSDL par une autre URL.. Cette proprit est de la forme : "http://serveur:port/ chemin_du_webservice". Par exemple, dans le cas d'un Webservice gnr avec WinDev et dploy sur un Serveur d'Appli- cation WebDev, il s'agit de l'URL du fichier d'extension "awws". Remarques : La modification de cette pro- prit remplace toutes les URL dcrites dans le WSDL. Si cette proprit reoit une chane vide, les URL dcrites dans le WSDL seront de nou- veaux utilises. Utilisateur Cette chane de caractres sera utilise comme nom d'utilisateur pour raliser l'authentification lors des requtes HTTP au Webservice. MotDePasse Cette chane de caractres sera utilise comme mot de passe pour raliser l'authentification lors des requtes HTTP au Webservice. Nom Effet Existe Vrai si le type de variable existe dans la rponse du Webservice. Faux sinon. Occurrence Nombre d'lments de ce type dans la rponse du Webservice. Un Webservice peut retourner des tableaux de variables. La proprit ..Occurrence permet de connatre la taille du tableau renvoye et l'oprateur [ ] permet d'accder aux lments du tableau. Type Nom du type de la variable. Cette proprit est utilise lorsquun Webservice est susceptible de retourner des rponses de diff- rents types. Valeur Valeur de la variable. Cette proprit est accde par dfaut lorsque seul le nom de la variable est utilis, par exemple : monWebservice.Variable- Requete = SAI_Valeur est quivalent : monWebservice.Variable- Requete..Valeur = SAI_Valeur WLangage.book Page 307 Mardi, 23. avril 2013 1:59 13 308 Partie 6 : Communication SOAPAjouteEntte : Cette fonction permet d'ajou- ter des enttes personnalises dans un appel de Webservice. SOAPRcupreEntte : Cette fonction permet de relire les informations prsentes dans l'entte de la rponse d'un Webservice. SOAPAjouteAttribut : Cette fonction permet de dclarer des attributs supplmentaires (non pr- sent dans le WSDL) sur une variable de Webser- vice gnre automatiquement. Elle est utilise en programmation avance dans les cas o le WSDL renvoy par le Webservice ne correspond pas compltement au type attendu. Cas particulier : le Webservice ren- voie un rsultat dans un type non reconnu par WinDev/WebDev/Win- Dev Mobile Les types de variables disponibles dans WinDev et ceux disponibles dans un Webservice de type SOAP peuvent tre diffrents. Les types simples (boolen, entier, etc.) et comple- xes (dateheure, dure, structures, tableaux de types simples et de structures, structures imbri- ques, etc.), utiliss dans le Webservice sont auto- matiquement convertis au format du WLangage (et inversement) lors de l'importation du service dans un projet. Les types Tableaux sont galement grs. Les types plus volus (classes, types avancs du WLangage, etc.) sont traits en tant que chane de caractres dans le code WLangage. Ces chanes de caractres contiennent le code XML correspondant au type de variable renvoy par le Webservice et son contenu. Ainsi, si un Webservice renvoie un rsultat sous forme d'instance de classe, ce rsultat sera trait dans la procdure comme une chane de caract- res au format XML. Il sera ensuite ncessaire de traiter cette chane de caractres (en WLangage) pour en extraire les informations voulues. Pour plus de dtails, consultez les fonctions XML. Remarque : Dans le cas o le Webservice retourne une structure, le nom des membres de la structure de retour est sensible la casse. 18.1.6 Distribuer une application WinDev qui utilise un Webservice Pour distribuer une application qui utilise un Web- service, il suffit d'intgrer le fichier dcrivant le Webservice (fichier .wdsdl) dans la bibliothque de l'application. Pour que l'application puisse excuter le Webser- vice, le poste des utilisateurs finaux doit disposer d'un accs Internet. Remarque : Avant de distribuer une application qui utilise un Webservice, il est conseill de vrifier la licence d'utilisation et les droits d'utilisation de ce service (cas des services payants). 18.2 Gnrer un service Web XML 18.2.1 Prsentation WinDev et WebDev permettent de gnrer directe- ment des Webservices utilisant la technologie SOAP. Ces Webservices peuvent ensuite tre utili- ss dans des projets WinDev, WebDev, WinDev Mobile ou dans n'importe quel autre langage sup- portant le protocole SOAP. A partir du projet WinDev/WebDev correspondant au Webservice, WinDev/WebDev va crer automatiquement : Une bibliothque (fichier .AWWS). Cette biblioth- que va contenir toutes les procdures de votre Webservice. Ces procdures seront utilisables par n'importe quelle application utilisant votre Webservice. Un fichier .WSDL. Ce fichier contient la descrip- tion au format WSDL (Web Services Description Language) du Webservice. Ce fichier XML con- tient la description des mthodes et des structu- res du Webservice. Pour mettre disposition votre Webservice, ces fichiers doivent tre installs sur un Serveur d'Application WebDev. Rappel : Un Webservice est un ensemble de points d'entres mis la disposition des utilisateurs afin d'effectuer diffrents traitements. Par exemple, un service d'accs distant met votre disposition les traitements d'accs aux donnes. En gnral, les changes d'informations avec un Webservice se font au format XML et utilisent le protocole HTTP Remarque : par compatibilit, les services Web XML des versions prcdentes ont t conservs. Il est toutefois fortement recommand d'utiliser le nouveau modle de Webservice. WLangage.book Page 308 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 309 Les diffrences entre les anciens services Web XML et les Webservices sont les suivantes : Remarque : Dans le cas de la conversion d'un Ser- veur SOAP gnr par WinDev 14 (ou une version antrieure) vers le nouveau modle de Webservice, il est ncessaire de remplacer les appels la fonc- tion SOAPExcute gnrs par l'importation du Webservice dans les projets WinDev par des appels la nouvelle convention. Pour plus de dtails, con- sultez laide en ligne. 18.2.2 Comment mettre disposition un Webservice ? Pour mettre disposition un Webservice, il suffit de : 1. Gnrer un Webservice. 2. Tester le Webservice. 3. Dployer le Webservice sur un Serveur d'Applica- tion WebDev. 18.2.3 Gnrer un Webservice Pour gnrer un Webservice : 1. Crez un projet WinDev de type Webservice ou une configuration de type Webservice dans un pro- jet dj existant. 2. Crez des procdures globales. Chaque proc- dure globale pourra tre excute par le Serveur d'Application WebDev. Attention : Le Webservice ne doit pas avoir d'IHM (pas de fentre, d'tat, de fentre de trace ou de bote de dialogue). Il est galement limit par les droits dfinis sur le serveur web (compte "Invit Internet" gnralement sous Windows). 3. Saisissez si ncessaire le code d'initialisation et de fermeture du projet. Ces deux codes seront res- pectivement excuts au chargement et au dchar- gement de la bibliothque du Webservice. 4. Sous le volet "Projet", dans le groupe "Gnra- tion", cliquez sur "Gnrer". L'assistant de gnra- tion de Webservice se lance. 5. Slectionnez "Dploiement sur un Serveur d'Application WebDev". Par compatibilit, vous pou- vez choisir "Dploiement en mode ISAPI". Pour plus de dtails sur les Webservices en mode ISAPI, reportez-vous la documentation de WinDev 14. 6. L'cran suivant permet de slectionner les l- ments intgrer dans la bibliothque. La biblioth- que aura pour nom le nom du projet en cours. Vous pouvez : Ajouter des lments Tout type de fichier peut tre ajout la liste des lments insrs dans la bibliothque : images, fichiers texte, ... Supprimer des lments Les fichiers correspondants et leur dpendance ne seront pas pris en compte dans la biblioth- que. Crer la bibliothque partir d'une description de bibliothque existante (fichier *.WDU) Lors de la cration d'une bibliothque WinDev, un fichier ".WDU" du mme nom est automatique- ment cr. Ce fichier contient toutes les rfren- ces des lments intgrs la bibliothque. 7. Terminez l'assistant pour gnrer le Webservice. L'assistant de dploiement est automatiquement lanc la suite. Anciens services Web XML Webservices Dploys sur Apache ou IIS avec un module ISAPI. Dploys sur un Serveur d'Application WebDev (compatible avec tous les serveurs Web). Ne peuvent tre dploys qu'avec une installation par mdia physique directement sur le serveur. Peuvent tre dploys par mdia physique ou distance (par FTP). Ne peuvent tre dploys qu'avec une installation par mdia physique directement sur le serveur. Autorise une monte en charge importante. Limits aux versions de Windows 32 bits. Fonctionnent sur toutes les versions de Windows (32 et 64 bits) ainsi que sous Linux. WLangage.book Page 309 Mardi, 23. avril 2013 1:59 13 310 Partie 6 : Communication 18.2.4 Dployer un Webservice Pour tre utilisable, un Webservice doit tre dploy sur un Serveur d'Application WebDev.Ce dploiement peut se faire : Directement depuis le poste de dveloppement. Depuis un poste d'administration (diffrent du poste de dveloppement) Sur le Serveur d'Application WebDev, en utilisant une installation par mdia physique Afin de dployer le Webservice de faon autonome sur une machine, l'installation par mdia physique peut galement tre gnre dans un mode contenant : Le Webservice, Une version limite 10 connexions du Serveur d'Application WebDev, Le serveur web Apache. Dploiement depuis le poste de dveloppement Pour dployer directement le Webservice depuis le poste de dveloppement : 1. Suivez les tapes de l'assistant de gnration du Webservice dcrites ci-dessus. 2. Dans l'assistant d'installation, slectionnez "Dployer le Webservice sur un Serveur d'Applica- tion WebDev distant". 3. Saisissez les paramtres de connexion au Ser- veur d'Application : adresse, nom d'utilisateur et mot de passe (ces informations vous sont fournies par l'administrateur du Serveur d'Application). 4. Indiquez les paramtres de dploiement du Webservice : Le nom de dploiement : par dfaut, il est gal au nom du projet, vous pouvez le changer pour permettre de dployer plusieurs instances d'un projet sur le mme serveur, plusieurs projets de mme nom ou si le nom du projet ne correspond pas au nom que vous souhaitez pour le Webser- vice. Le nom du sous-rpertoire qui contiendra les fichiers de donnes HyperFileSQL Classic du Webservice : par dfaut, il est gal au nom du projet, vous pouvez le changer pour que deux Webservices partagent les mmes fichiers de donnes L'adresse publique du Webservice : par dfaut, cette adresse est construite avec l'adresse du Serveur d'Application 5. L'installeur interroge alors le Serveur d'Applica- tion et affiche la liste des fichiers dployer (s'il a dtect une version prcdente du Webservice, il ne propose que les fichiers mettre jour). Utilisez les interrupteurs dans la premire colonne de la table des fichiers pour modifier la liste des fichiers dployer si ncessaire. 6. Paramtrez la modification automatique des donnes du Webservice. 7. Indiquez les paramtres d'exploitation du Web- service tels que : Nombre maximum de connexions simultanes. Nombre maximum de connexions simultanes depuis une adresse IP donne. Dure maximum d'une requte au Webservice. Vous pouvez galement indiquer que le dploie- ment sera fait en diffr. 8. Indiquez si le Serveur d'Application doit gnrer des statistiques lors des accs au Webservice et le rpertoire de gnration des statistiques. Les sta- tistiques peuvent tre consultes l'aide de l'outil WDStatistique. 9. Terminez l'assistant pour lancer l'installation. Une fentre affiche l'avancement de l'opration et les ventuels messages d'erreur. Dploiement depuis un poste d'administration Pour dployer directement le Webservice depuis un poste d'administration diffrent du poste de dve- loppement, il faut gnrer un package d'installation avec l'assistant de cration d'installation et le dployer en utilisant l'outil WDDeploie. Pour effectuer le dploiement : 1. Suivez les tapes de l'assistant de gnration du Webservice dcrites plus haut. 2. Dans l'assistant d'installation, slectionnez "Crer un package de dploiement distant". 3. Vous pouvez choisir un profil de dploiement ou laisser ce choix l'utilisateur de l'outil WDDeploie. Un profil de dploiement regroupe les informations sur le Serveur d'Application utiliser : adresse du serveur, information d'authentification, etc. 4. Si vous avez choisi d'utiliser un profil, saisissez ou modifiez les paramtres de connexion au Ser- veur d'Application : adresse, nom d'utilisateur et mot de passe (ces informations vous sont fournies par l'administrateur du Serveur d'Application). 5. Indiquez les paramtres de dploiement du Webservice : Le nom de dploiement : par dfaut, il est gal au nom du projet, vous pouvez le changer pour permettre de dployer plusieurs instances d'un projet sur le mme serveur, plusieurs projets de mme nom ou si le nom du projet ne correspond pas au nom que vous souhaitez pour le Webser- vice. WLangage.book Page 310 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 311 Le nom du sous rpertoire qui contiendra les fichiers de donnes HyperFileSQL Classic du Webservice : par dfaut, il est gal au nom du projet, vous pouvez le changer pour que deux Webservice partagent les mmes fichiers de don- nes. L'adresse publique du Webservice : par dfaut, cette adresse est construite avec l'adresse du Serveur d'Application. 6. L'assistant affiche les fichiers qui seront dploys. Il est possible d'ajouter des fichiers sup- plmentaires ou d'en retirer. 7. Paramtrez la modification automatique des donnes du Webservice. 8. Indiquez les paramtres d'exploitation du Web- service tels que : Nombre maximum de connexions simultanes. Nombre maximum de connexions simultanes depuis une adresse IP donne. Dure maximum d'une requte au Webservice. Vous pouvez galement indiquer que le dploie- ment sera fait en diffr. 9. Indiquez si le Serveur d'Application doit gnrer des statistiques lors des accs au Webservice et le rpertoire de gnration des statistiques. Les sta- tistiques peuvent tre consultes l'aide de l'outil WDStatistique. 10. Choisissez enfin le rpertoire dans lequel le package d'installation du Webservice sera gnr ainsi que le nom du fichier. Pour installer le Webservice : 1. Lancez l'outil WDDeploie depuis un poste d'administration. 2. Chargez le package de dploiement du Webser- vice. 3. Saisissez ou modifiez les paramtres du Serveur d'Application et les paramtres de dploiement du Webservice. 4. Cliquez sur le bouton "Dployer" pour dclencher le dploiement du Webservice. Une fentre affiche l'avancement de l'opration et les ventuels messa- ges d'erreur Dploiement par mdia physique Pour gnrer une installation par mdia physique du Webservice : 1. Suivez les tapes de l'assistant de gnration dcrites ci-dessus. 2. Dans l'assistant d'installation, slectionnez : "Crer une installation par mdia physique du Webservice" pour pouvoir installer le Webservice sur un Serveur d'Application WebDev dj exis- tant. "Crer une installation par mdia physique auto- nome du Webservice" pour pouvoir inclure dans l'installation le Serveur d'Application WebDev (en version limite 10 connexions) et le serveur web 3. L'assistant affiche les fichiers qui seront dploys. Il est possible d'ajouter des fichiers sup- plmentaires ou d'en retirer. 4. Paramtrez la modification automatique des donnes du Webservice. 5. Dans le cas d'une installation autonome, il est possible de choisir le serveur web qui sera inclus dans l'installation. 6. L'assistant affiche un plan permettant de slec- tionner l'installeur utiliser. L'installeur par dfaut (WBSetup) est livr avec ses sources et peut tre personnalis. 7. Vous pouvez choisir les rpertoires dans les- quels seront dploys les fichiers du Webservice ainsi que les fichiers de donnes (dans le cas d'une base de donnes au format HyperFileSQL Classic). Par dfaut, ces lments seront associs un compte du Serveur d'Application WebDev. 8. Slectionnez la ou les langues proposes pour raliser l'installation. L'outil d'installation WBSetup est livr par dfaut en franais et en anglais. Pour raliser des installations dans d'autres langues, il suffit de le traduire l'aide de l'utilitaire WDMsg (vendu sparment). 9. Choisissez enfin le rpertoire dans lequel l'ins- tallation du Webservice sera gnre. Pour installer le Webservice 1. Copiez le rpertoire gnr par l'assistant de cration d'installation sur le Serveur d'Application WebDev (ou sur n'importe quelle machine dans le cas d'une installation autonome). 2. Lancer le programme d'installation : INSTALL.EXE. WLangage.book Page 311 Mardi, 23. avril 2013 1:59 13 312 Partie 6 : Communication 19. XML 19.1 Gestion des documents XML 19.1.1 Prsentation WinDev met votre disposition des fonctions per- mettant de manipuler du code XML. Le code XML manipul doit tre strictement conforme la norme XML. Pour plus de dtails, consultez une documen- tation spcifique sur XML. Rappel : XML est la fois une norme et un langage driv du HTML (Pages Web, Internet, ...) qui per- met de structurer un document contenant des don- nes. Le code XML est utilis par exemple : dans les systmes d'information (Intranet, ...). dans les dialogues avec les services Web. Pour plus de dtails sur la gestion des services Web XML, consultez Webservices XML, page 306. 19.1.2 Dfinition XML est un langage comportant des balises et des attributs (appels "lments" dans cette aide). La structure d'un code XML correspond une arborescence : les informations sont ordonnes selon une hirarchie. Un code (ou contenu) XML correspond : soit au contenu d'un fichier XML. soit une rponse d'un service Web XML. Grce aux fonctions XML de WinDev, il est possible de : Lire, rechercher, analyser le contenu d'un fichier XML. Examiner les rponses reues des services Web XML. Importer des donnes (fonction HImporteXML). 19.1.3 Principe dutilisation Deux mthodes peuvent tre utilises pour mani- puler un document XML : 1. Utilisation d'une variable de type chane pour stocker le document XML. Le document XML peut tre ensuite manipul grce aux diffrentes fonc- tions XML. 2. Utilisation d'une variable de type xmlDocument. Cette mthode permet d'utiliser un fichier de type XSD. 19.1.4 Utilisation d'une variable de type chane Pour manipuler un code XML : 1. Stockez dans une variable de type chane le code XML manipuler. Ce code peut provenir d'un fichier XML ou d'une rponse d'un service Web XML. 2. Crez un document XML (fonction XMLDocu- ment). Ce document est stock en mmoire et con- tient l'ensemble du code XML manipuler. 3. Manipulez votre document XML grce aux fonc- tions WLangage. Il est possible de : Parcourir le code XML (fonctions XMLPremier, XMLSuivant, XMLDernier, XMLPrcdent, XML- Parent, XMLFils, XMLRacine). Effectuer des recherches (fonctions XMLRecher- che, XMLAnnuleRecherche, XMLExtraitChane). Rcuprer des informations sur les lments (balises ou attributs) du document. (fonctions XMLTypeElment, XMLNomElment, XMLNom- Parent, XMLDonne). Modifier le document XML (fonctions XMLAjou- teAttribut, XMLAjouteFils, XMLInsreDocument, XMLInsreElment, XMLModifie, XMLRe- nomme, XMLSupprime). Excuter une requte XPATH dans un document XML (fonctions XMLExcuteXPath, XMLPosition, XMLRsultat). Convertir une chane de caractres au format ANSI en une chane de caractres au format XML et inversement (fonctions TexteVersXML ou XML- VersTexte). 4. Enregistrez si ncessaire les modifications effec- tues (fonctions XMLConstruitChane et fSauve- Texte). 5. Fermez le document XML (fonction XMLTer- mine). Remarque : Il est galement possible de crer un document XML : avec les donnes d'une table (fonction TableVer- sXML). partir d'une partie d'un document XML existant (fonction XMLExtraitDocument). WLangage.book Page 312 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 313 19.1.5 Utilisation d'une variable de type xml- Document Les variables de type xmlDocument peuvent tre dclares en indiquant un document exemple (un fichier XML) ou un document modle (un fichier XSD). La structure de ce document sera lue par WinDev/WebDev et permettra de disposer de la compltion automatique sur les noms des noeuds directement dans l'diteur de code. Pour dclarer une variable de type xmlDocument avec un document exemple : 1. Ajoutez le document XML dans le projet : soit via la liste des lments du projet. Pour afficher cette liste, sous le menu "Projet", dans le groupe "Projet", cliquez sur licne . Dans la fentre qui saffiche, utilisez le bouton "Ajouter". soit par un Drag and Drop du fichier vers la bran- che "Description XML" du volet "Explorateur de projet". soit directement depuis le volet "Explorateur de projet" (slectionnez la branche "Description XML", puis l'option "Importer un fichier de des- cription XML" du menu contextuel). 2. Le document XML apparat dans la branche "Descriptions XML" de l'explorateur de projet. Il est possible de visualiser sa structure. 3. Dclarez la variable de la faon suivante : <Nom du document> peut correspondre au nom du document exemple (avec ou sans son extension) ou au nom du document modle (avec ou sant exten- sion). Remarques : Cette dclaration peut tre obtenue automati- quement en "droppant" le nom du document XML directement depuis l'explorateur de projet. Dans le cas de l'utilisation d'un document exem- ple, il est galement possible d'utiliser la syntaxe suivante : 4. Vous pouvez maintenant accder directement aux noeuds de la variable par leurs noms. Ces noms sont proposs automatiquement par le mcanisme de compltion automatique de l'diteur de code. Remarque : La fonction XMLSauve permet de sau- vegarder le document XML. Si un fichier XSD a t utilis, il sera automatiquement pris en compte. 19.2 Gestion du XSD 19.2.1 Prsentation WinDev, WinDev Mobile et WebDev mettent votre disposition des fonctions permettant de manipuler du code XML. Le code XML manipul doit tre stric- tement conforme la norme XML. Pour plus de dtails, consultez une documentation spcifique sur XML. Pour plus de dtails consultez la page d'aide XML. WinDev, WebDev et WinDev Mobile permettent d'importer des fichiers au format XSD. Un fichier XSD contient la description du fichier XML de mme nom. En effet, la connaissance de la structure d'un document XML permet notamment de vrifier la validit de ce document. Le langage de description de contenu d'un document XSD est aussi au format XML. Un exemple de fichier XSD : <Nom de la variable> est ... un xmlDocument , description ... = <Nom du document> <Nom de la variable> est ... un xmlDocument <Nom de la variable> = ... xmlOuvre(<Nom du document>) <?xml version="1.0" ... encoding="UTF-8"?> <xsd:schema xmlns:xsd="http:// www.w3.org/2001/XMLSchema"> <xsd:element name="personne" <xsd:complexType> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="prenom" type="xsd:string"/> <xsd:element name="date_naissance" type="xsd:date"/> <xsd:element name="email " type="xsd: string" minOccurs=0 maxOccurs= unbounded /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> WLangage.book Page 313 Mardi, 23. avril 2013 1:59 13 314 Partie 6 : Communication Suivi d'un fichier XML valide : 19.2.2 Importer un fichier XSD dans un projet Pour importer un fichier XSD dans un projet : 1. Dans le volet "Explorateur de projet", slection- nez "Description XML". 2. Faites un clic droit et slectionnez l'option "Importer un fichier de description XML". 3. Slectionnez le fichier XSD de la description importer. 4. Validez. Le XSD est automatiquement ajout dans l'explorateur de projet (dans la branche "Des- cription XML"). Il est prt tre utilis. 19.2.3 Utiliser une description importe dans le projet Pour utiliser la description du document XML, il suf- fit d'utiliser les variables gnres automatique- ment par l'importation. 1. Dclarez un document XML au format de la des- cription qui a t importe. Par exemple, si la des- cription importe se nomme 'personne': 2. Initialisez les diffrentes variables composant la description du document XML. Par exemple, si le document est compos du nom et du prnom de la personne. Remarques : Chaque lment est spar par un point .. Une assistance est propose lors de la saisie des noms des variables. 3. Enregistrez le contenu du document XML l'aide de la fonction XMLSauve. 19.3 Fonctions de gestion des documents XML Les fonctions permettant de grer les documents XML sont les suivantes : <?xml version="1.0" ... encoding="UTF-8"?> <personne xmlns:xsi="http: //www.w3.org/2001/XMLSchema- ... instance" xsi:noNamespace... SchemaLocation="personne.xsd"> <nom>de Latour</nom> <prenom>Jean</prenom> <date_naissance>1967-08-13</ date_naissance> <email>test@free.fr</email> </personne> </code WL> cMonDoc est un xmlDocument ... <description="personne"> cMonDoc.personne.nom="DUPONT" cMonDoc.personne.prenom="JEAN" XMLSauve(cMonDoc, ... "ListePersonnes.xml" TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres au format XML TableVersXML Cre un fichier XML avec les donnes d'une table (table fichier ou table mmoire) XMLAjouteAttribut Ajoute un attribut dans un document XML XMLAjouteFils Ajoute une balise fille dans un document XML XMLAnnuleRecherche Annule la recherche lance par la fonction XMLRecherche XMLChercheNamespa- ceParNom Rechercher un namespace (espace de nommage) XML partir de son nom dans un noeud XML et dans les parents de ce noeud XMLChercheNamespa- ceParURI Recherche un namespace (espace de nommage) XML partir de son URI (Univer- sal Resource Identifier) dans un noeud et dans les parents de ce noeud XMLConstruitChane Rcupre et met en forme le contenu dun document XML (cr avec la fonction XMLDocument) et modifi grce aux fonctions XML XMLDernier Se positionne sur le dernier lment du niveau en cours de l'arborescence ou sur la dernire balise de la hirarchie XMLDocument Cre ou dfinit un nouveau document XML XMLDocumentValide Valide un document XML partir dun schma XSD XMLDonne Renvoie la valeur de l'lment en cours ou dune balise XMLEcrit Ecrit la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML XMLEnDehors Permet de savoir si la position courante est valide ou si la balise sur laquelle on veut se positionner est en dehors du fichier XMLExcuteXPath Excute une requte XPATH dans un document XML WLangage.book Page 314 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 315 XMLExtraitChane Extrait des donnes dans un code XML XMLExtraitDocument Cre un nouveau document XML partir dune partie dun document XML exis- tant XMLFils Se positionne sur le premier lment fils de l'lment en cours ou sur la premire balise fille de la balise en cours XMLFilsExiste Indique si la balise courante a des fils correspondant au type recherch (balise, attribut) XMLInsreDocument Insre un document XML dans un autre document XML XMLInsreElment Insre un lment (balise ou attribut) XML dans un document XML XMLLit Renvoie la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML. XMLModifie Modifie le contenu de llment courant dans un document XML XMLNameSpace Renvoie le prfixe de l'espace de nommage utilis pour la balise courante dans un document XML XMLNameSpaceURI Renvoie l'URI de dfinition de l'espace de nommage utilis pour la balise cou- rante dans un document XML XMLNoeudValide Valide un noeud XML, ses fils et ses attributs partir de sa description dans le schma XSD li au document XML. XMLNomElment Renvoie le nom de l'lment ou de la balise en cours XMLNomParent Renvoie le nom de l'lment parent de l'lment en cours ou de la balise parente de la balise en cours XMLOuvre Charge un document XML partir d'un fichier, d'une URL ou d'une chane dans une variable de type xmlDocument XMLParent Se positionne sur l'lment parent de l'lment en cours ou sur la balise parente de la balise en cours XMLPosition Renvoie la position en cours dans le document sous la forme XPATH XMLPrcdent Se positionne sur l'lment prcdent dans le niveau en cours de l'arborescence ou sur la balise prcdente XMLPremier Se positionne sur le premier lment du niveau en cours de l'arborescence ou sur la premire balise rencontre XMLRacine Se positionne sur la balise racine du document XML XMLRecherche Lance une recherche dans un document XML XMLRenomme Modifie le nom de llment courant (balise ou attribut) dans un document XML XMLRsultat Donne le rsultat dune requte XPATH de calcul. Cette requte a t excute avec la fonction XMLExcutePath XMLRetourPosition Restaure le contexte prcdemment sauvegard dun document XML (fonction XMLSauvePosition). Le filtre en cours lors de la sauvegarde de la position peut tre restaur. XMLSauve Sauvegarde un document XML dans un fichier. XMLSauvePosition Mmorise la position en cours dans un document XML. XMLSuivant Se positionne sur l'lment suivant dans le niveau en cours de l'arborescence ou sur la balise suivante de mme niveau XMLSupprime Supprime llment suivant dans le niveau en cours de larborescence XMLTermine Ferme un document XML cr avec XMLDocument XMLTrouve Permet de savoir si un lment a t trouv dans le parcours XMLTypeElment Renvoie le type de l'lment en cours ou le type de la valeur de la balise en cours XMLVersTexte Convertit une chane de caractres XML en une chane de caractre au format ANSI Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 315 Mardi, 23. avril 2013 1:59 13 316 Partie 6 : Communication 20. ASSEMBLAGES .NET 20.1 Prsentation 20.1.1 Dfinition La technologie .NET correspond la nouvelle plate- forme de dveloppement logiciel de Microsoft. Cette plate-forme .NET permet de faciliter norm- ment le dveloppement dapplications objets dis- tribus dont les modules communiquent via Internet. Ce chapitre ne fait que prsenter de manire glo- bale lutilisation de la technologie .NET dans Win- Dev. Pour plus de dtails sur la technologie .NET, nous vous conseillons de consulter des ouvrages spcifiques. 20.1.2 WinDev et .NET Il est possible de crer des programmes .NET (ou assemblages .NET) depuis une application WinDev. Ces assemblages .NET sont directement raliss partir des classes WinDev (avec tous les avantages de lditeur de code, de lditeur de dossier, ...). Il est galement possible dutiliser des assembla- ges .NET (non crs avec WinDev) dans une appli- cation WinDev, WinDev Mobile ou dans un site WebDev : dans une nouvelle application : il suffit de spci- fier lutilisation des assemblages .NET directe- ment dans lassistant de cration. dans une application existante : il suffit de slec- tionner le ou les assemblages .NET utiliser. Ce chapitre prsente : les conditions ncessaires la manipulation dun assemblage .NET. la cration dun assemblage .NET. la cration du programme dinstallation dun assemblage .NET. lutilisation dun assemblage .NET dans une application WinDev. Pour plus de dtails sur les assemblages .NET, con- sultez laide en ligne (mots-cls : "Assemblage .NET"). 20.2 Conditions ncessaires la manipulation dun assemblage .NET Pour crer et utiliser un assemblage .NET sous Win- Dev, il est ncessaire de : installer le Framework .NET sur le poste en cours. rgler le niveau de scurit .NET. rendre accessibles les DLLs ncessaires lex- cution de lassemblage .NET. 20.2.1 Installer le Framework .NET Pour installer le Framework .NET sur le poste en cours : Mthode 1 : Utilisation de Windows Update 1. Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de con- figuration") et slectionnez loption "Ajout / Sup- pression de programmes". 2. Cliquez sur le bouton "Ajouter de nouveaux pro- grammes". 3. Cliquez sur le bouton "Windows Update". 4. Recherchez linstallation du Framework .NET. 5. Installez le Framework .NET. Mthode 2 : Tlchargement depuis le site Inter- net de Microsoft 1. Consultez le site de Microsoft. 2. Dans la partie "Microsoft Download Center", recherchez linstallation du Framework .NET. 3. Installez le Framework .NET. 20.2.2 Rgler le niveau de scurit .NET Pour rgler le niveau de scurit .NET : 1. Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de con- figuration") et slectionnez loption "Outils dadmi- nistration". 2. Slectionnez loption "Assistants Microsoft .NET Framework". La fentre dassistant .NET saffiche. 3. Cliquez sur licne "Ajuster la scurit .NET". 4. Slectionnez loption "Apporter les modifications cet ordinateur" et cliquez sur "Suivant". 5. Slectionnez licne "Poste de travail" et rglez la scurit sur "Confiance totale". WLangage.book Page 316 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 317 Remarque : Pour excuter un programme .NET dis- ponible sur le rseau local, slectionnez licne "Intranet local" et rglez la scurit sur "Confiance totale". 20.2.3 Rendre accessibles les DLLs nces- saires lexcution de lassemblage .NET Pour rendre les DLLs ncessaires lexcution de lassemblage .NET accessibles : 1. Copiez si ncessaire la librairie "WD180NET.DLL" : soit dans le rpertoire de cration de lassem- blage .NET. soit dans le sous-rpertoire "Assembly" du rper- toire dinstallation de Windows. 2. Copiez si ncessaire les librairies WinDev : soit dans le rpertoire de cration de lassem- blage .NET. soit dans le PATH. Rappel : Le PATH liste les rpertoires dans les- quels les excutables (fichiers ".EXE") et les librai- ries (fichiers ".DLL") sont recherchs en priorit. 20.3 Crer un assemblage .NET depuis WinDev Avant de crer un assemblage .NET, tous les l- ments ncessaires cet assemblage doivent avoir t dvelopps dans un projet WinDev. Pour crer un assemblage .NET : 1. Ouvrez le projet WinDev partir duquel lassem- blage .NET doit tre cr. 2. Crez si ncessaire une configuration de projet de type "DLL dassemblage .NET" contenant tout les lments ncessaires. 3. Sous le volet "Projet", dans le groupe "Gnra- tion", cliquez sur "Gnrer". Lassistant de cration dun assemblage .NET se lance. 4. Slectionnez les diffrents lments WinDev (projet, fentres, classes, ...) intgrer dans lassemblage .NET. Le bouton "Ajouter" permet dajouter un lment lassemblage .NET : images, fichiers texte, ... Le bouton "Enlever" permet de supprimer un l- ment de lassemblage .NET. Les fichiers correspon- dants et leurs dpendances ne seront pas intgrs dans lassemblage .NET. Le bouton "WDU" permet dafficher les lments prsents dans une bibliothque prcdemment cre. Remarque : Si le projet WinDev (fichier ".WDP") est slectionn : lanalyse du projet sera associe lassemblage .NET. le traitement dinitialisation du projet sera ex- cut linitialisation de lassemblage .NET. le traitement de terminaison du projet sera ex- cut la fermeture de lassemblage .NET. 5. Slectionnez les classes WinDev (fichiers ".WDC") rendre accessibles. Ces classes pourront tre manipules depuis lapplication qui utilisera lassemblage .NET. 6. Paramtrez si ncessaire le message derreur. Ce message sera affich en cas derreur lors de lutilisation de lassemblage .NET. Le bouton "Dfaut" permet de paramtrer un mes- sage derreur par dfaut. 7. Indiquez si ncessaire les informations de lassemblage .NET : description, version, copyright, ... Le bouton "Avanc" permet de dfinir des propri- ts supplmentaires spcifiques lassemblage .NET. 8. Saisissez le nom de lassemblage .NET. Les boutons "Options de compilation" et "Proprits avances" permettent daccder des options avances de lassemblage .NET. Pour plus de dtails, consultez le paragraphe "Options avan- ces". 9. Validez. Limites : Il nest pas possible de : renommer un assemblage .NET existant. intgrer des classes dun composant dans un assemblage .NET. Options avances Le bouton "Options de compilation" permet de slectionner un compilateur C# spcifique et dindi- quer des options de compilations supplmentaires. Le bouton "Proprits avances" permet de dfinir si lassemblage .NET doit tre accessible par un programme utilisant la technologie COM. Dans ce cas, il est ncessaire de : slectionner les diffrentes classes accessibles depuis ce programme. crer un assemblage .NET nom fort. Lassem- blage sera ainsi authentifi et il sera possible de vrifier sa provenance. WLangage.book Page 317 Mardi, 23. avril 2013 1:59 13 318 Partie 6 : Communication spcifier le fichier ".SNK" utiliser. Ce fichier con- tient les cls de cryptage utilises pour authenti- fier lassemblage .NET. indiquer si le mcanisme de signature retarde doit tre utilis. Ce mcanisme permet de ne pas authentifier lassemblage .NET lors de son dve- loppement. 20.4 Crer un assemblage .NET accessible par COM 20.4.1 Prsentation Avant de crer un assemblage .NET, tous les l- ments ncessaires cet assemblage doivent avoir t dvelopps dans un projet WinDev. 20.4.2 Crer un assemblage .NET accessible par COM partir d'un projet WinDev Pour crer un assemblage .NET accessible par COM, il faut : 1. Crer un fichier ".snk". Le fichier snk contient le couple "cl publique/cl priv" utilis pour signer numriquement les assemblages crs par une entreprise. Gnrale- ment, le mme fichier snk est utilis pour signer tous les produits d'une entreprise. Ce fichier doit videmment tre gard secret pour viter qu'une tierce personne ne puisse signer ses propres assemblages avec la mme signature. Pour gnrer un fichier ".snk", il est ncessaire d'utiliser le gnrateur livr avec le SDK .NET (fichier sn.exe). La ligne de commande utiliser pour gnrer un fichier snk est la suivante : "sn.exe -k MonFichierSNK.snk" Un fichier exemple est fourni avec WinDev, dans le rpertoire "Programmes\Donnees\Exemple.snk" du rpertoire d'installation de WinDev. Ce fichier permet de tester la gnration d'assemblage nom fort. Remarque : ce fichier tant diffus avec WinDev, il ne permet pas d'identifier de manire unique les assemblages que vous gnrerez. 2. Modifier le code des classes du projet WinDev La classe doit avoir un constructeur sans argu- ments (c'est le seul constructeur utilisable par COM), Les membres statiques ne seront pas accessi- bles par COM, Les mthodes surcharges sont renommes dans COM. 3. Dans l'assistant de gnration d'assemblage .NET, slectionner les options suivantes : Cocher "Accessible par COM", Spcifier l'emplacement du fichier snk prc- demment cr. 4. Copier l'assemblage gnr dans le rpertoire des assemblages partags de Windows : Copier l'assemblage dans le rpertoire c:\Win- dows\Assembly, Copier la librairie WD180NET.dll dans le rper- toire c:\Windows\Assembly (sinon l'instanciation de l'objet COM chouera avec l'erreur "fichier introuvable l'emplacement spcifi"), Vrifier que la WD180VM.dll se trouve dans un rpertoire du PATH. Pour utiliser un assemblage dans un programme C++ Ces oprations doivent tre renouveles chaque changement de GUID des interfaces : 1. Importer l'assemblage : "regasm MonAssem- blage.DLL /tlb:MonAssemblage.tlb". 2. Utiliser le fichier tlb gnr dans le projet C++. 3. Recompiler le projet C++. 20.5 Crer le programme dinstallation dun assemblage .NET La cration du programme dinstallation dun assemblage .NET est identique la cration du pro- gramme dinstallation dune application WinDev classique. Pour plus de dtails, consultez laide en ligne (mots-cls : "Installation dune application WinDev"). WLangage.book Page 318 Mardi, 23. avril 2013 1:59 13 Partie 6 : Communication 319 20.6 Utiliser des assemblages .NET dans une application WinDev Pour intgrer des assemblages .NET dans lapplica- tion en cours : 1. Sous le volet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez loption "Impor- ter un assemblage .NET". 2. Slectionnez les diffrents assemblages .NET intgrer dans lapplication en cours. 3. Validez. Lutilisation dun assemblage .NET est identique lutilisation dune classe WinDev. Rappel : Les classes sont visibles dans le volet "Explorateur de projet". WLangage.book Page 319 Mardi, 23. avril 2013 1:59 13 320 Partie 6 : Communication WLangage.book Page 320 Mardi, 23. avril 2013 1:59 13 PARTIE 7 Gestion des fichiers de donnes WLangage.book Page 321 Mardi, 23. avril 2013 1:59 13 WLangage.book Page 322 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 323 1. LA GESTION DES FICHIERS DE DONNES WinDev, WinDev Mobile et WebDev permettent de grer des fichiers de donnes au format HyperFi- leSQL (format "WinDev / WebDev"), au format xBase et toute base de donnes accessible par un driver OLE DB. Ce chapitre prsente les concepts de la gestion des fichiers de donnes ayant des formats reconnus par WinDev / WebDev. Pour simplifier la lecture et l'approche de ces con- cepts, nous vous conseillons de lire uniquement les chapitres qui vous intressent. Vous pourrez relire les autres chapitres ultrieurement lorsque vous utiliserez l'une ou l'autre des fonctionnalits. Il est parfois fait rfrence des fonctions de pro- grammation. Ces fonctions sont dtailles dans l'aide en ligne. 1.1 La gestion des fichiers de donnes HyperFileSQL Cette partie explique le mcanisme de gestion des fichiers de donnes HyperFileSQL : cration d'un fichier de donnes, ouverture et fermeture automatique des fichiers de donnes, gestion des cls, accs aux enregistrements. La gestion des fichiers de donnes au format xBase n'est pas traite dans ce chapitre, elle est l'objet du chapitre Les fichiers de donnes au for- mat xBase FoxPro, page 334. Les noms longs : Les noms longs sont grs : il est possible de crer des fichiers de donnes avec des noms longs. Pour crer des fichiers de donnes avec des noms longs, il faut que les noms longs soient supports par l'environnement dans lequel va s'excuter le programme (ou par lenvironnement du serveur Web sur lequel va sexcuter le programme) et le disque sur lequel vont tre crs les fichiers de donnes. Par exemple, les noms longs ne peuvent pas tre utiliss avec certains rseaux qui ne supportent pas les noms longs mais ils peuvent tre utiliss sous Windows XP, 7, ... 1.1.1 Cration d'un fichier de donnes Pour pouvoir accder un fichier de donnes, celui-ci doit exister sur le disque. Si ce n'est pas le cas, il faut le crer. Le fichier de donnes physique est cr : par programmation. si loption "Crer automatiquement les fichiers de donnes si non prsents leur ouverture" est coche dans longlet "Fichiers" de la description du projet. Rappel : Pour afficher la description du projet, sous le volet "Projet", dans le groupe "Pro- jet", cliquez sur "Description"). Remarque : Le fichier physique nest cr ni par la gnration d'analyse, ni par la procdure d'installa- tion. Deux fonctions permettent de crer un fichier de donnes : HCration pour crer le fichier de donnes vide (et ventuellement les fichiers d'index et de mmo). Si le fichier de donnes existait dj, il est cras par un fichier de donnes vide (il est recr). HCrationSiInexistant pour crer le fichier de donnes si celui-ci n'existe pas ou d'ouvrir le fichier de donnes si celui-ci existe. Le fichier de donnes et ventuellement les fichiers d'index et "mmo" sont crs vide. Le fichier de donnes est cr : Sous le nom (appel "Nom sur disque") dfini dans l'analyse (sauf si la fonction HChangeNom a t appele avant la fonction HCration). Dans le rpertoire qui a t dfini dans l'analyse, sauf si la fonction HSubstRep ou HChangeRep a t appele avant la fonction HCration ou HCrationSiInexistant. Lorsque le fichier de donnes vient d'tre cr, il est vide : il ne contient qu'un en-tte. Cet en-tte contient des informations propres au fichier de donnes. Son utilisation est rserve la gestion interne par WinDev/WebDev. 1.1.2 Ouverture et fermeture des fichiers de donnes Les fichiers de donnes sont ouverts et ferms automatiquement. Ce mcanisme est indiqu ici pour information. WLangage.book Page 323 Mardi, 23. avril 2013 1:59 13 324 Partie 7 : Gestion des fichiers de donnes WinDev / WebDev gre la liste des fichiers de don- nes utiliss un moment donn par le pro- gramme. Lorsquune fonction opre sur un fichier de don- nes, si celui-ci n'est pas dans la liste des fichiers utiliss, le fichier de donnes est ouvert automati- quement. Un nombre illimit de fichiers de donnes peut tre ouvert simultanment. Si le fichier de donnes ferm est rutilis ultrieu- rement dans le programme, il sera alors ouvert automatiquement, suivant le mme procd. Il en sera de mme pour tout nouveau fichier de donnes utilis. 1.1.3 Gestion des fichiers de donnes Hyper- FileSQL de plus de 2 Go Par dfaut, le moteur HyperFileSQL permet de grer des fichiers de donnes d'une taille trs importante (jusqu' 2 Giga). Les fichiers de donnes de plus de 2 Giga ncessi- tent une configuration spcifique au niveau de l'diteur d'analyses mais galement au niveau matriel. En effet, pour grer les fichiers de donnes de plus de 2 Giga, il est ncessaire d'utiliser : Un systme d'exploitation grant les fichiers de plus de 4 Giga. Les systmes suivants ne grent pas les fichiers de plus de 4 Giga : Windows 95, Windows 98, Windows Me. Un systme de fichiers grant les fichiers de plus de 4 Giga (par exemple NTFS sous Windows) WinDev : Cette configuration est ncessaire aussi bien sur le poste o les fichiers de donnes sont installs que sur les postes accdant ces fichiers de donnes. Ainsi, un poste sous Windows 98 ne pourra pas accder un fichier de donnes sup- rieur 2 Giga install sous Windows 2000. WebDev : Cette configuration est ncessaire aussi bien sur le serveur Web que sur le serveur de don- nes. WinDev Mobile : La capacit mmoire tant limite sur un Pocket PC, cette option nest pas gre. Configurer les fichiers de donnes Pour grer des fichiers de donnes de plus de 2 Giga : 1. Affichez la description du fichier de donnes voulu (option "Description du fichier de donnes" du menu contextuel). 2. Dans l'onglet "Dtail", cochez l'option "Gestion des fichiers de plus de 2Go". Attention : Ces fichiers de donnes ne seront utili- sables qu' partir dun poste utilisant un systme d'exploitation grant les fichiers de plus de 4 Giga. Utiliser des fichiers de donnes de plus de 2 Go Description dynamique de fichiers de donnes Lors de la description dynamique d'un fichier de donnes (utilisation des proprits HyperFileSQL et de la fonction HDcritFichier), il est possible de configurer la gestion de la taille du fichier de don- nes grce la proprit ..GrosFichier. Attention : La rindexation de fichiers de donnes de plus de 2 Giga peut tre relativement longue. 1.1.4 Gestion des cls Une rubrique peut tre dfinie comme cl unique, cl multiple ou non cl lors de la description du fichier de donnes. Si la rubrique est dcrite comme cl (unique ou multiple), la rubrique pourra tre utilise comme critre de recherche dans le fichier de donnes. Selon le type de la rubrique, la cl peut tre une cl texte ou une cl numrique. Dfinitions gnrales Les rubriques de type texte, date et heure, lorsqu'elles sont dfinies comme cl, sont appe- les cl texte. Les rubriques de type entier (long, court, etc.), de type rel (simple, double, etc.), de type slecteur, combo et liste, et de type montaire WinDev, lorsqu'elles sont dfinies comme cl, sont appe- les cl numrique. Une cl compose est une cl compose de rubriques de type texte et / ou numrique. Remarque : une cl compose peut tre compo- se de l'identifiant du fichier de donnes. Cls uniques et cl doublons Dfinitions Une cl est unique lorsque la valeur de la rubrique est unique pour chaque enregistrement du fichier de donnes. Une cl est avec doublons lorsque la valeur de la rubrique peut exister pour plusieurs enregistre- ments du fichier de donnes. WLangage.book Page 324 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 325 Vrification de l'unicit d'une cl Lorsque la fonction HGreDoublon est active : Vrification automatique de lunicit des cls (WinDev uniquement). Lorsquune cl avec dou- blon apparat aprs lajout ou la modification dun enregistrement, un message apparat auto- matiquement et propose lutilisateur de modi- fier la rubrique posant problme. Cette gestion automatique peut tre personnalise. Pour plus de dtails, consultez laide en ligne. Vrification par programmation. Il suffit de tester la fonction HErreurDoublon aprs toute fonction pouvant provoquer lapparition de doublons. Remarque : Si la cl modifie ou ajoute nest pas unique, les fonctions pouvant provoquer lappari- tion de doublons sont les suivantes : HAjoute, HMo- difie ou TableEnregistre. Si la fonction HErreurDoublon n'est pas appele, l'erreur 10 (erreur de doublons) sera automatique- ment gnre lors du prochain appel une fonc- tion de gestion de fichiers. Cette erreur ne pourra pas tre ignore : tous les fichiers de donnes sont ferms et l'excution du programme est abandon- ne. Par dfaut, la gestion des doublons est active. Si la gestion des doublons est rendue inactive, le contrle de l'unicit d'une cl n'est pas gr. Si la vrification automatique de l'intgrit rfren- tielle est active (fonction HGreIntegrit), la gestion des doublons est automatiquement active. Identifiant : WinDev / WebDev propose la gestion automatique d'un identifiant de fichier (cl unique). La gestion d'un identifiant est dtaille au chapitre Gestion d'un identifiant, page 343. Recherche sur des cls de type texte Dfinitions Le critre de recherche est le nom de la cl (rubri- que) servant la recherche. L'argument de la recherche est la valeur recher- che pour cette cl. L'argument peut tre : Une valeur complte, on parle alors de recher- che lidentique. Une valeur partielle, on parle alors de recher- che gnrique. Exemple Lors d'une recherche gnrique de la chane "Martin" pour la rubrique NOM, tous les enregistre- ments dont la rubrique NOM commence par "Martin" correspondront la recherche. Ainsi, l'enregistrement contenant "Martinez" correspon- dra la recherche (la fonction HTrouve renvoie Vrai). Lors d'une recherche l'identique sur la chane "Martin" pour la rubrique NOM, la fonction HTrouve renvoie Vrai uniquement pour les enregistrements dont la rubrique vaut exactement "Martin". // Ajout d'un enregistrement // (WinDev) FichierVersEcran HAjoute(CLIENT) SI HErreurDoublon() ALORS Info("Un enregistrement existe"+... "dj","Il n'est pas ajout") FIN // Ajout d'un enregistrement //(WebDev) FichierVersPage HAjoute(CLIENT) SI HErreurDoublon() ALORS Info("Un enregistrement existe"+... "dj","Il n'est pas ajout") FIN WLangage.book Page 325 Mardi, 23. avril 2013 1:59 13 326 Partie 7 : Gestion des fichiers de donnes Remarque : Il est possible de dfinir des critres particuliers de recherche lors de la description de la cl sous lditeur danalyses. En effet, il est pos- sible de dfinir si la rubrique cl sera : Sensible la casse (majuscules / minuscules) : Par exemple, PC SOFT sera diffrent de PC Soft. Sensible laccentuation : Par exemple, "t" sera diffrent de "ete". Sensible la ponctuation (virgule, points, ...) : Par exemple, "S.A.R.L." sera diffrent de "SARL". Ces diffrents critres seront automatiquement pris en compte lorsquune recherche sera effec- tue sur la rubrique cl. Recherche sur des cls numriques Codage des cls numriques Les rubriques numriques (entier, entier long, rel, ...) sont mmorises dans les fichiers de donnes selon le format binaire spcifique au langage uti- lis. Cependant, dans le fichier d'index, les cls numri- ques sont codes diffremment (pour simplifier et acclrer les recherches). Exemple : Si le codage d'un entier est celui du lan- gage, la valeur ngative est "lexicographiquement" suprieure la valeur positive (le premier bit, bit de signe, est "1"). Dans le fichier d'index, le codage permet de rtablir l'ordre, c'est--dire que le code d'une valeur ngative sera "lexicographiquement" infrieur au code d'une valeur positive. Gestion des cls numriques Important : Une recherche effectue sur une cl numrique est forcment effectue lidentique, c'est--dire que la recherche s'effectue sur la taille totale de la rubrique. Exemple : Le code postal peut tre une rubrique de type texte ou une rubrique de type entier long. La cl sera donc soit de type texte, soit de type numrique. Dans le cas d'une cl de type texte, la recherche sur les deux premiers caractres permettra une recherche sur le dpartement. Cette recherche ne sera pas possible dans le cas d'une cl numrique. Conseils Les cls de type texte sont plus simples mani- puler que les cls numriques mais occupent plus de place dans le fichier de donnes et dans le fichier d'index. Les cls numriques de type rel doivent tre vi- tes. Les arrondis spcifiques aux codages des rels dans les langages risquent de perturber la recherche. 1.1.5 Gestion des cls composes Une cl compose est une rubrique cl compose de plusieurs autres rubriques. Ces rubriques peu- vent tre des rubriques de type texte ou numrique. Une cl compose permet de simplifier les recher- ches effectues simultanment sur plusieurs crit- res. Les cls composes sont des rubriques binaires. Leur valeur ne peut pas tre affiche directement (dans une trace ou dans un champ). Crer une cl compose La cration d'une cl compose est ralise direc- tement sous l'diteur d'analyses. Pour crer une cl compose dans une description de fichier : 1. Affichez la description des rubriques du fichier de donnes (option "Description des rubriques" du menu contextuel). 2. Cliquez sur l'icne . Un cran permettant de construire la cl compose apparat. 3. Dans le tableau de gauche, la liste des rubriques prsentes dans le fichier de donnes apparat. Double-cliquez sur les rubriques devant participer la cl compose. Ces rubriques apparaissent dans Valeur recherche Options Enreg en cours HTrouve renvoie Explications Durand 1 Vrai Durand existe. Dupuis 1 Faux Dupuis n'existe pas. Positionne sur la premire valeur suprieure (Dupont). Dupon HGnrique 8 Vrai Dupon n'existe pas mais la recherche est gnri- que et il existe un Dupond343 entre autres). Dupon 8 Faux Dupon n'existe pas. Martin 4 Vrai Martin existe. WLangage.book Page 326 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 327 le tableau de droite. 4. Rorganisez si ncessaire les rubriques compo- sant la cl compose. Attention : l'ordre des rubri- ques est trs important car il dtermine l'ordre de tri. Ainsi, la cl compose "Nom + Dpartement" sera trie sur le nom puis sur le dpartement. 5. Spcifiez le sens de parcours et les paramtres de recherche pour chaque composante de la cl. 6. Validez. La cl compose apparat dans la liste des rubriques du fichier de donnes. Cl compose et liaison Il est possible d'utiliser des cls composes dans des liaisons entre fichiers. Lors de la description de l'analyse, la cl compose prsente dans le fichier li apparat alors non plus comme une cl compo- se mais comme une cl binaire. Il ne sera pas possible d'accder aux diffrentes composantes de la cl compose dans le fichier reli. Remarque : La gestion de l'intgrit rfrentielle est gre sur une cl de liaison de type cl compo- se. Valeur dune cl compose Une cl compose est stocke sous forme de chane binaire. Sa valeur ne peut pas tre affiche (ni dans un champ, ni sous le dbogueur, ...). Ajout d'un enregistrement contenant une cl com- pose Lors de l'ajout ou de la modification d'un enregistre- ment contenant une cl compose, la valeur de la cl compose est automatiquement dfinie en fonction des valeurs des diffrentes composantes de la cl. Aucune programmation spcifique n'est ncessaire. Ajout d'un enregistrement contenant une cl com- pose dans un fichier reli Lors de l'ajout d'un enregistrement contenant une cl compose dans un fichier reli, il est ncessaire de construire la valeur de la cl. En effet, dans le fichier reli, la cl compose n'est pas considre comme une cl compose, mais comme une cl binaire. Il est donc ncessaire de lui affecter une valeur. Cette valeur peut tre affecte : soit directement. Par exemple, un enregistrement a t ajout dans le fichier Client. Pour ajouter la valeur de la cl dans le fichier reli, il suffit de raliser une affectation directe : Liaison.NomDate = Client.NomDate soit l'aide de la fonction HConstruitValCl. Cette fonction permet de construire la valeur de la cl compose partir de ses composantes. Construire la valeur d'une cl compose pour rali- ser une recherche ou un filtre Lors de la ralisation d'un filtre ou d'une recherche sur une cl compose, il est ncessaire de dfinir la valeur de la cl compose (par exemple pour dfinir les bornes minimales et maximales du fil- tre). Pour construire la valeur d'une cl compose, plu- sieurs solutions sont possibles : Utilisation de la fonction HConstruitValCl Utilisation dun tableau de valeurs Utilisation de la fonction HConstruitValCl Il suffit de prciser dans la fonction HConstruitVal- Cl le fichier concern, le nom de la cl et les valeurs des composantes. Exemple : Pour construire la valeur de la cl com- pose "NOMDATE" correspondant "NOM- CLIENT+DATE_ENTREE" du fichier Client, il suffit d'utiliser la ligne de code : Utilisation dun tableau de valeurs Il suffit de prciser directement les valeurs de la cl compose lors de la recherche ou du filtre. Exemple : Pour faire un filtre sur le fichier "Client", sur une cl compose du nom et de la date, il suffit dcrire : Proprits de gestion des cls com- poses Les principales proprits permettant de manipuler les cls composes par programmation sont les suivantes : HConstruitValCl(Client,... NOMDATE,"MOULIN","03/11/85") HFiltre(Client, NOMDATE, ... ("MOULIN","03/11/85")) Binaire Identifie une rubrique de type binaire (cl compose, chane binaire, mmo binaire) ClCompose Teste si la rubrique spcifie est une cl compose Composante Renvoie le nom de la nime com- posante d'une cl compose FormuleCl Renvoie la formule d'une cl compose WLangage.book Page 327 Mardi, 23. avril 2013 1:59 13 328 Partie 7 : Gestion des fichiers de donnes Les cls composes peuvent tre utilises pour raliser : des recherches lidentique, des recherches gnriques, des filtres. Pour plus de dtails, consultez laide en ligne. 1.1.6 Accs aux enregistrements des fichiers de donnes Enregistrement et variable de fichier Un enregistrement est compos des rubriques. Les rubriques sont dfinies lors de la description du fichier de donnes. Dans les programmes, chaque rubrique est mani- pule par une variable (appele variable de fichier) ayant un nom et un type dfinis. La syntaxe de cette variable est forme du nom logique du fichier de donnes et du nom de la rubri- que <NomFichier>.<NomRubrique> Exemple : la variable de la rubrique "NOMCLI" (nom client) du fichier "CLIENT" a pour variable CLIENT.NOMCLI Remarque : Il ne faut pas dclarer les variables de fichiers. Toutes les variables de l'enregistrement sont automatiquement dcrites et dclares par WinDev / WebDev. Cas des cls composes Une cl compose peut directement tre lue, sans passer par les rubriques qui la composent. Il suffit de lire la variable comme pour une rubrique. Cette manipulation est dconseille. Par exemple, NOMDATE est une cl compose des rubriques NOM et DATE. Remarque : La tentative d'criture dans une cl compose n'a aucune action. En effet, les cls composes sont reconstruites chaque criture. Enregistrement point et enregistre- ment charg en mmoire Les notions d'enregistrement charg en mmoire et d'enregistrement point sont fondamentales. Il est important de les connatre pour bien utiliser les fonctions de gestion des fichiers de donnes. L'enregistrement point correspond au dernier enregistrement lu selon la cl spcifie. La notion d'enregistrement point est relative une cl. L'enregistrement charg en mmoire correspond l'enregistrement du fichier de donnes dont les valeurs sont actuellement charges dans les varia- bles du programme. A un instant donn, il ne peut y avoir qu'un seul enregistrement charg en mmoire pour un fichier de donnes et un seul enregistrement point pour ce mme fichier de donnes. L'enregistrement point par l'index et l'enregistre- ment charg en mmoire peuvent cependant tre diffrents. Cas particulier : lorsque la gestion des contextes est active dans les fentres ou dans les pages, chaque contexte permet de manipuler des enregis- trements diffrents du mme fichier de donnes. Il ny a quun seul enregistrement charg en mmoire par contexte. La lecture d'un enregistrement, effectue automati- quement ou la demande, initialise les diffrentes variables du fichier avec l'enregistrement charg en mmoire. L'criture d'un enregistrement correspond l'cri- ture des variables du fichier dans le fichier de don- nes lors de la sauvegarde de l'enregistrement charg en mmoire. Remarque : Le tableau ci-aprs indique l'enregistre- ment sur lequel oprent les fonctions qui position- nent un enregistrement : l'enregistrement charg en mmoire ou l'enregistrement point. Les fonctions non prsentes dans le tableau n'utili- sent pas un enregistrement. NbComposante Renvoie le nombre de compo- santes d'une cl compose Info (FACTURE.NOMDATE) // Affiche la valeur cl compose WLangage.book Page 328 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 329 Lecture d'un enregistrement 1. Fonctions de lecture Les fonctions HLitRecherche, HLitRecherchePre- mier, HLitRechercheDernier HLitPremier, HLitDer- nier permettent de lire un enregistrement. D'une part elles chargent un enregistrement en mmoire, d'autre part elles pointent un enregistrement dans l'index. La fonction HLit permet de lire un enregistrement sans pointer l'enregistrement dans l'index. Les fonctions HLitSuivant et HLitPrcdent permet- tent de lire un enregistrement si un enregistrement a t point par HLitRecherche, HLitPremier ou HLitDernier. Important : La fonction HLit permet de lire un enre- gistrement selon son numro d'enregistrement, l'enregistrement point n'est pas initialis. Ainsi, les fonctions HLitSuivant et HLitPrcdent ne peu- vent pas tre appeles immdiatement aprs la fonction HLit. Cependant, il est possible d'initialiser l'enregistre- ment point avec la fonction HChangeCl aprs la fonction HLit : les fonctions HLitSuivant et HLitPr- cdent peuvent alors tre utilises pour parcourir le fichier de donnes sur la cl positionne par la fonction HChangeCl. 2. Lecture selon une cl Les fonctions HLitRecherche, HLitRecherchePre- mier, HLitRechercheDernier, HLitPrcdent, HLit- Suivant, HLitPremier, HLitDernier lisent un enregistrement selon la cl qui a t spcifie en paramtre. Un mme fichier de donnes peut tre lu selon plusieurs cls. Recherche d'un enregistrement Les fonctions HLitRecherche, HLitRecherchePre- mier, HLitRechercheSuivant, HLitPrcdent, HLit- Suivant, HRecherche, HRecherchePremier, HRechercheDernier, HPrcdent, HSuivant permet- tent de rechercher un enregistrement : La fonction HLitRechercheXX (ou HRechercheXX) amorce la recherche. Les fonctions HLitSuivant, HLitPrcdent (ou HSuivant, HPrcdent) accdent l'enregistre- ment suivant ou prcdent. Fonctions positionnant un enregistrement Enregistrement charg en mmoire Enregistrement point HAjoute x HChangeCle x HDernier x HEcrit x HLit x HLitDernier x x HLitPrcdent x x HLitPremier x x HLitRecherche x x HLitRechercheDernier x x HLitRecherchePremier x x HLitSuivant x x HModifie x HPrcdent x HPremier x HRecherche x HRechercheDernier x HRecherchePremier x HRaye x HRetourPosition x HSauvePosition x HSuivant x HSupprime x WLangage.book Page 329 Mardi, 23. avril 2013 1:59 13 330 Partie 7 : Gestion des fichiers de donnes Si l'enregistrement correspondant la recherche est trouv, la fonction HTrouve renvoie Vrai. Dans le cas contraire, elle renvoie Faux. Lors de la recherche d'un enregistrement selon une cl, il faut tester la fonction HTrouve. Parcours de fichiers de donnes 1. Principe Les notions d'enregistrement suivant et d'enregis- trement prcdent sont relatives l'enregistrement point pour une cl donne. Pour pouvoir lire un enregistrement suivant ou pr- cdent, il faut imprativement initialiser l'enregis- trement point. Si ce n'est pas le cas, l'erreur 19 sera gnre. Les fonctions qui initialisent l'enregistrement point sont : HLitRecherche, HLitRecherchePre- mier, HLitRechercheDernier, HLitPremier, HLitDer- nier, HRecherche, HRecherchePremier, HRechercheDernier, HDernier, HPremier, HChan- geCl. Les fichiers de donnes sont accessibles partir des valeurs des cls tries dans l'ordre croissant. Il est toutefois possible de parcourir un fichier de donnes dans les deux sens (croissant ou dcrois- sant). Mcanisme de lecture des fichiers Pour illustrer le mcanisme de lecture des fichiers selon une cl, tudions l'exemple suivant. Le fichier "PERSONNE" est constitu de deux rubriques cls : "CODE" : numro du client. "PRENOM" : prnom du client. "PERSONNE" contient les 8 enregistrements suivants : Pour ce fichier, l'volution de l'enregistrement charg en mmoire et de l'enregistrement point, pen- dant le droulement d'un programme est la suivante : Numro denregistre- ment CODE PRENOM 1 17 Fabien 2 12 Etienne 3 18 Chantal 4 05 Louis 5 01 Jean 6 20 Lara 7 09 Franoise 8 14 Marie Fonctions Enregistre- ment point sur CODE Enregistre- ment point sur PRENOM Enregistre- ment en mmoire Dbut du programme ? ? ? HLitPremier(PERSONNE,CODE) enr.5 ? enr.5 HLitPremier(PERSONNE,NOM) enr.5 enr.3 enr.3 HLitSuivant(PERSONNE,CODE) enr.4 enr.3 enr.4 HLitSuivant(PERSONNE,CODE) enr.7 enr.3 enr.7 HLitSuivant(PERSONNE,NOM) enr.7 enr.2 enr.2 HLitSuivant(PERSONNE,NOM) enr.7 enr.1 enr.1 HLitSuivant(PERSONNE,NOM) enr.7 enr.7 enr.7 HLitSuivant(PERSONNE,CODE) enr.2 enr.7 enr.2 Etc. ... ... ... WLangage.book Page 330 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 331 Attention : Le sens de tri des cls ainsi que les caractristiques de recherche (accentuation, casse et ponctuation) spcifies dans lanalyse sont pris en compte. Le premier enregistrement d'un fichier de donnes par rapport une cl est celui (ou l'un de ceux) cor- respondant la plus petite valeur de la cl. Il est atteint par les fonctions HPremier ou HLitPremier. Le dernier enregistrement d'un fichier de donnes par rapport une cl est celui (ou l'un de ceux) cor- respondant la plus grande valeur de la cl. Il est atteint par les fonctions HDernier ou HLitDernier. Les enregistrements suivant ou prcdant l'enre- gistrement point sont atteints par les fonctions HLitSuivant, HLitPrcdent ou HSuivant, HPrc- dent. Exemple de parcours croissant : 2. Positionnement en dehors du fichier de don- nes Si aprs l'excution d'une fonction HLitDernier, HLitPrcdent, HLitPremier, HLitRecherche, HLit- Suivant et HDernier, HPrcdent, HPremier, HRe- cherche, HSuivant, l'enregistrement point pointe sur le dernier enregistrement charg en mmoire, la fonction HEnDehors renvoie Vrai. Lors d'un parcours dun fichier de donnes, il faut donc tester la fonction HEnDehors aprs l'excu- tion d'une des fonctions cites ci-dessus. 3. Changement de cl de parcours La cl de parcours peut tre modifie avec la fonc- tion HChangeCl. Dans ce cas, l'enregistrement en cours est conserv, bien que la cl de parcours soit modifie. La fonction HChangeCl peut tre utilise pour rechercher un enregistrement aprs s'tre posi- tionn en accs direct sur un enregistrement par la fonction HLit. Par exemple, la ligne : peut remplacer l'algorithme : 4. Parcours en cas de doublons En cas d'galit sur la valeur d'une cl (doublon), l'ordre des enregistrements n'est pas significatif. Le premier enregistrement renvoy sera l'un des enre- gistrements rpondant l'argument de tri. Les fonctions HLitSuivant ou HLitPrcdent per- mettent d'obtenir tous les homonymes. Important : Aucune hypothse ne doit tre faite concernant la localisation relle de l'enregistre- ment. En effet, sur une valeur de recherche poss- dant des homonymes, une boucle HLitSuivant ne permet pas de connatre l'ordre dans lequel les homonymes ont t insrs. 5. Parcours selon un filtre Il est possible de dfinir un filtre pour slectionner des enregistrements. Ce filtre peut : soit parcourir le fichier de donnes selon des bornes dsignes et slectionner les enregistre- ments correspondant au filtre. Les bornes dsi- gnes concernent une cl du fichier de donnes. soit parcourir le fichier de donnes en fonction de la condition de slection indique. La cl de parcours du fichier de donnes est retourne par la fonction HFiltre en fonction de la condition indique. La slection des enregistrements selon le filtre est alors gre automatiquement. Le filtre (les bornes mini et maxi ou condition de slection) est dcrit avec HFiltre. Le filtre est automatiquement activ. Il peut tre activ / dsactiv par programmation avec les N. Enreg Nom Prnom Position 1 GONZALEZ Speedy 2 MOUSE Mickey 3 TALON Achille premier selon PRENOM 4 LAGAFFE Gaston 5 DALTON Avrell premier selon NOM 6 VAILLANT Michel dernier selon NOM 7 ONO Yoko dernier selon PRENOM 8 MALTESE Corto HLitPremier(CLIENT,Nom) TANTQUE PAS HEnDehors() ImprimeEtiquette() HLitSuivant(CLIENT,Nom) Fin HChangeCl(CLIENT,NOMCLI) NumEnr est un entier // Mmorise n enreg. en cours de // Client NumEnr=HNumEnr(CLIENT) // Se replacer relativement la cl // NOMCLI HRecherche(CLIENT,NOMCLI,... CLIENT.NOMCLI) TANTQUE PAS HEnDehors() ET ... NumEnr<>HNumEnr() HSuivant(CLIENT,NOMCLI) FIN WLangage.book Page 331 Mardi, 23. avril 2013 1:59 13 332 Partie 7 : Gestion des fichiers de donnes fonctions HActiveFiltre et HDsactiveFiltre. Filtre et cl compose Deux mthodes permettent de raliser un filtre sur une cl compose : Utilisation des fonctions de filtre volues (HFil- treCommencePar, HFiltreComprisEntre, HFiltreIdentique) : la gestion des cls composes est automatiquement gre. Il suffit de prciser pour chaque composante de la cl compose la valeur prendre en compte pour le filtre. Cette mthode est conseille. Pour plus de dtails, consultez directement la documentation de ces fonctions. Utilisation de la fonction HFiltre combine avec la fonction HConstruitValCl. Cette mthode est prsente dans les paragraphes suivants. Remarques Le filtre peut tre utilis en langage externe (Win- Dev uniquement). Un seul filtre peut tre dfini par fichier un moment donn. Un filtre n'est actif que : soit sur la cl de parcours sur laquelle il a t dfini, soit sur la cl de parcours renvoye en fonction de la condition de slection. Si un filtre est actif, HPremier, HLitPremier, HLit- PremierBloque, HLitPremierSansBloquer retournent : soit le premier enregistrement correspondant au filtre, soit la fonction HEnDehors renvoie Vrai si aucun enregistrement ne correspond au filtre. Dans le cas dun filtre sur une cl avec des bor- nes dfinies, l'enregistrement en cours est alors le premier enregistrement ayant une cl suprieure <BorneInf>, s'il existe. Si un filtre est actif, HDernier, HLitDernier, HLi- tDernierBloque, HLitDernierSansBloquer retournent : soit le dernier enregistrement correspondant au filtre, soit HEnDehors() Vrai si aucun enregistre- ment ne correspond au filtre. Dans le cas dun filtre sur une cl avec des bor- nes dfinies, l'enregistrement en cours est alors le premier enregistrement ayant une cl suprieure <BorneSup>, s'il existe. Si un filtre est actif, HSuivant, HLitSuivant, HLit- SuivantBloque, HLitSuivantSansBloquer retournent : soit l'enregistrement suivant correspondant au filtre, soit la fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre. Dans le cas dun filtre sur une cl avec des bor- nes dfinies, l'enregistrement en cours est alors le premier enregistrement ayant une cl suprieure <BorneSup>, s'il existe. Si un filtre est actif, les fonctions HPrcdent et HLitPrcdent retournent : soit l'enregistrement prcdent correspondant au filtre, soit la fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre. Dans le cas dun filtre sur une cl avec des bor- nes dfinies, l'enregistrement en cours est alors le premier enregistrement ayant une cl infrieure <BorneSup>, s'il existe. Addition, suppression et modification d'un enregistrement Il est possible d'ajouter, de modifier ou de suppri- mer un enregistrement d'un fichier : HAjoute ajoute un enregistrement, HEcrit crit un enregistrement, HModifie modifie un enregistrement, HRaye et HSupprime suppriment un enregistre- ment. Les fonctions HAjoute, HModifie, HRaye et HSup- prime utilisent l'enregistrement charg en mmoire Avant de supprimer ou de modifier un enregistre- ment, il faut initialiser l'enregistrement charg en mmoire avec HLit, HLitPremier, HLitDernier, HLit- Suivant, HLitPrcdent ou HLitRecherche, HLitRe- cherchePremier, HLitRechercheDernier, sinon une erreur sera gnre (voir annexe). Important : Dans les tables fichier, pour supprimer un enregistrement, il faut utiliser la fonction Table- Supprime (et non pas la fonction HSupprime). Pour crire un enregistrement, il faut utiliser la fonction TableEnregistre (et non pas les fonctions HAjoute, HModifie, ...). Remarque : La fonction HCopieEnreg permet de copier l'enregistrement en cours d'un fichier de donnes dans l'enregistrement en cours d'un autre fichier de donnes ayant la mme structure. Pour plus de dtails, consultez le paragraphe Gestion d'alias, page 339. WLangage.book Page 332 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 333 Affectation de variables de fichiers et de champs de fentre ou de page Les donnes d'un fichier peuvent tre prsentes dans une fentre ou dans une page : soit en fiche : un enregistrement par fentre ou par page soit en table : un enregistrement par ligne de table Prsentation en fiche Dans le cas o les champs d'une fentre ou dune page sont relis des rubriques, les variables des fichiers peuvent tre affectes avec les valeurs des champs (ou inversement) grce une seule fonction : EcranVersFichier / PageVersFichier affecte les variables des fichiers avec les valeurs des champs de l'cran qui leur sont relis, FichierVersEcran / FichierVersPage affecte les champs de l'cran avec les valeurs des variables des fichiers qui leur sont relies. Les variables de fichiers peuvent galement tre affectes individuellement. Par exemple : Important L'affectation des variables du fichier n'effectue pas de modifications dans le fichier de donnes : la modification est effectue uniquement aprs l'criture de l'enregistrement (par les fonctions HAjoute, HModifie, ...). Si plusieurs champs sont relis une mme rubrique d'un fichier de donnes, les fonctions FichierVersEcran / FichierVersPage et EcranVer- sFichier / PageVersFichier peuvent se comporter de manire alatoire. Prsentation en table Les fonctions EcranVersFichier / PageVersFichier et FichierVersEcran / FichierVersPage ne doivent pas tre utilises dans les tables fichiers. Dans les tables, l'affectation des colonnes de la table avec les valeurs des rubriques de fichier (ou inversement) est gre automatiquement. La gestion des fichiers dans les tables, appeles "tables fichier", est spcifique. Elle est dtaille dans laide en ligne. 1.1.7 Schmas : le mode fiche et le mode table Gestion d'un fichier en mode fiche fiche Gestion d'un fichier en mode table 1.1.8 Dplacement et positionnement dans un fichier de donnes Le WLangage propose 3 fonctions pour se position- ner et se dplacer rapidement dans un fichier de donnes sans parcourir le fichier de donnes. NOM=CLIENT.NOM CLIENT.VILLE=VILLE HPositionne Permet de se positionner dans un fichier de donnes relativement une cl ou de connatre la position relative de l'enregistrement en cours pour une cl par rapport au nombre total d'enregistrements HAvance Permet d'avancer de plusieurs enre- gistrements en mme temps partir de la position en cours selon une cl donne HRecule Permet de reculer de plusieurs enre- gistrements en mme temps partir de la position en cours sur une cl donne WLangage.book Page 333 Mardi, 23. avril 2013 1:59 13 334 Partie 7 : Gestion des fichiers de donnes Exemple 1.2 Les fichiers de donnes au format xBase FoxPro 1.2.1 Prsentation WinDev et WebDev proposent un module d'Accs Natif xBase / FoxPro. Cet Accs Natif permet de manipuler des fichiers xBase sans drivers externes depuis un programme en WLangage. Configuration ncessaire Les fichiers suivants sont livrs en standard avec WinDev / WebDev : WD180DB.DLL. Ce fichier est ncessaire l'Accs Natif sur des fichiers xBase / FoxPro pour un fonctionnement avec une analyse HyperFileSQL Classic. 1.2.2 Utilisation de lAccs Natif xBase / Fox- Pro Pour utiliser l'accs natif xBase / Fox Pro dans vos applications WinDev ou WebDev : 1. Importer si ncessaire les descriptions des fichiers xBase / FoxPro dans l'analyse WinDev ou WebDev. 2. Programmer avec les fonctions "HyperFileSQL" du WLangage (voir Programmation l'aide des fonctions HyperFileSQL). La gestion des fichiers xBase/FoxPro est similaire celle des fichiers HyperFileSQL l'exception des limitations spcifies (consultez laide en ligne). 1.2.3 Importation de la structure des fichiers Les tapes de l'importation Pour raliser cette importation sous lditeur dana- lyses : 1. Sous le volet "Analyse", droulez "Importer" et slectionnez loption "Importer des descriptions de fichiers / tables". L'assistant se lance. 1. Slectionnez le type de la base de donnes : FoxPro / xBase. Une connexion la base de don- nes xBase / FoxPro est automatiquement cre et associe aux fichiers imports dans l'analyse. Cette connexion devra tre utilise pour manipuler le fichier de donnes xBase / FoxPro par program- mation. 2. Spcifiez si les donnes doivent tre conserves au format actuel (option ncessaire pour utiliser l'Accs Natif xBase / FoxPro). 3. Slectionnez le mode d'accs aux fichiers (Accs Natif xBase pour WinDev) et indiquez le rpertoire des fichiers de donnes. 4. Slectionnez les tables importer dans l'ana- lyse WinDev. Ces tables pourront tre manipules par programmation grce aux fonctions Hyper File de WinDev. Ces tables apparatront en bleu sous l'diteur d'analyses. Remarque : les bases de donnes FoxPro (exten- sion .dbc) ne sont pas gres. Il est ncessaire d'importer individuellement chaque fichier (exten- sion .dbf) dans l'analyse. 5. Validez. Les tables sont importes dans l'ana- lyse. Dans la description du fichier, vous retrouvez le sous-type xBase du fichier import (dBase3+, dBase4, FoxPro / FoxBase, Clipper5, Clipper87). Remarques : Une rubrique dfinie en Numrique sous FoxPro peut tre importe en tant que montaire en Win- Dev / WebDev (si la taille de la rubrique dpasse par exemple la taille d'un rel). Les rubriques de type Logique en xBase / FoxPro sont importes en type Texte. En effet, pour un boolen en xBase, il est possible d'indiquer Vrai et Faux avec les chanes 'T' et 'F'. Prendre en compte les volutions des fichiers xBase Pour prendre en compte les volutions des tables importes sous l'diteur d'analyses, sous le volet "Analyse", dans le groupe "Analyse", droulez "Syn- chronisation" et slectionnez loption "Mettre jour l'analyse depuis les bases de donnes externes". Un assistant se lance et permet au choix : soit d'analyser les diffrences pour les tables importes. soit d'analyser les diffrences pour toutes les tables xBase. // Position 50% de CLIENT sur // la cl NOMCLI partir du dernier MaxEnr est un entier MaxEnr = HNbEnr() HDernier(CLIENT, NOMCLI) HRecule(CLIENT,NOMCLI, MaxEnr/2) SI HEnDehors() ALORS Erreur("Position endehors") SINON Info("Position : enreg="+... hNumEnr()+" Client = "+... CLIENT.NOMCLI) FIN WLangage.book Page 334 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 335 1.2.4 Points importants de programmation La gestion des fichiers xBase est similaire celle des fichiers HyperFileSQL l'exception des points voqus dans ce paragraphe. Nouveauts pour la gestion des fichiers xBase : Gestion d'un identifiant automatique Possibilit d'utiliser la fonction HReindexe. Gestion des expressions dans la fonction HFiltre Possibilit d'utiliser la fonction HChangeRep Utilisation de laccs natif xBase avec les alpha- bets non latins. Gestion des fichiers FoxPro : Support du format VFP Tous les formats d'index sont supports (y com- pris les index au format VFP correspondants l'extension .CDX). Les index sont lus et modifis. Gestion d'un identifiant automatique Gestion des expressions dans la fonction HFiltre Possibilit d'utiliser la fonction HChangeRep Limitation : pas de cration ou de rindexation dun fichier FoxPro. Description dynamique d'un fichier xBase Un fichier xBase peut tre dcrit par programma- tion l'aide des fonctions suivantes : Exemple : Ouverture de fichiers dcrits dynamiquement Un fichier xBase n'est pas automatiquement ouvert : il faut ouvrir ce fichier avec la fonction HDBOuvre avant sa premire utilisation, sauf s'il a t cr avec la fonction HDBCration (qui cre et ouvre le fichier). Ouverture d'index La fonction HDBOuvre ouvre le fichier de donnes mais pas le ou les fichiers d'index. Il faut donc ouvrir tous les fichiers d'index ncessaires l'utili- sation du fichier de donnes avec la fonction HDBIndex. Si le ou les fichiers d'index ne sont pas ouverts, ils ne seront pas mis jour aprs une suppression, une modification ou une adjonction d'un enregistre- ment. Liaisons entre les fichiers xBase ou FoxPro Les liaisons ne sont pas gres automatiquement. Il faut les grer par programmation. Ainsi, pour accder un enregistrement d'un fichier li, il faut rechercher l'enregistrement correspondant selon la cl de liaison (fonction HLitRecherche). Exemple : Une fentre affiche les commandes d'un client, le fichier "COMMANDE" contient le numro du produit, le fichier "PRODUIT" contient le libell du produit et le numro du produit. HDBCration Termine la description dynamique de la structure du fichier. Le fichier qui vient d'tre dcrit est cr sur le disque dans le chemin indiqu dans HDBDcritFichier. Les fichiers de donnes, mmos et d'index sont crs sur le disque HDBDcritFi- chier Dcrit dynamiquement un fichier au format dBase 3 (format le plus rpandu). Cette fonction permet d'indiquer le nom, l'abrviation et le chemin d'accs au fichier xBase. HDBDcritIn- dex Dcrit dynamiquement les diff- rents fichiers d'index qui seront crs. Un fichier d'index doit tre dcrit pour chaque cl de recher- che. Le fichier d'index cr sera au format dBase 3. HDBDcritRu- brique Dcrit dynamiquement chaque rubrique de la structure d'un fichier xBase dcrit avec HDBDecritFi- chier. // Description d'un fichier xBase // avec les rubriques suivantes : // NOM, chane de 20 caractres // PRENOM, chane de 20 caractres // AGE, entier sur 3 chiffres // SOLDE, rel sur 10 chiffres et // 2 dcimales // MARIE, boolen // DATNAISS, date // INFOS, mmo texte HDBDcritFichier("CLIENTDB",... "CD","C:\FIC\CLIENT.DBF") HDBDcritRubrique("NOM,C,20") HDBDcritRubrique("PRENOM,C,20") HDBDcritRubrique("AGE,N,3,0") HDBDcritRubrique("SOLDE,N,10,2") HDBDcritRubrique("MARIE,L") HDBDcritRubrique("DATNAISS,D") HDBDcritRubrique("INFOS,M") HDBCration() WLangage.book Page 335 Mardi, 23. avril 2013 1:59 13 336 Partie 7 : Gestion des fichiers de donnes Le traitement d'initialisation de la fentre est par exemple : Utilisation de l'accs natif xBase / FoxPro avec des alphabets non latin Pour utiliser l'accs natif xBase avec des alphabets non latin, il est ncessaire de demander l'accs natif d'effectuer une conversion OEM/ANSI stan- dard. Il suffit pour cela de spcifier dans les infor- mations tendues la chane suivante : OEMTOANSI=WINDOWS; 1.3 Les fichiers de donnes prsents sur un mobile (Pocket PC, iOS, Android) 1.3.1 Manipulation dune base de donnes HyperFileSQL Prsentation Le format de base de donnes HyperFileSQL est compatible entre WinDev, WinDev Mobile et Web- Dev. Il sagit dun SGBD Relationnel redistribuable gratuitement. Cependant, la taille disponible sur un Pocket PC tant restreinte et le systme dexploitation du Poc- ket PC tant limit, les fonctionnalits suivantes ne sont pas gres : les transactions. la journalisation. la rplication journale HyperFileSQL. la gestion des blocages des fichiers et des enre- gistrements. la gestion des fichiers au format Hyper File 5.5. Manipulation dune base de donnes HyperFileSQL depuis le mobile Une base de donnes HyperFileSQL correspond un ensemble de fichiers ".FIC", ".NDX", ".MMO". Chaque fichier de donnes peut tre manipul par une application Mobile. Ces manipulations sont ralises grce aux fonctions HyperFileSQL. Remarque : La mise en veille peut avoir des effets nfastes sur les fichiers de donnes. Il est conseill de fermer les fichiers de donnes (fonction HFerme) quand il y a risque de mise en veille. 1.4 Fichiers de donnes spcifiques Windows Mobile 1.4.1 Manipulation d'une base de donnes CEDB (Pocket PC uniquement) Prsentation Le format CEDB est un format de base de donnes utilisable sous Pocket PC. Une base de donnes CEDB correspond un fichier ".CDB". Une base de donnes CEDB peut contenir plusieurs fichiers de donnes (appels galement "tables"). Deux types de bases de donnes CEDB existent : les bases de donnes CEDB standard, qui corres- pondent aux bases de donnes prsentes par dfaut sur le Pocket PC. Il sagit des bases de donnes contenant les fichiers de donnes "Tches", "Contacts", "Calendrier", ... les autres bases de donnes CEDB (appeles personnalises), qui correspondent des bases de donnes Access (fichier ".MDB") pralable- ment exportes depuis un poste PC. Lors de la copie d'une base de donnes Access (fichier ".MDB") sur un Pocket PC, cette base de donnes se transforme automatiquement en base de donnes CEDB (fichier ".CDB"). Manipulation d'une base de donnes Pocket PC (CEDB) 1. Manipulation d'une base de donnes Pocket PC (CEDB) depuis le Pocket PC Une base de donnes Pocket PC (appele CEDB) correspond un fichier ".CDB". Une base de don- nes Pocket PC peut contenir plusieurs fichiers de donnes (appels galement "tables"). Cette base de donnes peut tre manipule par une application WinDev Mobile. Ces manipulations sont ralises grce aux fonctions cdbxxx. // Lecture des commandes HLitPremier(COMMANDE, Date) SI HEnDehors() = Faux ALORS // Recherche du produit // correspondant HLitRecherche(PRODUIT, NumPro, ... COMMANDE.NumPro) FichierVersEcran FIN WLangage.book Page 336 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 337 2. Manipulation d'une base de donnes Pocket PC (CEDB) depuis le poste PC Si vous possdez WinDev standard, il est gale- ment possible de crer une application WinDev per- mettant de manipuler directement la base de donnes Pocket PC. Ces manipulations sont gale- ment ralises grce aux fonctions cdbxxx. Remarque : Pour manipuler une base de donnes Pocket PC partir d'une application WinDev stan- dard, il est ncessaire de connecter le poste PC au Pocket PC (fonction ceConnecte). 3. Synchronisation d'une base de donnes Pocket PC (CEDB) avec une base de donnes Access Une base de donnes Access (fichier ".MDB") est prsente sur le poste PC. Cette base de donnes est exporte sur le Pocket PC : ActiveSync la trans- forme automatiquement en base de donnes Poc- ket PC (fichier ".CDB"). Cette base de donnes Pocket PC peut tre mani- pule par une application WinDev Mobile. Si vous possdez WinDev standard, il est gale- ment possible de crer une application WinDev per- mettant de manipuler la base de donnes Pocket PC. Ces manipulations sont ralises grce aux fonc- tions cdbxxx. La synchronisation entre la base de donnes du Pocket PC et la base de donnes Access est rali- se par ActiveSync. Remarques : Pour manipuler une base de donnes Pocket PC partir d'une application WinDev standard, il est ncessaire de connecter le poste PC au Pocket PC (fonction ceConnecte). L'application WinDev standard peut galement manipuler la base de donnes Access grce l'Accs Natif Access. Manipulation d'une base de donnes standard du Pocket PC Une base de donnes standard (contenant les fichiers de donnes tches, contacts, ...) est pr- sente sur le Pocket PC. Cette base de donnes peut tre manipule par une application WinDev pour Pocket PC. Si vous possdez WinDev standard, il est gale- ment possible de crer une application WinDev per- mettant de manipuler cette base de donnes standard du Pocket PC. Ces manipulations sont ralises grce aux fonc- tions cdbxxx. La synchronisation entre la base de donnes du Pocket PC et les donnes visualises grce Out- look est ralise par ActiveSync. Remarque : Pour manipuler une base de donnes Pocket PC partir d'une application WinDev stan- dard, il est ncessaire de connecter le poste PC au Pocket PC (fonction ceConnecte). Le format des fichiers ".CDB" n'est pas compatible entre Windows CE 3.0 et Windows CE 4.X. Il n'est donc pas possible d'utiliser les mmes fichiers ".CDB" sur des Pockets PC n'utilisant pas le mme systme d'exploitation. Structure des bases de donnes stan- dard La structure des bases de donnes standard est une structure prdfinie du WLangage (aucune dclaration n'est ncessaire). Cette structure permet de : crer un enregistrement, modifier un enregistrement, rcuprer le contenu d'un enregistrement. Pour remettre zro toutes les variables d'une structure, utilisez la fonction cdbRaz. Remarque : Les variables de la structure des bases de donnes standard sont diffrentes en fonction de la base de donnes manipule : Contacts, Ren- dez-Vous et Tches. Pour plus de dtails, consultez laide en ligne. WLangage.book Page 337 Mardi, 23. avril 2013 1:59 13 338 Partie 7 : Gestion des fichiers de donnes 1.4.2 Fonctions de manipulation d'une base de donnes CEDB Les fonctions permettant de manipuler une base de donnes CEDB sont les suivantes : cdbAjoute Ajoute l'enregistrement prsent en mmoire dans un fichier de donnes cdbAnnuleRecher- che Annule le critre de recherche en cours cdbCol Renvoie une caractristique d'une colonne de l'enregistrement en cours (valeur, type, identifiant ou nom) cdbDateHeureVer- sEntier Transforme une variable de type DateHeure en une valeur compatible avec une colonne de type date et heure (entier sans signe sur 8 octets) cdbEcritCol Modifie la valeur d'une colonne d'un enregistrement en mmoire cdbEnDehors Permet de savoir si l'enregistrement sur lequel on veut se positionner est en dehors du fichier cdbEntierVersDa- teHeure Transforme la valeur d'une colonne de type date et heure (entier sans signe sur 8 octets) en une variable de type DateHeure cdbFerme Ferme une base de donnes (fichier ".CDB") pralablement ouverte avec la fonction cdbOuvre cdbListeFichier Renvoie la liste des fichiers de donnes prsents dans une base de donnes CEDB cdbLit Lit un enregistrement dans un fichier en fonction d'un numro d'enregistrement donn cdbLitDernier Positionne sur le dernier enregistrement d'un fichier et lit cet l'enregistrement cdbLitPrcdent Positionne sur l'enregistrement prcdent d'un fichier et lit cet l'enregistrement cdbLitPremier Positionne sur le premier enregistrement d'un fichier et lit cet l'enregistrement cdbLitRecherche Positionne sur le premier enregistrement d'un fichier dont la valeur d'une colonne sp- cifique est gale une valeur recherche cdbLitSuivant Positionne sur l'enregistrement suivant d'un fichier et lit cet enregistrement cdbModifie Modifie l'enregistrement spcifi ou l'enregistrement prsent en mmoire dans le fichier de donnes cdbNbCol Renvoie le nombre de colonnes de l'enregistrement en mmoire cdbNbEnr Renvoie le nombre d'enregistrements prsents dans un fichier de donnes cdbNumEnr Renvoie le numro de l'enregistrement en cours dans le fichier de donnes cdbOuvre Ouvre une base de donnes (fichier ".CDB") sur le Pocket PC connect au poste en cours cdbRaz R-initialise toutes les variables d'une des structures des bases de donnes standard cdbSupprime Supprime l'enregistrement en cours ou l'enregistrement spcifi dans le fichier de don- nes cdbTrouve Vrifie si l'enregistrement en cours correspond la recherche en cours WLangage.book Page 338 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 339 2. FONCTIONNALITS AVANCES Ce chapitre prsente les fonctionnalits pour une gestion avance d'une base de donnes : gestion des alias, gestion du NULL dans HyperFileSQL, protection et cryptage des donnes, contrle de l'intgrit rfrentielle, gestion des fichiers "mmo", rassignation de fichiers, recherche et index full-text, gestion des transactions, journalisation des fichiers, modification automatique des fichiers, change et partage de donnes entre plusieurs programmes, fichier temporaire, rcupration de la structure d'un fichier, utilisation dun driver ODBC sur HyperFileSQL Classic. 2.1 Gestion d'alias Les alias permettent de manipuler : plusieurs fichiers physiques ayant la mme des- cription dans l'analyse, plusieurs fichiers logiques dcrits dans l'analyse manipulant le mme fichier physique. 2.1.1 Plusieurs fichiers physiques avec une description logique identique Par exemple, il est ainsi possible de manipuler en mme temps : le fichier Client2000.fic qui contient la sauve- garde des clients pour l'anne 2000. le fichier Client.fic qui contient les rfrences des clients pour l'anne en cours. Ces deux fichiers ont la mme description logique dans l'analyse : le fichier CLIENT. Par dfaut, la description du fichier CLIENT pr- sente dans l'analyse est lie au fichier Client.fic. Pour utiliser le fichier Client2000.Fic, il est nces- saire de "copier" la description du fichier CLIENT de l'analyse : il suffit de crer un alias avec la fonction HAlias. La ligne de code est la suivante : HAlias(Client, Client2000) WLangage.book Page 339 Mardi, 23. avril 2013 1:59 13 340 Partie 7 : Gestion des fichiers de donnes La manipulation des deux fichiers se fera de la mme faon avec les fonctions HyperFileSQL clas- siques. 2.1.2 Plusieurs fichiers logiques relis un seul fichier physique Il est possible de raliser plusieurs recherches en parallle sur un mme fichier physique, ou une recherche et un filtre en parallle sur le fichier. Exemple : Le fichier Client.Fic est associ au fichier logique Client dans l'analyse. Pour filtrer les enre- gistrements du fichier Client.fic et pour parcourir en mme temps la totalit des enregistrements de ce fichier, il est ncessaire : de "copier" la description du fichier CLIENT dans l'analyse : il suffit de crer un alias avec la fonc- tion HAlias. d'associer la description de l'alias au fichier phy- sique Client.Fic (fonction HChangeNom). Remarque : Cette mthode permet de grer plu- sieurs contextes HyperFileSQL pour un mme fichier physique. 2.1.3 Fonctions de gestion des alias Plusieurs fonctions permettent de manipuler les alias : D'autres fonctions peuvent intervenir dans la dfini- tion et la manipulation des alias : 2.1.4 Crer un alias sur quoi ? Il est possible de crer et de manipuler des alias sur les lments suivants : Fichier de donnes dcrit dans l'analyse Fichier de donnes dcrit dynamiquement Requte cre avec l'diteur de requtes Vue HyperFileSQL (format HyperFileSQL Classic) Alias 2.1.5 Caractristiques d'un alias Fichier physique associ un alias : Par dfaut, le nom spcifi pour l'alias est attri- bu au fichier physique correspondant l'alias. Pour associer l'alias un fichier physique de nom diffrent, il suffit d'utiliser les fonctions HChange- Nom et HChangeRep. Mot de passe d'un alias : Par dfaut, le mot de passe d'un fichier alias est identique au mot de passe du fichier d'origine. Il est possible de modifier ce mot de passe grce la fonction HPasse. Le nom du fichier utilis dans cette fonction correspond alors au nom de l'alias. Rindexation : Les fichiers alias peuvent tre rindexs. Modification automatique des fichiers de donnes : Cette opration peut tre applique aux fichiers alias. 2.1.6 Manipuler le fichier alias et ses rubri- ques Editeur de code : Pour viter l'erreur "Identifica- teur inconnu" lors de l'utilisation d'un fichier alias et de ses rubriques, il est ncessaire de dfinir une source de donnes pour dclarer le nom de l'alias avant l'utilisation de la fonction HAlias. Par exemple : Attention : L'utilisation du mot-cl Externe est pos- sible mais entrane un ralentissement non ngli- geable l'excution. HAlias Cre un alias logique d'un fichier ou annule tous les alias existants HAnnuleAlias Annule un alias prcdemment dclar avec la fonction HAlias HChangeNom Modifie le nom physique d'un fichier de donnes HChangeRep Modifie le chemin d'accs un fichier de donnes Commande2000 est une source de ... donnes HAlias(Commande,Commande2000) WLangage.book Page 340 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 341 Editeur de fentres ou de pages : les champs et les tables ne peuvent pas tre directement asso- cis des rubriques des fichiers alias. Il est ncessaire d'affecter les champs un par un par programmation. Remarque : Pour redfinir les liaisons des champs par programmation, il est possible d'utili- ser soit la fonction ChampAlias, soit la proprit ..LiaisonFichier. 2.2 Gestion du NULL dans HyperFileSQL WinDev et WebDev permettent de grer la valeur Nulle dans les rubriques des fichiers de donnes HyperFileSQL et pour tous les autres types d'accs (Natif, OLEDB, ...). Ainsi, lors de calculs sur les enregistrements de vos fichiers, les enregistrements contenant une rubri- que Nulle ne seront pas pris en compte. Par exem- ple, si une requte calcule la note moyenne des lves pendant le trimestre, seules les notes des lves prsents seront prises en compte. Si l'lve est absent, sa note correspondra la valeur nulle. 2.2.1 Comment grer la valeur nulle dans une de vos rubriques ? Pour grer la valeur nulle dans vos fichiers, vous disposez : Sous l'diteur d'analyses : dune option "NULL support" dans longlet "Info" de la description du fichier. Cette option permet de dfinir si la gestion du NULL est sup- porte pour ce fichier. Dans ce cas, il sera pos- sible de grer la valeur NULL pour les diffrentes rubriques du fichier. d'une option "Valeur NULL par dfaut" dans longlet "Gnral" de la description dune rubri- que. Cette option permet de dfinir la valeur nulle comme valeur par dfaut de la rubrique. En programmation, de deux proprits : Limites : Il n'est pas possible d'utiliser la valeur NULL : sur les rubriques tableau. sur les identifiants automatiques. sur les cls composes. Attention : L'criture d'enregistrements par une application utilisant une version de WinDev ant- rieure la version 75205 peut rendre la proprit ..Null incohrente (renverra vrai ou faux). L'criture d'enregistrements par une application uti- lisant la version de WinDev 75205 ou suprieure fixe la proprit ..Null Faux mme si la rubrique a t mise Nulle par une application utilisant Win- Dev. 2.2.2 Comment utiliser la valeur NULL dans vos applications ? Comment enregistrer une valeur NULL dans une rubrique ? Pour enregistrer une valeur NULL dans une rubrique : 1. Affichez la fentre de description du fichier (option "Description du fichier de donnes" du menu contextuel). 2. Dans longlet "Info", cochez la case "NULL sup- port". 3. Validez la fentre. 4. Gnrez lanalyse. 5. Si l'utilisateur n'a saisi aucune valeur dans un champ associ une rubrique : pour affecter la valeur NULL cette rubrique pour l'enregistrement en cours, il est ncessaire d'utiliser la proprit ..Null aprs la fonction EcranVersFichier. Exemple : Le champ de saisie SAI_Note a l'option "NULL si vide" coche. Dans ce cas, il est possible de raliser le test suivant avant l'enregistrement des donnes : Null Permet de : dfinir la valeur NULL comme valeur par dfaut pour une rubri- que d'un fichier lors de sa des- cription dynamique. associer ou non la valeur NULL une rubrique d'un fichier. NullSupport Permet de : dfinir le mode de gestion de la valeur NULL pour un fichier lors de sa description dynamique. connatre le mode de gestion de la valeur NULL d'un fichier EcranVersFichier() SI SAI_Note = NULL ALORS Cours.Note..Null = Vrai FIN WLangage.book Page 341 Mardi, 23. avril 2013 1:59 13 342 Partie 7 : Gestion des fichiers de donnes Attention : L'option "NULL si vide" des champs de saisie n'a aucun lien avec la gestion du NULL dans les fichiers de donnes HyperFileSQL. Pour plus de dtails sur cette option, consultez laide en ligne (mots-cls : "Null si vide"). Remarque : Si la valeur par dfaut de la rubrique est NULL (case coche dans lditeur), la fonction HRaz remet la proprit ..Null Vrai. Requte : Condition de slection Il est possible sous l'diteur de requtes de prendre en compte ou non les enregistrements ayant une rubrique nulle. Il suffit de crer une condition de slection, et de choisir l'option "Est nulle" ou "N'est pas Nulle". Dans une requte de slection effectuant un cal- cul, tous les enregistrements ayant une valeur nulle (pour la rubrique de calcul) ne seront pas pris en compte. Exemple L'exemple suivant est une requte qui permet de calculer la moyenne des notes des lves pour le cours de Franais pour l'anne 2012. Si une des notes correspond la valeur NULL, cette note n'est pas prise en compte. 2.3 Protection et cryptage des fichiers de donnes 2.3.1 Les possibilits de protection Plusieurs possibilits permettent de prserver la confidentialit et la scurit des donnes lors du stockage des fichiers de donnes. Ces possibilits peuvent tre appliques aux diffrents types de fichiers : fichiers de donnes (.Fic), fichier dindex (.NDX), fichier mmo (.MMO). Il est possible de : ne pas crypter les fichiers, crypter les fichiers sur 128 bits : seuls les utilisa- teurs connaissant le mot de passe pourront y accder en lecture comme en criture. Le mot de passe est gr dans le programme au moment de l'accs au fichier. Le niveau de protection du fichier de donnes est choisi lors de la description du fichier, sous ldi- teur danalyses. Il ne peut pas tre modifi par pro- grammation. Si la scurit renforce est active, le mot de passe du fichier de donnes sera demand chaque modification automatique des fichiers de donnes. Pour modifier le niveau de protection, il faut modi- fier la description du fichier de donnes. En rsum, un fichier de donnes peut tre au choix : non protg, protg par mot de passe avec cryptage des don- nes, protg par mot de passe avec cryptage des index, protg par mot de passe avec cryptage des mmos. 2.3.2 Gestion des fichiers crypts La transmission du mot de passe associ un fichier de donnes doit s'effectuer en programma- tion juste avant la cration ou l'ouverture du fichier de donnes. Le programmeur peut : soit demander le mot de passe lutilisateur, soit intgrer le mot de passe dans le programme ou le lire dans un fichier paramtre. Il est conseill de donner un mot de passe ayant une taille minimale de 4 caractres. La taille maxi- male du mot de passe est illimite. Le mot de passe peut tre pass au fichier de don- nes de deux faons : soit en passant le mot de passe en paramtre aux fonctions HOuvre, HCration, HCrationSiI- nexistant. soit en utilisant la fonction HPasse avant douvrir le fichier ou de le crer. Au moment o WinDev / WebDev interprte la fonc- tion HCration ou HCrationSiInexistant, le mot de passe doit tre connu par la fonction HPasse sil nest pas prcis dans les paramtres des fonc- tions. // Ajout ou modification de // l'enregistrement HAjoute(Cours) SELECT Notes.Cours AS Cours, Notes.Date AS Date, LEFT(Notes.Date,4) AS Anne, AVG(Notes.Note) AS la_moyenne_Note FROM Notes WHERE Notes.Cours = 'Franais' AND Notes.Note IS NOT NULL AND LEFT(Notes.Date,4) = '2012' GROUP BY Notes.Cours, Notes.Date, LEFT(Notes.Date,4) HPasse(CLIENT, "Code secret") WLangage.book Page 342 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 343 Si le mot de passe est incorrect, la fonction HEr- reurMotDePasse renvoie Vrai. Notes Les fichiers de donnes d'une analyse peuvent avoir des mots de passe identiques ou diffrents. Chaque fichier de donnes est crypt selon son propre mot de passe. Attention : Il n'est pas possible de retrouver un mot de passe "oubli". Si le mot de passe est perdu, le fichier de donnes n'est plus accessi- ble. 2.4 Gestion d'un identifiant 2.4.1 Gestion automatique Classiquement, chaque enregistrement d'un fichier de donnes doit contenir une rubrique ayant une valeur unique dans le fichier de donnes. Cette rubrique, appele identifiant, permet d'identifier l'enregistrement dans le fichier de donnes. C'est une rubrique de type cl unique. Le numro d'enregistrement ne permet pas d'iden- tifier un enregistrement. En effet, celui-ci n'est pas fixe; par exemple, il peut tre modifi aprs une rindexation avec compactage. WinDev / WebDev permet de grer automatique- ment un identifiant : l'identifiant est choisi lors de la description du fichier de donnes, sous lditeur danalyses. Dans ce cas, WinDev / WebDev se charge de tout : il cre automatiquement la rubrique et affecte cette rubrique lors de l'ajout de l'enregistrement dans le fichier de donnes. Important : Il ne faut jamais modifier la valeur de l'identifiant sinon l'unicit des enregistrements sera remise en cause. Il est possible de grer un identifiant par program- mation, sans utiliser l'identifiant automatique pro- pos par WinDev / WebDev. 2.4.2 Gestion manuelle La mthode pour grer manuellement un identi- fiant est la suivante : 1. Lors de la description du fichier de donnes, si celui-ci ne comporte pas de cl unique, crez une rubrique de type entier et cl unique. 2. Lors de l'ajout d'un enregistrement, la valeur de cette rubrique est gre par traitement : il suffit d'incrmenter la valeur de la rubrique chaque enregistrement cr. Exemple de gestion manuelle d'un identifiant : Cette gestion simple peut tre utilise par exemple dans une application monoposte. Pour des exem- ples avancs, consultez le chapitre sur la rplica- tion. 2.4.3 Test de l'unicit d'une cl Que l'identifiant soit gr manuellement ou auto- matiquement par WinDev / WebDev, il faut vrifier l'unicit de la cl lors d'une modification d'un enre- gistrement dans le fichier de donnes. La vrification de l'unicit d'une cl a t dtaille dans le chapitre prcdent de cette partie. 2.5 Contrle automatique de l'intgrit rfrentielle L'intgrit rfrentielle consiste vrifier par exem- ple que : si un enregistrement est supprim dans le fichier pre (ou propritaire), les enregistrements corres- pondants dans les fichiers fils (ou membres) sont galement supprims, si un enregistrement est ajout dans un fichier fils, il existe un enregistrement correspondant dans le fichier pre, si un enregistrement est modifi dans un fichier pre, la cl unique n'est pas modifie, ... La vrification de l'intgrit rfrentielle dpend de la nature de la liaison entre les fichiers. 2.5.1 Intrt du test de l'intgrit rfren- tielle Par exemple, lors de la suppression d'un enregistre- ment dans un fichier, il faut vrifier que les enregis- trements du fichier li qui correspondent l'enregistrement supprim ont galement t sup- prims. HLitDernier(FACTURE,NUMFACT) EcranVersFichier FACTURE.NUMFACT=FACTURE.NUMFACT+1 HAjoute(FACTURE) WLangage.book Page 343 Mardi, 23. avril 2013 1:59 13 344 Partie 7 : Gestion des fichiers de donnes Prenons l'exemple d'une gestion de commandes, constitu des fichiers suivants : "COMMANDE" contenant les rfrences de la commande. L'identifiant est le numro de com- mande. "PRODUIT" contenant les rfrences des pro- duits. L'identifiant correspond au numro de pro- duit. "CLIENT" contenant les rfrences des clients. L'identifiant est le numro de client. "COMMANDE" est reli "CLIENT" par le numro du client. "COMMANDE" est reli "PRODUIT" par le numro du produit. Lors de la suppression d'un client de "CLIENT", si les commandes correspondant au client ne sont pas supprimes que risque-t-il de se passer ? Le client 1000 est supprim (mais pas ses com- mandes) et c'est le dernier de la liste. Lors de l'ajout d'un nouveau client ayant le numro 1000, ce client aura des commandes qui ne lui appartien- nent pas mais qui appartiennent au client prc- demment supprim ! Le contrle de l'intgrit rfrentielle permet de tester automatiquement si l'intgrit est vrifie et donc d'viter des incohrences dans la base de donnes. Pour utiliser la fonctionnalit de contrle automati- que de l'intgrit rfrentielle : Les liaisons doivent tre dcrites sous l'diteur d'analyses ou par la fonction HDcritLiaison. Le type des liaisons doit permettre la gestion de lintgrit rfrentielle automatique. Les diff- rents types de liaisons sont dcrits dans le para- graphe suivant. La gestion de lintgrit rfrentielle doit avoir t active dans le projet avec la fonction HG- reIntegrit(Vrai) dans le code dinitialisation du projet. 2.5.2 Dfinitions Les dfinitions des diffrents types de liaisons dis- ponibles sont prsentes dans le livre "Concepts". 2.5.3 Les diffrents types de liaisons Les diffrents types de liaisons disponibles sont prsents dans le livre "Guide de Dmarrage". Rappel : Les liaisons entre fichiers peuvent tre de plusieurs types : parallle, facultative, de complment, partage, complexe. 2.5.4 Programmation du contrle automati- que de l'intgrit rfrentielle Le contrle automatique de l'intgrit rfrentielle peut tre utilis uniquement en WLangage. Il ne peut pas tre utilis : pour les fichiers au format xBase, en langage externe. Activation du mcanisme Par dfaut, le mcanisme de contrle automatique de l'intgrit rfrentielle n'est pas branch. Il peut tre activ : soit au niveau de la description du projet, soit par programmation. Activation au niveau du projet Dans la description du projet, il est possible de dfi- nir si le contrle automatique de lintgrit et / ou des doublons doit tre activ. Ce choix nimplique aucune ligne de code suppl- mentaire dans votre projet. Activation par programmation Le mcanisme de contrle automatique de lint- grit rfrentielle peut tre activ par la fonction HGreIntegrit (Vrai) ou dsactiv par la fonction HGreIntegrit (Faux). Attention : L'activation du mcanisme de contrle automati- que de l'intgrit rfrentielle active implicitement le mcanisme de gestion des doublons (HGreDou- blon). Il n'est pas possible de dsactiver le mcanisme de contrle des doublons si celui du contrle de l'int- grit est actif (HGereIntegrit (Vrai)). Remarques : Le mcanisme de contrle de l'intgrit corres- pond des recherches effectues dans les fichiers relis lors des appels aux fonctions d'cri- ture dans les fichiers de donnes (HAjoute, HMo- difie, HSupprime, HRaye, TableEnregistre, TableSupprime). Ce mcanisme ne modifie pas le contexte (positionnement) du fichier de base et des fichiers relis. L'intgrit rfrentielle n'est pas teste dans le cas de l'crasement d'un fichier par la fonction HCration. Il est prfrable d'utiliser la fonction WLangage.book Page 344 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 345 HCrationSiInexistant pour ne pas craser de fichier de donnes. Tester l'intgrit Lorsque le mcanisme du contrle de l'intgrit est activ (HGreIntegrit (Vrai)), la fonction HErreurIn- tgrit doit ncessairement tre teste aprs cha- que fonction crivant dans le fichier : HAjoute, HModifie, HEcrit, HSupprime, HRaye, TableEnregis- tre, TableSupprime. La fonction HErreurIntgrit retourne Vrai si une erreur dintgrit sest produite. La fonction HErreu- rInfo retourne le dtail de l'erreur : Si la fonction HErreurIntgrit n'est pas appele, l'erreur 15 (Erreur d'intgrit) sera automatique- ment gnre lors du prochain appel une fonc- tion de gestion de fichier. Cette erreur ne peut pas tre ignore : tous les fichiers sont ferms et l'ex- cution du programme est abandonne. Exemple en monoposte (gestion automatique des blocages et gestion de lintgrit)
Exemple en rseau HGreIntegrit(Vrai) // Suppression du client // numro Num HLitRecherchePremier(CLIENT,... IdClient,Num) SI HTrouve() ALORS SI HSupprime(CLIENT) ALORS Info("Client supprim") SINON SI HErreurIntegrit() ALORS Erreur("Impossible de "+... "supprimer ce client",... "des commandes subsistent") FIN SINON Erreur("Client non trouv") FIN HGreIntegrit(Vrai) HBloqueFichier(CLIENT) SI HErreurBlocage() ALORS Info("Blocage fichier impossible") SINON HLitRecherchePremier(CLIENT,... IdClient, Num) SI HTrouve() ALORS SI HSupprime(CLIENT) ALORS Info("Suppression OK") SINON Erreur(HErreurInfo()) FIN FIN FIN Tableau rcapitulatif des vrifications d'intgrit effectues par WinDev / WebDev Le tableau ci-dessous rsume, pour les fonctions ncessitant un contrle de l'intgrit (HRaye, HSup- prime, HAjoute, HEcrit et HModifie), la vrification de l'intgrit effectue par WinDev / WebDev en fonc- tion du type de liaison. Lgende : 1 : lors de la suppression d'un propritaire, vrification de la non-existence d'un membre li 2 : lors de l'ajout d'un membre, vrification de l'existence d'un propritaire li 3 : Lors de la modification d'un membre, vrification de l'existence du propritaire li (dans le cas du changement de la valeur de la cl de liaison) 4 : Lors de la modification d'un propritaire, vrification de la non-existence du membre li l'ancien pro- pritaire (dans le cas du changement de la valeur de la cl de liaison) 5 : Lors de la modification d'un membre, vrification de la non-existence du propritaire li l'ancien membre (dans le cas du changement de la valeur de la cl de liaison) Liaison Compl- ment (0,1) - (1,1) Liaison Par- tage (x,n) - (1,1) Liaison Parta- ge (1,n) - (0,1) Liaison Parta- ge (0,n) - (0,1) Liaison Facul- tative (0,1) - (0,1) Liaison Paral- lle (1,1) - (1,1) HRaye HSupprime 1 1 1 - - Dev. HAjoute HEcrit 2 2 Dev - - Dev HModifie 3 et 4 3 et 4 5 - - Dev WLangage.book Page 345 Mardi, 23. avril 2013 1:59 13 346 Partie 7 : Gestion des fichiers de donnes 2.6 Gestion des fichiers "mmo" 2.6.1 Mmo texte et mmo binaire Les fichiers "mmo" peuvent tre grs en WLan- gage. Les fichiers "mmo" sont des fichiers complmen- taires aux fichiers de donnes. Ils permettent d'associer aux enregistrements du fichier de don- nes des donnes telles que des textes longs, des images et des sons. Un fichier "mmo" est dcrit et cr en mme temps que le fichier de donnes. Pour crer un fichier "mmo" : 1. Dcrivez le fichier de donnes sous l'diteur danalyses. 2. Crez une rubrique texte de type "mmo texte" pour les textes longs ou une rubrique de type "son, image, binaire" pour stocker des images ou des sons. 3. Gnrez l'analyse. En WLangage, le fichier de donnes et le fichier "mmo" voluent en parallle : les fonctions HCration et HCrationSiInexistant crent vide le fichier de donnes, le fichier d'index et le fichier "mmo" (<NomFichier>.MMO), les fonctions HAjoute et HModifie crivent dans le fichier de donnes et dans le fichier "mmo", les fonctions de lecture lisent l'enregistrement dans le fichier de donnes et dans le fichier "mmo". Attention : Les fonctions HRaye et HSupprime ont des actions diffrentes sur les fichiers "mmo" et sur les fichiers de donnes : La fonction HRaye supprime l'enregistrement dans le fichier de donnes mais pas dans le fichier mmo. En effet, HLibre ne libre pas les enregistrements rays dans les fichiers "mmo". L'utilisation de HRaye est dconseille avec les fichiers "mmo". La fonction HSupprime supprime l'enregistre- ment dans le fichier de donnes et dans le fichier "mmo". Pour supprimer un enregistrement dans un fichier "mmo", il faut utiliser la fonction HSupprime. Une fonction permet dactiver la gestion des fichiers "mmo" : HGreMmo. Cette fonction active ou dsactive la gestion des rubriques de type mmo. Il est possible de grer tous les mmos d'un fichier de donnes ou uniquement une rubrique mmo spcifique d'un fichier de donnes. Par dfaut, la gestion des mmos est active. Si un traitement sur un fichier n'utilise pas le fichier "mmo", il est intressant de dbrancher la gestion du fichier "mmo" car le traitement sera alors plus rapide. Par exemple, lors de la modification de la rubrique "ChifAff" de tous les enregistrements d'un fichier "Client", il suffit de dbrancher la gestion des mmos avant le traitement, puis de la rebrancher. Remarque : Les fichiers mmo peuvent tre cryp- ts et/ou compresss. 2.6.2 Mmos binaires image, son, OLE et autres Il existe 4 types de rubriques : mmo binaire image, son, OLE et autre. Ces types de mmos permettent de stocker des fichiers binaires (par exemple des images, des sons, des fichiers OLE, ...) dans la rubrique. Les rubriques pourront tre simplement manipu- les en WLangage pour les affecter ou pour rcup- rer leur contenu. Les fonctions permettant de manipuler les mmos binaires sont : HAttacheMmo pour affecter la rubrique. HExtraitMmo pour rcuprer le contenu de la rubrique et le sauver dans un fichier. HInfoMmo pour avoir des informations sur la rubrique. Remarque : Les rubriques mmo binaires peuvent tre manipules avec les fonctions : Son si la rubrique mmo binaire est au format WAV (WinDev uniquement). iImprimeImage si la rubrique mmo binaire est au format IMG. InfoBitmap si la rubrique mmo binaire est au format IMG. Initialisation Un mmo binaire peut contenir tout type de fichier. Un mmo binaire peut tre initialis : partir d'une autre rubrique de type mmo binaire (par simple affectation) partir d'un fichier par la fonction HAttache- Mmo ANIMAL.PHOTO=CHIEN.PHOTO HAttacheMmo(ANIMAL,... PHOTO,"CHIEN1.TIF",HMmoImg) WLangage.book Page 346 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 347 Remarques : Lorsqu'un fichier OLE est modifi au travers d'un champ OLE, pour affecter le fichier OLE dans une rubrique mmo binaire OLE, il faut : sauver l'objet OLE avec la fonction OLESauve, affecter la rubrique avec la fonction HAttache- Mmo. Lorsqu'un champ image est modifi par les fonc- tions de dessin du WLangage, pour affecter l'image dans une rubrique mmo binaire image, il faut : sauver l'image avec dSauveImage, affecter la rubrique avec HAttacheMmo. EcranVersFichier / PageVersFichier n'affecte pas automatiquement le contenu d'un champ image dans la rubrique mmo binaire image qui lui est associe. Il faut ncessairement affecter la rubri- que avec la fonction HAttacheMmo. La fonction HAttacheMmo permet de donner une information : sur le type du fichier, sur le mmo lui-mme. Rcupration Un mmo binaire est rcupr avec la fonction HEx- traitMmo. Cette fonction sauve le contenu du mmo binaire dans un fichier. Remarque : La fonction FichierVersEcran / Fichier- VersPage affecte automatiquement le contenu d'un champ image avec le contenu de la rubrique mmo binaire qui lui est associe, si le contenu de la rubrique a un format d'image reconnu (BMP, PCX, JPEG, TIFF, ...). Informations sur le mmo La fonction HInfoMmo permet de rcuprer les informations sur la rubrique mmo binaire : type du mmo, nom, taille, date et heure du fichier d'origine, information libre donne lors de l'affectation du mmo par la fonction HAttacheMmo. 2.7 Rassignation des fichiers de donnes 2.7.1 Intrt Une mme description de fichier peut correspondre plusieurs fichiers physiques. Les fichiers de don- nes ont alors : soit des noms physiques diffrents, soit le mme nom mais sont stocks dans des rpertoires diffrents. Il faut alors pouvoir modifier soit le nom, soit le rpertoire des fichiers. Les fichiers de l'analyse sont dcrits dans un rper- toire en dur. En utilisation finale, le lecteur dinstal- lation des fichiers pourra tre variable selon le poste sur lequel l'application WinDev est installe ou selon le poste serveur sur lequel le site WebDev est dploy. Il faut alors pouvoir modifier le rper- toire de stockage des fichiers. La modification du nom et/ou du rpertoire est ralise en programmation. Elle doit tre effec- tue avant la cration ou l'ouverture du fichier. 2.7.2 Modification du rpertoire de stoc- kage Lors de la description du fichier de donnes sous lditeur danalyses, il a t choisi un rpertoire de stockage des fichiers de donnes et d'index : soit un rpertoire dfini en dur, soit le rpertoire de lapplication. Les fichiers de donnes peuvent tre stocks dans des rpertoires diffrents de ceux dcrits dans l'analyse. Il suffit de modifier le nom du rpertoire en programmation. Les fonctions HSubstRep ou HChangeRep permet- tent de spcifier un rpertoire diffrent du rper- toire dcrit sous lditeur danalyses. Le rpertoire dfini dans l'analyse est le rpertoire demand. Le rpertoire du fichier sur le disque est le rper- toire physique. Par exemple : WB Les rubriques mmo binaire, son et OLE existent par compatibilit avec WinDev. // Les fichiers dcrits sur // le lecteurC et // installs sur le lecteur S HSubstRep("C:\Rep1",... "S:\RpertoireDesDonnees") HCrationSiInexistant(NomFic1) WLangage.book Page 347 Mardi, 23. avril 2013 1:59 13 348 Partie 7 : Gestion des fichiers de donnes 2.7.3 Modification du nom d'un fichier de donnes Par dfaut, un fichier de donnes est cr avec le nom dfini dans l'diteur danalyses. Le fichier de donnes peut tre cr avec un autre nom. Il suffit de modifier le nom du fichier de don- nes en programmation. La fonction HChangeNom permet de donner un nom diffrent de celui qui a t dfini dans la des- cription du fichier de donnes. Le nom du fichier qui a t dfini dans l'analyse est le nom logique. Le nom du fichier (ou des fichiers) sur le disque est le nom sur disque (ce nom peut tre un nom long si le systme supporte les noms longs). Remarque : La taille du nom long d'un fichier est de 260 caractres maximum (y compris le chemin d'accs au fichier). 2.7.4 Garder la trace des rassignations A quoi sert le .REP ? Le fichier <MonProjet>.REP est un fichier contenant la liste des fichiers manipuls par l'application ou par le site (identifiant, nom logique et chemin com- plet du fichier physique). Le GUID de l'analyse est l'identifiant unique de l'analyse lie au projet, contenant la description des fichiers. Cet identifiant peut tre connu sous l'diteur d'analyses, dans la description de lana- lyse (onglet "Options"). Le GUID du fichier correspond l'identifiant du fichier logique. Cet identifiant peut tre connu sous l'diteur d'analyses, dans la description du fichier (onglet "Notes"). Ce fichier est automatiquement cr dans le rper- toire de l'application ou du site et renseign par le moteur HyperFileSQL. Le fichier ".REP" permet de localiser facilement les fichiers de donnes qui ont t utiliss par l'appli- cation WinDev ou par le site WebDev. L'application WinDev ou le site WebDev met jour automatiquement le fichier ".REP" mais ne se sert pas (ou rarement) du fichier ".REP". Ce fichier est utilis par tous les outils devant mani- puler les fichiers de l'application ou du site, et prin- cipalement par la mise jour automatique des fichiers, ... Exemple : Mise jour d'une application ou dun site avec modification de l'analyse. Lors de la mise jour d'une application WinDev ou dun site WebDev, la modification automatique des fichiers de donnes est automatiquement lance en cas de modification de la structure de la base de donnes. Cette procdure utilise le fichier ".REP" pour retrou- ver les fichiers physiques utiliss par l'application ou par le site afin de les modifier. Pour plus de dtails, consultez Modification auto- matique des fichiers de donnes, page 360. Remarque : Le .REP ne doit pas tre modifi "manuellement" sauf dans des cas trs exception- nels, par exemple sur le conseil d'un membre du Support Technique de PC SOFT. Comment est gr le .REP sous WinDev Mobile ? WinDev Mobile permet de mettre jour une liste des fichiers de donnes manipuls par l'application (quivalent au fichier .REP sous WinDev standard). Cette liste est sauvegarde dans la base de regis- tres du Pocket PC, dans la cl "\HKEY_LOCAL_MACHINE\SOFTWARE\PC SOFT\WD Mobile\18.0\<NomApplication>\DATA". Pour chaque fichier de donnes manipul par l'application en cours, les informations suivantes sont conserves : identifiant (GUID du fichier). Cet identifiant peut tre connu sous l'diteur d'analyses, dans la des- cription du fichier (onglet "Notes"). nom logique. chemin complet du fichier physique. Ces informations sont renseignes automatique- ment par le moteur HyperFileSQL Mobile. WLangage.book Page 348 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 349 Par exemple : Fonctions permettant de grer le .REP 1. Gestion du .REP 2. Cration et modification du fichier .REP Remarque : Les informations donnes par les fonc- tions HChangeRep, HSubstRep, et HChangeNom seront prises en compte lors de la cration et de la mise jour du fichier ".REP". 3. Lecture du fichier .REP Remarque : Si une application ou un site utilise plu- sieurs fichiers physiques avec le mme nom logi- que (cas habituel dun logiciel de comptabilit multi-entreprises ou encore des fichiers "archives"), le fichier ".REP" contiendra plusieurs lignes pour le mme fichier logique : chaque ligne rfrencera un fichier physique. 4. Ecriture dans le fichier Pour crire dans le fichier .REP, il suffit d'utiliser les fonctions de gestion de fichiers externes : La structure de la ligne ajoute doit suivre la norme suivante : Le GUID du fichier correspond l'identifiant du fichier logique. Cet identifiant peut tre connu sous l'diteur d'analyses, dans la description du fichier (onglet "Notes"). Structure du fichier .REP La premire ligne comprend les informations con- cernant l'analyse dans laquelle les fichiers ont t dcrits. Cette analyse correspond l'analyse du projet en cours. La structure de cette ligne est la suivante : Le GUID de l'analyse est l'identifiant unique de l'analyse lie au projet, contenant la description des fichiers. Cet identifiant peut tre connu sous l'diteur d'analyses, dans la description de lana- lyse (onglet "Options"). Les lignes suivantes dcrivent les diffrents fichiers manipuls par l'application ou par le site. Une ligne est cre par fichier physique manipul. Cette ligne comprend les informations suivantes :
HGreREP Active ou dsactive la gestion du fichier .REP. Lors de l'activation de la gestion du .REP, il est possible de donner le nom et le chemin du fichier .REP. Un fichier HFREP.INI sera alors cr dans le rpertoire de Windows. Par dfaut, la gestion du fichier ".REP" est active. HCration Cre un fichier de donnes physi- que (et renseigne le fichier .REP si la gestion du .REP est active) HCrationSiI- nexistant Cre un fichier de donnes physi- que s'il n'existe pas dj (et rensei- gne le fichier .REP si la gestion du .REP est active) HOuvre Ouvre un fichier de donnes physi- que et renseigne le fichier .REP si ncessaire (ouverture d'un fichier n'appartenant pas l'analyse par exemple) HListeREP Liste les diffrents fichiers et leur chemin physique associ prsents dans le fichier .REP fOuvre Ouvre le fichier fEcritLigne Ecrit une nouvelle ligne dans le fichier fFerme Ferme le fichier LOCALIZA- TION= GUID Fichier Tab Nom logi- que fichier Tab Chemin du fichier physique ANALYSISGUID= GUID Analyse LOCALIZATION= GUID Fichier Tab Nom logique fichier Tab Chemin du fichier physique WLangage.book Page 349 Mardi, 23. avril 2013 1:59 13 350 Partie 7 : Gestion des fichiers de donnes Le GUID du fichier correspond l'identifiant du fichier logique. Cet identifiant peut tre connu sous l'diteur d'analyses, dans la description du fichier (onglet "Notes"). Exemple de fichier .REP : 2.8 Recherche et index full-text 2.8.1 Prsentation HyperFileSQL propose une recherche des chanes de caractres trs rapide dans les donnes. Cette recherche (appele "full-text") permet de rechercher un mot ou un ensemble de mots. Il devient possible d'indexer sans programmation les textes prsents dans une base de donnes HyperFileSQL. Ces textes peuvent tre contenus dans des rubriques de type "Texte" ou de type "Mmo texte". Un index peut indexer une ou plusieurs rubriques diffrentes. La cration de l'index peut prendre en compte les textes enrichis (RTF, HTML) : les balises de ces formats seront ignores lors de l'indexation. Il est ainsi possible d'effectuer des recherches de mots stocks dans des documents RTF ou HTML. Les rsultats de l'indexation full-text sont proposs selon un ordre de pertinence ("ranking"). Attention : la recherche "Full-text" n'est pas une sim- ple recherche du type "contient" : la ponctuation n'est pas prise en compte. 2.8.2 Comment faire une recherche "full- text" ? Pour effectuer une recherche "full-text", il est ncessaire de : 1. Crer un index full-text dans le fichier de don- nes concern par cette recherche. 2. Crer une requte pour effectuer la recherche full-text. 3. Analyser et afficher le rsultat de la requte. 2.8.3 Comment crer un index full-text ? La cration d'un index full-text est ralise sous l'diteur d'analyses. Pour crer un index full-text : 1. Dans l'diteur d'analyses, affichez la description des rubriques du fichier concern (option "Descrip- tion des rubriques" du menu contextuel). 2. Cliquez sur l'icne . La fentre de dfinition de l'index full-text apparat. Slectionnez les rubri- ques intervenant dans la composition de l'index full-text. Seules les rubriques de type "Texte" et "Mmo Texte" prsentes dans la description du fichier sont proposes. Validez. 3. La rubrique de type "Index full-text" apparat dans la liste des rubriques. 4. Slectionnez la rubrique et si ncessaire modi- fiez ses caractristiques : dans la liste des rubriques, il est possible de modifier directement le nom de l'index full-text. dans la partie droite de la fentre, slectionnez les paramtres de l'index full-text : taille minimale des mots indexs, gestion des balises RTF, ges- tion des balises HTML, gestion de la casse, ges- tion de l'accentuation. 5. Validez la fentre de description des rubriques. 6. Enregistrez et gnrez l'analyse. Lors de la gn- ration de l'analyse, la description des fichiers de donnes est modifie et l'index full-text est cr (fichier d'extension ".FTX"). Remarques Pour crer directement un index full-text partir d'une rubrique texte ou mmo texte, il suffit de slectionner la rubrique dans la fentre de des- cription des rubriques et de cliquer sur le lien "Crer un index full-text sur la rubrique". WLangage.book Page 350 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 351 Il est possible de grer les index full-text dans les fichiers de donnes dcrits par programmation : il suffit d'utiliser une variable de type Description d'IndexFullText pour dcrire l'index, puis la fonc- tion HDcritIndexFullText pour valider la cration de l'index. A tout moment, il est possible de modifier la com- position d'un index full-text existant : il suffit de cliquer sur le bouton "Editer l'index" dans la par- tie gauche de la description de la rubrique sous l'diteur d'analyses. Pour crer une rubrique de type Index full-text, une gnration de l'analyse et une modification automatique des donnes sont obligatoires. 2.8.4 Comment effectuer une recherche full-text ? Les recherches full-text sont effectues grce aux requtes : requtes cres sous l'diteur de requ- tes ou requtes cres en code SQL. La condition de la recherche est saisie lors de la cration de la requte. Recherche full-text : diteur de requtes Pour crer une requte ralisant une recherche full- text, il suffit d'ajouter la requte une rubrique de type "Index full-text". Automatiquement, la fentre de description d'une recherche full-text s'affiche. Cette fentre permet d'indiquer : La valeur de recherche. Cette valeur peut tre saisie directement (un assistant permet de cons- truire la chane rechercher) ou correspondre un paramtre. Pour plus de dtails sur les carac- tristiques de la chane rechercher, consultez le paragraphe "Syntaxe de la valeur de recherche". les options de tri du rsultat. A la validation de cette fentre, la rubrique de type "full-text" est automatiquement ajoute dans les lments de la requte. Une condition a t auto- matiquement dfinie : seuls les enregistrements dont la pertinence est suprieure 0 seront affi- chs dans le rsultat de la requte. Recherche full-text : Requte en code SQL Pour crer une requte ralisant une recherche full- text en code SQL, il suffit d'utiliser la syntaxe MATCH (<Index>) AGAINST <Condition> o : <Index> correspond la liste des rubriques de l'index spares par des virgules (l'ordre des rubri- ques n'est pas important). <Condition> correspond la chane rechercher. Pour plus de dtails sur les caractristiques de la chane rechercher, consultez le paragraphe "Syn- taxe de la valeur de recherche". Exemple : Dans cet exemple, SAI_Rechercher est un champ de saisie et IdUserConnect est une variable.. Remarque : Requte avec un paramtre sur un index full-text : comment ignorer le paramtre ? Il faut que le "MATCH" de la requte ne soit pas dans le rsultat de la requte, mais dans le WHERE. En effet, si le rsultat doit inclure la perti- nence, il faut que le paramtre soit renseign pour valuer le rsultat. Pour qu'une requte cre avec l'diteur de requ- tes ait le MATCH dans le WHERE, il faut que la perti- nence ne soit pas affiche dans le rsultat. MaRequte est une chane = [ SELECT * FROM Contacts WHERE MATCH(Contacts.Nom, ... Contacts.Prenom, ... Contacts.CommentaireHTML, Contacts.CommentaireTxtBrut,... Contacts.Commentaires, .. Contacts.Telephone, ... Contacts.Bureau,... Contacts.Portable, ... Contacts.Mail,... Contacts.MSN, ... Contacts.Site_internet, ... Contacts.Pays, ... Contacts.NumFax, Contacts.Ville) AGAINST ('] MaRequte = ... MaRequte + SAI_Rechercher + [ ') AND Contacts.IDUtilisateur = ] MaRequte = MaRequte + ... IdUserConnect + [ ORDER BY Nom DESC ] HExcuteRequteSQL(REQ_RECH, ... hRequteDfaut, MaRequte) POUR TOUT REQ_RECH TableAjouteLigne(... Table_Contact_par_catgorie, REQ_RECH.idcontact,... REQ_RECH.IDCategorie, ... REQ_RECH..IdUserConnect, ... REQ_RECH.Nom, REQ_RECH.Prenom) FIN CAS ERREUR : Erreur(HErreurInfo()) WLangage.book Page 351 Mardi, 23. avril 2013 1:59 13 352 Partie 7 : Gestion des fichiers de donnes Exemple avec pertinence : Exemple avec pertinence : Syntaxe de la valeur de recherche La valeur de recherche peut contenir les lments suivants : 2.8.5 Analyser le rsultat d'une requte "full-text" Le rsultat d'une requte full-text donne pour cha- que enregistrement du fichier de donnes con- cern la pertinence de l'enregistrement par rapport la valeur de recherche. Cette pertinence dpend de plusieurs facteurs : le nombre de fois o le mot recherch est pr- sent dans l'enregistrement. le nombre de mots dans l'enregistrement et leur nombre de rptitions. le rapport entre les enregistrements qui contien- nent les mots recherchs et ceux qui ne contien- nent pas les mots recherchs. En effet, plus le mot recherch est prsent dans tous les enregis- trements, et moins la pertinence sera impor- tante. ... Le rsultat d'une requte "full-text" peut ensuite tre trait comme tout rsultat d'une requte : il est par exemple possible d'afficher le rsultat dans une table, en triant selon la pertinence, ... 2.8.6 Grer les index full-text par program- mation Le WLangage propose plusieurs fonctions WLan- gage permettant de grer les index full-text : Remarques : La cration d'un index full-text dans un fichier de donnes cr par programmation peut tre rali- se grce une variable de type Description d'IndexFullText. La fonction HRindexe permet de r-indexer les index full-text. SELECT MATCH(XX, YY, ZZ) AGAINST ... ({ParamFullText}) AS ... PertinenceFullText FROM TABLE WHERE <Paramtres> AND PertinenceFullText > 0 ORDER BY PertinenceFullText DESC SELECT * FROM TABLE WHERE <Paramtres> AND MATCH(XXX, YYY, ZZZ) AGAINST({ParamFullText }) > 0 Elment Signification Un mot tout seul Le mot indiqu sera recherch. La pertinence sera augmente si le texte contient ce mot. Exemple : "Win- Dev" recherche le mot "WinDev Deux mots spars par un espace Recherche l'un ou l'autre des mots. Exemple : "WinDev WebDev" recher- che les textes contenant soit "WinDev" soit "WebDev". Un mot pr- cd du signe "+" Le mot indiqu est obligatoire. Exemple : "+WinDev" recherche les tex- tes contenant obligatoirement "Win- Dev". Un mot pr- cd du signe "-" Le mot indiqu ne doit pas tre prsent dans le texte. Exemple : "-Index" recherche les textes ne contenant pas "Index". Un mot pr- cd du signe "~" Si le texte contient le mot indiqu, la pertinence sera diminue. Un ou plu- sieurs mots entours de guillemets Les mots indiqus sont recherchs groups et dans l'ordre. Attention : si l'option "Ignorer les mots infrieurs " est diffrente de 0, les mots entre les guillemets infrieurs la taille prcise ne seront pas recher- chs. Un mot suivi du signe "*" La recherche est une recherche du type "Commence par" le mot indiqu. HDcritIndexFullText Dcrit par programma- tion un index full-text pour un fichier de donnes cr par programmation. HListeIndexFullText Renvoie la liste des index full-text d'un fichier (d'une requte ou d'une vue) reconnus par le moteur HyperFileSQL WLangage.book Page 352 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 353 2.9 Les transactions 2.9.1 Quest ce quune transaction ? Une transaction est un ensemble d'oprations indissociables : soit toutes les oprations de la transaction sont ralises, soit aucune opration n'est ralise. La gestion des transactions est le meilleur moyen d'assurer la cohrence d'un ensem- ble d'critures indissociables sur des fichiers HyperFileSQL. Par exemple, dans une application ou un site ban- caire, une opration de virement consiste en un dbit pour un compte et en un crdit pour un second compte. Il est ncessaire de grer ces deux oprations dans une seule et mme transaction afin d'viter toute incohrence (en cas de rupture de courant en cours d'opration par exemple). 2.9.2 Savoir utiliser les transactions selon ses besoins Voici quelques conseils pour optimiser la gestion des transactions : Raliser des transactions dans des applications installes sur des postes fiables ou dans des sites installs sur des postes serveur fiables : transaction disque. Dans ce cas, les transactions sont utilises unique- ment dans le but de pouvoir annuler simplement une suite d'oprations. Il est possible d'afficher des fentres ou des pages au milieu d'une transaction, de raliser diffrents traitements relativement longs, ... Chaque opration ralise pendant la transaction est enregistre dans un fichier de transaction. L'enregistrement manipul est bloqu en criture jusqu' la validation ou l'annulation de la transac- tion. Raliser des critures fiables dans des fichiers (domaine bancaire, comptable, ...) : transaction disque. Les transactions permettent d'assurer la scurit d'un ensemble d'oprations. Dans ce cas, il est ncessaire de regrouper toutes les oprations d'criture dans votre code afin de les excuter dans une transaction. Le code excut pendant la tran- saction ne doit pas afficher de fentres ou de pages, raliser des parcours de fichiers, etc. WLangage.book Page 353 Mardi, 23. avril 2013 1:59 13 354 Partie 7 : Gestion des fichiers de donnes Ce code doit uniquement comprendre les opra- tions de modification des fichiers. Chaque opration ralise pendant la transaction est enregistre dans un fichier de transaction. L'enregistrement manipul est bloqu en criture jusqu' la validation ou l'annulation de la transac- tion. 2.9.3 Principes Principe des transactions sur des fichiers HyperFi- leSQL Chaque opration d'criture effectue lors d'une transaction est mmorise dans un fichier des transactions. A tout moment, il est possible d'annu- ler la transaction : toutes les oprations effectues depuis le dbut de la transaction seront annules. Lorsque les oprations d'criture incluses dans la transaction sont termines, le programme peut valider les oprations de la transaction. Cas particuliers Erreur du programme, la transaction est automa- tiquement abandonne. Appel de la fonction FinProgramme, la transac- tion est automatiquement abandonne. Annulation d'un test depuis l'diteur, la transac- tion est automatiquement abandonne. Panne de courant ou arrt brusque de l'applica- tion ou du serveur Web (par le gestionnaire de tches par exemple). Lorsque l'application ou le serveur Web est relanc, la cohrence de la base de donnes peut tre rtablie : par l'outil WDTRANS, au premier appel la fonction HTransactionD- but, par la fonction HTransactionAnnule. Pour plus de dtails sur les diffrents modes de rtablissement de la cohrence des donnes, consultez le paragraphe Gestion des cas parti- culiers, page 355. 2.9.4 Manipuler les transactions par pro- grammation Mettre en place la gestion des transactions 1. Si vos fichiers sont protgs par mot de passe, ouvrez tous les fichiers utiliss pendant la transac- tion avant le dbut de la transaction. Si vos fichiers ne sont pas protgs par mot de passe, les fichiers manipuls aprs la fonction HTransactionDbut seront automatiquement mis en transaction. 2. Commencez la transaction avec la fonction HTransactionDbut. Cette fonction permet ven- tuellement de dfinir le nom du journal des tran- sactions. 3. Effectuez vos oprations. Toutes les oprations d'criture sur les fichiers en transaction sont auto- matiquement enregistres dans le fichier de tran- saction. Attention : les traitements raliss sont relativement plus lents (puisque chaque opration est enregistre dans un fichier spcifique). 4. Annulez si ncessaire les oprations ralises pendant la transaction (fonction HTransactionAn- nule). 5. Spcifiez la fin de la transaction avec la fonction HTransactionFin. La transaction est valide. Tableau rcapitulatif des fonctions WLangage utili- ses (pour une base de donnes HyperFileSQL) HGreTransaction Active ou non la gestion des transactions (la gestion des transac- tions est active par dfaut) HTransactionDbut Dbute la transaction HTransactionFin Valide la transaction HTransactionAnnule Annule la transaction en cours HTransactionAnnule HTransactionDbut HTransactionFin Outil WDTRANS Annule une transaction qui a chou (panne de courant) HTransactionInter- rompue Permet de savoir si une transaction a t interrom- pue (la transaction n'a t ni valide, ni annule). Cas dune panne de cou- rant. HTransactionLibre Si un enregistrement du fichier de donnes spci- fi est considr comme tant en transaction mais n'appartient aucune transaction en cours, il est automatiquement libr WLangage.book Page 354 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 355 Manipuler les enregistrements lors d'une transaction : les rgles suivre Les enregistrements modifis pendant la tran- saction peuvent tre lus avant ou aprs le dbut de la transaction : ils seront toujours pris en compte dans le journal des transactions. La gestion des transactions n'exclut pas la ges- tion des blocages des enregistrements en tran- saction. En effet, les enregistrements manipuls pendant la transaction sont automatiquement bloqus en criture. Dans une application WinDev en rseau, si l'utili- sateur tente de modifier un enregistrement en transaction, un message apparatra lui deman- dant de retenter l'opration. Il est donc ncessaire que la transaction soit la plus courte possible, pour viter tout blocage des utilisateurs. Erreurs spcifiques la gestion des transactions 70031 : Opration non autorise en transaction Vous utilisez une fonction non autorise pendant une transaction. Par exemple, la fonction HTran- sactionDbut est utilise en cours de transac- tion. 70034 : La dernire transaction a chou Vous tentez d'utiliser un enregistrement apparte- nant une transaction qui a chou (panne de courant, ...). Le programme est relanc sans avoir annul la transaction. Dans ce cas, il est con- seill d'annuler la transaction qui a chou (voir ci-dessous). 2.9.5 Gestion des cas particuliers Panne de courant Si une panne (coupure de courant, re-dmarrage du poste, ...) survient pendant une transaction, les fichiers de donnes risquent d'tre incohrents : la transaction n'a t ni valide, ni abandonne. Le fichier de transaction est toujours prsent sur le poste. Dans ce cas, la cohrence de la base de donnes sera restaure : soit au premier appel la fonction HTransaction- Dbut, soit avec la fonction HTransactionAnnule, soit avec l'outil redistribuable WDTrans. Attention : La restauration de la cohrence de la base peut tre relativement longue. Remarque : Pour savoir si la restauration de la cohrence de la base est ncessaire, testez le rsultat de la fonction HTransactionInterrompue dans le code d'initialisation du projet (par exemple). Conseil : rtablir la cohrence de la base de donnes Pour rtablir la cohrence de la base de donnes, les oprations conseilles sont les suivantes : 1. Testez le rsultat de la fonction HTransactionIn- terrompue dans le code d'initialisation du projet par exemple. 2. Si la transaction a t interrompue, effectuez une des oprations suivantes pour rtablir la coh- rence de la base de donnes : appel de la fonction HTransactionAnnule, appel des fonctions HTransactionDbut/HTran- sactionFin, lancement de l'outil WDTRANS. Exemple : Autre solution : il est galement possible de grer l'erreur 70034 dans le code d'initialisation du pro- jet grce au mot-cl QUAND EXCEPTION. Ainsi, quand l'erreur 70034 surviendra, la cohrence de la base de donnes sera restaure soit par la fonc- tion HTransactionAnnule, soit par les fonctions HTransactionDbut/HTransactionFin. Remarque : Aprs une coupure de courant, il est conseill de rindexer les fichiers de donnes de l'application. Erreur lors de l'utilisation du programme Lorsque l'excution de l'application ou du site est arrte cause d'une erreur programme (division par zro par exemple), la transaction en cours est automatiquement annule. SI HTransactionInterrompue() ALORS SI Confirmer("La transaction "+... "effectue par le poste "+... h.trsPoste +... " a t interrompue. "+... "Voulez-vous rtablir la "+... "cohrence des fichiers ?") ALORS // Annule les transactions // interrompues SI HTransactionAnnule()= Faux ALORS Info("Impossible ... d'annuler "+"la transaction") FIN FIN FIN WLangage.book Page 355 Mardi, 23. avril 2013 1:59 13 356 Partie 7 : Gestion des fichiers de donnes Suppression du journal de transaction Le journal de transaction est un fichier HyperFi- leSQL cr et prsent uniquement le temps de la transaction. Il ne faut pas supprimer ce fichier sous peine d'incohrence de la base de donnes. 2.9.6 Gestion avance Transaction : Les fichiers crs Lors de la mise en place des transactions, deux types de fichiers HyperFileSQL sont crs : Le journal des oprations en transaction : Fichier temporaire au format HyperFileSQL contenant les diffrentes oprations ralises sur les fichiers de l'application ou du site pris en compte par la transaction. Ce fichier est cr par la fonction HTransactionDbut. Par dfaut, son nom est <Nom Projet>_$TRS_OPERATION. Ce nom est modifiable avec la fonction HTransactionDbut. Le journal des valeurs : Fichier temporaire asso- ci chaque fichier de donnes pris en compte par la transaction. Ce fichier a pour nom <Nom Fichier>_$$_TRSVAL.Fic. Ce fichier contient pour chaque opration ralise dans la transaction : soit le contenu de l'enregistrement avant l'op- ration (lors d'une suppression par exemple), soit le contenu de l'enregistrement aprs l'op- ration (lors d'un ajout par exemple). Identifiant du poste ralisant la transaction Par dfaut, le poste est identifi par un numro uni- que interne et par le nom du poste (nom dfini sous Windows). Pour identifier simplement le poste effectuant les oprations en transactions, la fonction HPoste per- met de dfinir un identifiant spcifique au poste. Cet identifiant remplace le nom du poste. Cet iden- tifiant est enregistr dans le journal des oprations en transaction et peut tre consult avec WDTRANS. Par dfaut, le poste ralisant la transaction corres- pond au serveur Web. Ce poste est identifi par un numro unique interne et par le nom du poste (nom dfini sous Windows). Pour identifier simplement le poste de linternaute effectuant les oprations en transactions, la fonc- tion HPoste permet de dfinir un identifiant spcifi- que au poste de linternaute. Pour dfinir un identifiant unique par internaute, utilisez la fonc- tion NavigateurAdresseIP. Cet identifiant est enre- gistr dans le journal des oprations en transaction et peut tre consult avec WDTRANS. 2.10 Les journaux 2.10.1 Gnralits La "journalisation" des fichiers de l'analyse est une fonctionnalit intressante. Qu'est-ce qu'un journal ? Le journal est un fichier particulier dans lequel Win- Dev / WebDev mmorise automatiquement toutes les oprations ralises sur un ou plusieurs fichiers de donnes depuis un moment donn (cration du fichier, dernire modification automatique des don- nes, dernire sauvegarde ralise avec WDJour- nal, ...). Le journal contient l'historique de l'utilisation du fichier, c'est--dire : l'enregistrement complet avant manipulation ou modification par l'utilisateur ou par linternaute, l'enregistrement complet aprs manipulation ou modification par l'utilisateur ou par linternaute, l'auteur de la manipulation ou de la modification, la date de la manipulation ou de la modification, la nature de l'opration effectue : ajout, modifi- cation, suppression, lecture. A quoi sert un journal ? Le journal peut tre manipul avec l'utilitaire WDJournal. Il est possible de raliser les oprations suivantes partir d'un journal : Restaurer le contenu d'un fichier de donnes journal en cas de perte ou de destruction du fichier de donnes. Restaurer le contenu d'un fichier de donnes journal jusqu' une certaine date. Retrouver l'auteur, la date et l'heure d'une opra- tion ralise sur un enregistrement spcifique. Conserver un historique de l'utilisation d'un fichier (pour raliser des statistiques par exem- ple). Exemples : La dernire sauvegarde date du mois dernier. Vous avez fait une erreur de manipulation. Grce au journal, vous pouvez rcuprer toutes vos don- nes, sans perdre celles du dernier mois de travail ! Un utilisateur a saisi pendant toute une matine WLangage.book Page 356 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 357 les bons de commande de la semaine dernire au lieu de saisir ceux de la semaine en cours. Afin de perdre le moins de donnes possible, il est prfrable de remettre tous les fichiers de l'analyse dans l'tat o ils se trouvaient la veille au soir. L'opration est simple. La personne charge de la maintenance restituera les fichiers de don- nes prcdemment sauvegards grce WDJournal. Grce au contenu du journal, WDJournal pourra reconstituer les fichiers, opra- tion par opration, depuis la dernire sauvegarde jusqu'au moment choisi. Les types de journaux Les options suivantes permettent de journaler vos fichiers de donnes. Selon l'option slectionne, diffrents fichiers seront automatiquement crs.
Option Action ralise Fichiers crs automati- quement Aucun journal (option par dfaut) Aucun Journal des critures Toutes les oprations d'ajout, de modifi- cation et de suppression seront enregis- tres dans le journal. Quand choisir cette option ? Pour connatre tout moment qui a modi- fi le fichier et quelle est la modification effectue. <Nom du fichier>.JNL.fic Historique des accs au fichier Seuls les ordres HyperFileSQL utiliss pour accder au fichier seront mmori- ss. Quand choisir cette option ? Pour connatre tout moment les opra- tions qui ont t effectues sur le fichier. Attention : il est impossible de connatre la valeur de l'enregistrement avant et aprs modification. JournalOpration.fic JournalIdentification.fic Journal des critures + Histo- rique des accs Toutes les oprations d'ajout, de modifi- cation et de suppression seront enregis- tres dans le journal. Les ordres HyperFileSQL utiliss pour accder au fichier seront galement mmoriss. Quand choisir cette option ? Pour connatre tout moment : - qui a modifi le fichier, - quelle est la modification effectue, - quelles sont les oprations effectues sur le fichier. <Nom du fichier>.JNL.fic JournalOpration.fic JournalIdentification. fic WLangage.book Page 357 Mardi, 23. avril 2013 1:59 13 358 Partie 7 : Gestion des fichiers de donnes 2.10.2 Mettre en place la journalisation Dfinir la journalisation au niveau des fichiers de donnes La mise en place de la journalisation sur les fichiers de donnes HyperFileSQL est ralise sous l'diteur d'analyses. Pour mettre en place la journalisation sur un fichier dcrit dans l'analyse : 1. Ralisez une sauvegarde des fichiers de don- nes dans leur tat actuel avec l'utilitaire WDJour- nal. 2. Sous l'diteur d'analyses, affichez la description du fichier voulu (option "Description du fichier de donnes" du menu contextuel). 3. Dans l'onglet "Divers", slectionnez le type de journal grer pour ce fichier. 4. Selon l'option slectionne, prcisez si nces- saire le rpertoire des diffrents fichiers crs par la journalisation. Attention : les fichiers JournalIdentification et Jour- nalOpration sont toujours prsents dans le mme rpertoire. Par dfaut, ces fichiers sont crs dans le rpertoire de l'application ou du site. Ce rper- toire est dfini dans les options de l'analyse (option "Description de lanalyse" du menu contextuel du graphe de lanalyse, onglet "Journaux") et peut tre modifi au niveau de chaque fichier. Conseil : Les fichiers journaux permettent d'enre- gistrer les oprations effectues sur un fichier pour les rejouer sur une sauvegarde en cas de problme (disque inutilisable par exemple). Il est conseill de sauvegarder les fichiers journaux dans des rper- toires (et mme des disques) diffrents de ceux uti- liss pour les fichiers de donnes. Dfinir la journalisation au niveau des rubriques Par dfaut, toutes les rubriques d'un fichier jour- nal sont automatiquement journales. Cepen- dant, il est possible de dfinir si certaines rubriques doivent tre journales ou non. Par exemple, si un des fichiers de donnes utilise une rubrique mmo pour stocker une image (infor- mation peu importante et peu sujette modifica- tion), il est possible de ne pas journaler cette rubrique. Pour ne pas journaler une rubrique : 1. Affichez la description du fichier de donnes (option "Description des rubriques" du menu con- textuel). 2. Slectionnez la rubrique voulue. 3. Dans l'onglet "Avanc", dcochez l'option "Jour- naler la rubrique". Gnrer l'analyse Lorsque la journalisation a t dfinie dans l'di- teur d'analyses, l'analyse peut tre gnre. Attention : Avant d'effectuer cette opration, il est conseill de sauvegarder les fichiers de donnes avec l'outil WDJournal. Modification automatique des don- nes et journalisation Lorsquune modification automatique des fichiers de donnes est effectue sur des fichiers journals : 1. Les fichiers journaux sont automatiquement sauvegards. 2. Les fichiers journaux sont purgs. 2.10.3 Fichiers crs lors de la mise en place de la journalisation Lorsqu'un fichier de l'analyse a t dcrit avec une option de journalisation, les fichiers suivants peu- vent tre crs : Pour plus de dtails sur la structure de ces fichiers, consultez laide en ligne. Pour paramtrer l'emplacement de ces fichiers et leur mot de passe : Fichier JournalOpration et JournalIdentification : Par dfaut, ces fichiers sont crs dans le rpertoire de l'application ou du site. Pour modifier ce rpertoire : 1. Affichez la description de l'analyse (option "Description de l'analyse" du menu contextuel). 2. Affichez l'onglet "Journal". 3. Slectionnez le rpertoire du fichier et son mot de passe si ncessaire. Remarque : Ce rpertoire peut galement tre modifi pour chaque fichier journal (option "Des- cription du fichier de donnes", onglet "Divers"). JournalOpra- tion.Fic Ensemble des oprations rali- ses sur les fichiers de donnes HyperFileSQL journals utiliss par lapplication ou par le site. Une opration correspond une fonction HyperFileSQL. JournalIdentifica- tion.Fic Liste des emplacements physi- ques de tous les fichiers journa- ls de lapplication ou du site. *JNL.Fic Fichier cr pour chaque fichier journal. Contient les sauvegar- des des enregistrements pour toutes les oprations ralises par l'utilisateur. WLangage.book Page 358 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 359 Dans ce cas, les fichiers JournalOpration et JournalIdentification seront crs pour chaque fichier l'emplacement spcifi. Fichier *JNL : Par dfaut, ce fichier est cr dans le rpertoire de l'application ou du site. Pour modifier ce rpertoire : 1. Affichez la description du fichier (option "Des- cription du fichier de donnes" du menu contex- tuel). 2. Affichez l'onglet "Divers". 3. Slectionnez le rpertoire du fichier. Remarque : Le mot de passe du fichier *JNL.fic sera identique au mot de passe du fichier de don- nes. 2.10.4 WDJournal : Utilitaire de gestion des journaux L'utilitaire WDJournal permet de : Sauvegarder et restaurer vos fichiers de don- nes. Vrifier la cohrence d'un journal et le purger si ncessaire. Restaurer un fichier de donnes partir de son journal. Rechercher qui a modifi un enregistrement, quelle date, ... Cet utilitaire est redistribuable. Pour plus de dtails, consultez laide en ligne. 2.10.5 Manipuler les journaux par program- mation La gestion des journaux est automatique. Cepen- dant, plusieurs fonctions du WLangage permettent de manipuler des journaux : Des proprits WLangage permettent galement de grer les fichiers journals : HChangeRepJnl Modifie dynamiquement l'emplacement des fichiers du journal correspondant un fichier HyperFileSQL (fichier *JNL et fichiers JournalOpra- tion et JournalIdentification). HGreJournal Permet d'activer ou non la ges- tion des journaux. Cette gestion est active par dfaut. HJournalInfo Ajoute des commentaires dans le journal lors de l'enregistre- ment de l'opration journale. Ces commentaires pourront tre visualiss dans WDJournal. HJournalRecre Recre un journal vide. Cette fonction permet par exemple de remettre le journal 0 aprs une sauvegarde ou une rplica- tion. Le contenu des fichiers existants est perdu. HJournalRed- marre Redmarre la journalisation du fichier. Cette journalisation a t arrte grce la fonction HJournalStop. HJournalStop Arrte la journalisation du fichier. Les manipulations effec- tues dans le fichier journal ne sont plus enregistres. HRgnreFi- chier Rgnre un fichier partir de son journal. FichierJournal Permet de savoir si un fichier de donnes est un fichier journal ou non. Journalisation Permet de connatre le mode de journalisation utilis pour un fichier de donnes (fichier dfini sous l'diteur d'analyses ou dfini dynamiquement). RpertoireJour- nal Permet de grer le rpertoire du fichier journal dcrit dans l'ana- lyse. Il est ainsi possible de : Connatre le rpertoire du jour- nal pour un fichier dfini sous l'diteur d'analyses ou dfini dynamiquement. Dfinir le rpertoire du journal pour un fichier dfini dynami- quement. WLangage.book Page 359 Mardi, 23. avril 2013 1:59 13 360 Partie 7 : Gestion des fichiers de donnes 2.11 Modification automatique des fichiers de donnes 2.11.1 Principe La modification automatique des fichiers de don- nes permet de mettre jour la description des fichiers de donnes prsents sur les postes utilisa- teurs ou sur les serveurs de donnes. En effet, si la structure d'un ou de plusieurs fichiers a volu sur le poste de dveloppement (ajout ou suppression de rubriques, modifications de rubri- ques, ...), ces modifications doivent obligatoirement tre reportes sur les postes utilisateurs ou sur les serveurs de donnes lors de la mise jour de l'application ou du site. Si la mise jour de l'application ou du site est effectue sans modification automatique des don- nes, l'application ou le site risque de : ne plus fonctionner correctement, gnrer des erreurs de programmation. Attention : Dans le cas d'une mise jour rseau avec modification automatique des fichiers de don- nes, l'installation de la mise jour de l'application sur les postes utilisateurs doit tre obligatoire (Win- Dev uniquement). 2.11.2 Dans quels cas la modification auto- matique des donnes est-elle ncessaire ? La modification automatique des donnes est ncessaire dans les cas suivants :
Remarque : Dans le cas d'une installation rseau, la modification automatique des donnes modifie la fois les fichiers de donnes prsents sur le poste serveur et ceux prsents sur les postes utilisateurs (WinDev uniquement). Poste de dveloppement Postes des utilisateurs / Serveur de donnes Cas 1 : Modifications de la structure des fichiers de don- nes au format HyperFileSQL 7 L'application / le site utilise des fichiers de donnes au for- mat HyperFileSQL 7. La structure des fichiers de donnes a t modifie (ajout ou suppression de rubriques, ...). L'application / le site utilise des fichiers de donnes au format HyperFileSQL 7. Ces modifications doivent obligatoirement tre rpercutes lors de la mise jour de l'application ou du site. La structure des fichiers sera ainsi identique celle du poste de dveloppement. Cas 2 : Migration des fichiers de don- nes Hyper File 5.5 (WinDev 5.5 ou WebDev 1.5) vers HyperFi- leSQL Classic L'application / le site utilise des fichiers de donnes au for- mat HyperFileSQL Classic. L'application / le site utilise des fichiers de donnes au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5). La migration des fichiers de Hyper File 5.5 vers HyperFileSQL Classic doit obligatoirement tre effec- tue lors de la mise jour de l'application ou du site. La structure des fichiers sera ainsi identique celle du poste de dveloppement. Cas 3 : Modifications de la structure des fichiers de don- nes au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5) L'application / le site utilise des fichiers de donnes au for- mat Hyper File 5.5 (WinDev 5.5 / WebDev 1.5). La structure des fichiers de donnes a t modifie (ajout ou suppression de rubriques, ...).. L'application / le site utilise des fichiers de donnes au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5.) Ces modifications doivent obligatoirement tre rpercutes lors de la mise jour de l'application ou du site. La structure des fichiers sera ainsi identique celle du poste de dveloppement. WLangage.book Page 360 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 361 2.11.3 Raliser la modification automatique des donnes Poste de dveloppement La modification automatique des fichiers de don- nes est systmatiquement ralise lors de la gnration de l'analyse sur le poste de dveloppe- ment. Pour reporter la modification automatique sur les fichiers de donnes prsents sur les postes des uti- lisateurs ou sur les serveurs de donnes, il suffit d'effectuer la modification automatique lors de l'installation de la mise jour de l'application ou du site. Le paramtrage de cette modification automa- tique peut tre effectu lors de la cration du pro- gramme dinstallation. Poste de dploiement Lors de l'installation d'une mise jour avec modifi- cation automatique des fichiers de donnes, l'utili- sateur ou le responsable du site pourra configurer la modification automatique en cliquant sur le bou- ton "Avanc". Ce bouton est prsent sur le premier plan du programme d'installation. Une fentre s'affiche permettant de : Crer un fichier de compte rendu des oprations effectues lors de la modification automatique des donnes. En cas de problme, ce fichier pourra tre transmis au responsable de l'applica- tion ou du site. Par dfaut, ce fichier est nomm "LOGMO- DAUTO.TXT" et est cr dans le rpertoire d'instal- lation de l'application ou du site. Lister les fichiers de donnes au format HyperFi- leSQL Classic sur lesquels la modification auto- matique va tre effectue. Il sera alors possible d'ajouter cette liste : des fichiers de donnes supplmentaires, des rpertoires supplmentaires contenant des fichiers de donnes. Spcifier des rpertoires supplmentaires conte- nant des fichiers de donnes au format Hyper File 5.5 qui ne sont pas trouvs automatique- ment lors de la mise jour. Remarques : Lors de la mise jour, les fichiers de donnes automatiquement trouvs sont : les fichiers prsents dans le rpertoire d'instal- lation de l'application ou du site, les fichiers lists dans le fichier ".REP". Pour plus de dtails sur le fichier ".REP", consul- tez Rassignation des fichiers de donnes, page 347. Pour empcher l'utilisateur d'accder aux options de configuration de la modification automatique, l'diteur d'installation WDINST permet de rendre invisible le bouton "Avanc" du programme d'ins- tallation (WinDev uniquement). Forcer la modification automatique des fichiers Sur le poste de dveloppement comme sur le poste de dploiement, il est possible tout moment de lancer une modification automatique des fichiers de donnes. En effet, dans certains cas, la modification automa- tique des donnes peut ne pas tre ralise correctement : fichiers de donnes prsents sur un ordinateur portable non connect au rseau au moment de la mise jour, mise jour dfectueuse, ... Il est alors ncessaire de forcer la modification automatique des donnes pour pou- voir utiliser l'application ou le site. L'outil WDMod- Fic permet de forcer la modification automatique des fichiers de donnes. 2.11.4 Notes Excuter plusieurs fois la modification automati- que des fichiers de donnes Si la modification automatique est effectue sur des donnes dj jour, cette modification n'aura aucune incidence sur l'application ou sur le site. Configuration par dfaut du programme d'installa- tion Si l'application ou le site est associ une analyse, par dfaut, le programme d'installation propose d'effectuer la modification automatique des fichiers de donnes. L'utilisateur ou le responsable du site peut accder aux options de configuration de la modification automatique en cliquant sur le bouton "Avanc". Sauvegarde des fichiers de donnes Avant d'excuter la modification automatique, les fichiers de donnes de l'application ou du site sont automatiquement sauvegards. Les rpertoires de sauvegarde sont nomms : "Sauvegarde Modif Auto (<DateModifAuto> <Heu- reModifAuto>)" s'il s'agit d'une modification auto- matique des fichiers de donnes sans migration "Fichiers avant conversion (<DateModifAuto> <HeureModifAuto>)" s'il s'agit d'une migration des fichiers de donnes de Hyper File 5.5 vers Hyper- FileSQL 7. WLangage.book Page 361 Mardi, 23. avril 2013 1:59 13 362 Partie 7 : Gestion des fichiers de donnes 2.12 Cration de fichiers dynamiques (ou temporaires) En WLangage, il est possible de dcrire des fichiers HyperFileSQL temporaires par programmation. Pour dcrire des fichiers temporaires, il faut : 1. Dclarer des variables de type "Description de fichier", "Description de rubrique" et "Description de liaison" (si ncessaire). Ces types sont dtaills partir de la page 56. 2. Pour chaque fichier : dcrire les caractristiques du fichier grce aux proprits HyperFileSQL, dcrire les caractristiques des rubriques grce aux proprits HyperFileSQL, valider la description de chaque rubrique (fonc- tion HDcritRubrique), valider la description du fichier (fonction HDcrit- Fichier). 3. Dcrire si ncessaire les caractristiques des liaisons grce aux proprits HyperFileSQL. 4. Valider si ncessaire la description de chaque liaison (fonction HDcritLiaison). Pour dcrire un fichier temporaire, une analyse HyperFileSQL doit tre associe au projet en cours. Notes : Un fichier dynamique peut tre reli une fen- tre, une page, un tat ou un champ grce aux proprits du WLangage. Les fichiers dynamiques peuvent tre modifis par la modification automatique des fichiers. Un fichier dynamique peut tre rindex par WDOutil ou par HRindexe. Les fonctions de description de fichier tempo- raire ne peuvent pas tre utilises en langage externe. Elles ne permettent pas de modifier un fichier dcrit sous l'diteur d'analyses de WinDev / WebDev (fichier non temporaire) Des fonctions spcifiques xBase permettent de crer des fichiers temporaires xBase. 2.13 Rcupration de la structure des fichiers HyperFileSQL d'une analyse Il est possible de rcuprer la structure des fichiers d'une analyse. Cela permet par exemple de crer un outil comme le visualisateur de fichiers WDMAP. Les fonctions permettant de rcuprer la structure des fichiers sont les suivantes (elles ne peuvent pas tre utilises sur des fichiers xBase). Remarques : La fonction HOuvreAnalyse accepte en param- tre un mot de passe optionnel si un mot de passe a t dfini lors de la description de l'analyse (mot de passe WDMAP). Ce mot de passe permet de protger l'accs l'analyse par programme. Pour utiliser les fonctions HListeFichier, HListe- Rubrique et HListeCl, il n'est pas ncessaire d'ouvrir l'analyse avec HOuvreAnalyse. Pour rcuprer la structure des fichiers de don- nes d'une analyse, si l'analyse est associe au projet, il n'est pas ncessaire d'ouvrir lanalyse avec HOuvreAnalyse. Il faut que le fichier de des- cription de l'analyse (WDD) soit install dans la bibliothque du projet (WDL) ou dans le rper- toire de l'analyse. HFermeAnalyse Ferme une analyse ouverte par HOuvreAnalyse HListeAnalyse Retourne le nom des analyses et le lecteur sur lequel elles sont installes HListeCl Retourne les informations sur les cls d'une analyse HListeFichier Retourne le nom des fichiers d'une analyse HListeRubrique Retourne la structure (rubri- ques) d'un fichier HOuvreAnalyse Ouvre une analyse pour acc- der ses fichiers de donnes HRcupreRubri- que Retourne le contenu de la rubrique spcifie pour l'enre- gistrement en cours HVersRubrique Ecrit le contenu de la rubrique spcifie pour l'enregistre- ment en cours WLangage.book Page 362 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 363 2.14 Acclrer les traitements et optimiser une application / un site Plusieurs mcanismes de gestion sont branchs par dfaut lors de la cration dune application WinDev ou dun site WebDev. Pour optimiser les temps de rponses de vos appli- cations ou de vos sites, nous vous conseillons de "dbrancher" les gestions inutilises. Les diffren- tes gestions branches par dfaut sont : les transactions, le journal, les mmos, le .REP, la rplication, les triggers, le RPC. Pour chacune de ces gestions, voici un bref rappel de la fonctionnalit concerne et comment la dbrancher par programmation. Attention : Toutes ces fonctionnalits doivent tre dbranches dans le code dinitialisation du projet. 2.14.1 Gestion des transactions La gestion des transactions permet de conserver lintgrit et la cohrence dune base de donnes, quelle que soit lopration effectue sur la base de donnes. Pour plus de dtails, consultez le paragra- phe Les transactions, page 353. Si aucun fichier nest en transaction, la gestion des transactions est inutile. Elle peut tre dbranche grce la fonction HGreTransaction. 2.14.2 Gestion du journal Le journal est un fichier particulier o sont mmori- ses toutes les critures effectues sur un fichier de donnes depuis la dernire sauvegarde. Son fonctionnement est dcrit dans le paragraphe Les journaux, page 356. Si aucun fichier nest journal, la fonction HGre- Journal permet de dbrancher la gestion des jour- naux. 2.14.3 Gestion des mmos La gestion des mmos est ncessaire lorsque les fichiers contiennent des rubriques de type mmo. Leur gestion est dcrite dans le paragraphe Ges- tion des fichiers "mmo", page 346. Si aucun fichier ne comporte de rubriques mmos, il est possible de dbrancher leur gestion avec la fonction HGreMmo. 2.14.4 Gestion du ".REP" Le ".REP" contient le nom et le rpertoire physique des fichiers de donnes HyperFileSQL dune appli- cation ou dun site. Pour plus de dtails sur son uti- lisation, consultez le paragraphe Rassignation des fichiers de donnes, page 347. Si votre application ou votre site ne ncessite pas la gestion du ".REP", il est possible de dbrancher sa gestion avec la fonction HGreREP. 2.14.5 Gestion de la rplication La rplication des donnes permet de maintenir jour des fichiers de donnes prsents sur diff- rents postes. Son utilisation est dtaille dans le paragraphe La rplication de donnes, page 387. Si votre application ou votre site nutilise pas la rplication, il est possible de dbrancher sa gestion avec la fonction HGreRplication. 2.14.6 La gestion des triggers Un trigger correspond lassociation dune proc- dure et dune action de modification ralise sur un enregistrement dun ou de plusieurs fichiers. Son utilisation est dtaille dans le paragraphe Les triggers HyperFileSQL, page 385. Si aucun trigger nest utilis dans lapplication ou dans le site, la gestion des triggers peut tre dsac- tive grce la fonction HGreTrigger. 2.14.7 La gestion du RPC Le RPC permet de consulter une base de donnes HyperFileSQL via Internet / Intranet ou RTC (Rseau Tlphonique Commut). La gestion du RPC est dtaille dans laide en ligne. Si votre application ou votre site ne gre pas laccs distant, il est conseill de dbrancher sa gestion avec la fonction HGreAccsDistant. WLangage.book Page 363 Mardi, 23. avril 2013 1:59 13 364 Partie 7 : Gestion des fichiers de donnes 2.15 Driver ODBC sur HyperFileSQL 2.15.1 Prsentation Le driver ODBC sur HyperFileSQL permet d'accder une base de donnes Hyper depuis un logiciel de base de donnes externe grant les accs par ODBC. Les donnes HyperFileSQL sont alors accessibles en lecture et en criture. Installation Lors de l'installation de WinDev / WebDev sur le poste de dveloppement, il est possible d'installer le driver ODBC sur HyperFileSQL. De mme, lors de la configuration du programme d'installation de vos applications ou de vos sites, vous pouvez inclure l'installation du driver ODBC sur HyperFileSQL. 2.15.2 Configuration Pour utiliser le driver ODBC sur HyperFileSQL : 1. Lancez l'administrateur de donnes ODBC (ODBCAD32.EXE) sur votre poste ou sur le poste serveur. Utilisez par exemple l'option "Dmarrer .. Excuter" de Windows et saisissez "ODBCAD32.EXE". 2. Slectionnez l'onglet "Base de donnes utilisa- teur". 3. Cliquez sur le bouton "Ajouter". 4. Slectionnez le driver "HyperFileSQL". 5. Cliquez sur le bouton "Terminer". 6. Saisissez le nom de la source de donnes Hyper- FileSQL. Ce nom permettra d'identifier la base de donnes HyperFileSQL dans les programmes exter- nes. 7. Cliquez sur le bouton "Dtail". 8. Slectionnez le fichier WDD correspondant l'analyse (bouton "Parcourir"). 9. Dans la liste des analyses, slectionnez l'ana- lyse voulue puis slectionnez le rpertoire des fichiers de donnes correspondant (bouton "Par- courir"). Tous les fichiers de donnes HyperFileSQL correspondant l'analyse slectionne sont regrou- ps dans ce rpertoire. Attention : il est ncessaire de slectionner un rpertoire de fichier par analyse. 10. Validez (bouton "OK"). La base de donnes est utilisable en lecture et en criture depuis des programmes externes via le dri- ver ODBC sur HyperFileSQL. Pour plus de dtails sur le driver ODBC sur HyperFi- leSQL Classic, consultez laide en ligne. 2.16 ODBC sur HyperFileSQL via J++ et JDBC 2.16.1 Prsentation Le driver ODBC sur HyperFileSQL permet d'accder une base de donnes HyperFileSQL depuis un logiciel de base de donnes externe, grant les accs par ODBC. Il est ainsi possible d'utiliser le dri- ver ODBC sur HyperFileSQL 7 via J++ et JDBC. Il est ncessaire d'utiliser : le driver JDBC de Microsoft ou de Sun Visual J++ ou le JDK de Sun. Attention : Pour utiliser les driver ODBC sur Hyper- FileSQL via J++ et JDBC, les limitations sont les suivantes : Afin d'viter que d'autres programmes ne modifient intempestivement vos donnes HyperFileSQL, le pilote est en lecture seulement. Le driver ODBC sur HyperFileSQL est un driver ODBC de niveau 2. Pour plus d'informations, consultez un manuel spcia- lis sur ODBC. 2.16.2 Installation Lors de l'installation de WinDev ou WebDev sur le poste de dveloppement, il est possible d'installer le driver ODBC sur HyperFileSQL. De mme, lors de la configuration du programme d'installation de vos applications WinDev, vous pou- vez inclure l'installation du driver ODBC sur HyperFi- leSQL. 2.16.3 Configuration Pour utiliser le driver ODBC sur HyperFileSQL, confi- gurez le driver ODBC : 1. Lancez l'administrateur de donnes ODBC (ODBCAD32.EXE) sur votre poste. Utilisez par exem- ple l'option "Dmarrer .. Excuter" de Windows et saisissez "ODBCAD32.EXE". 2. Slectionnez l'onglet "Base de donnes Utilisa- teur". 3. Cliquez sur le bouton "Ajouter". 4. Slectionnez le driver "HyperFileSQL". 5. Cliquez sur le bouton "Terminer". WLangage.book Page 364 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 365 6. Saisissez le nom de la source de donnes Hyper- FileSQL. Ce nom permettra d'identifier la base de donnes HyperFileSQL dans les programmes exter- nes. 7. Cliquez sur le bouton "Dtail". 8. Slectionnez le fichier WDD correspondant l'analyse grce au bouton "Parcourir". 9. Dans la liste des analyses, slectionnez l'ana- lyse voulue puis slectionnez le rpertoire des fichiers de donnes correspondant (bouton "Par- courir"). Dans ce rpertoire tous les fichiers de donnes HyperFileSQL correspondant l'analyse slection- ne sont regroups. Attention : il est ncessaire de slectionner un rpertoire de fichier par analyse. 10. Validez (bouton "OK"). La base de donnes est utilisable en lecture seule- ment depuis des programmes externes via le driver ODBC sur HyperFileSQL. 2.16.4 Utilisation Pour utiliser le driver ODBC sur HyperFileSQL depuis votre programme Java, il faut : 1. Dfinir le driver utilis. Par exemple, avec la ligne de code suivante : 2. Dfinir l'URL sur la connexion ODBC systme (par exemple "hfodbc") : 3. Interroger en SQL la base de donnes HyperFi- leSQL. Par exemple : Remarque : Le driver ODBC sur HyperFileSQL ne permet pas d'accder une base de donnes HyperFileSQL crypte. 2.17 Provider OLE DB pour HyperFileSQL 2.17.1 Prsentation Le provider OLE DB pour HyperFileSQL permet d'accder une base de donnes HyperFileSQL (Classic ou Client/Serveur) depuis un logiciel externe grant les accs par OLE DB. Le provider est disponible en lecture et en criture. Une application crite dans un langage tiers peut lire et crire dans des fichiers HyperFileSQL. Pour plus d'information, consultez un manuel sp- cialis sur OLE DB. 2.17.2 Installation Le provider OLE DB pour HyperFileSQL est fourni sous la forme d'un pack d'installation disponible dans le rpertoire "Install\OLEDB" de WinDev/Web- Dev. Par dfaut, le provider OLE DB est install dans le rpertoire "C:\Program Files\Fichiers communs\PC SOFT\18.0\OLEDB". // utilisation du driver JDBC de // Microsoft Class.foName("com.ms.jdbc.odbc. JdbcOdbcDriver"); // Utilisation du driver JDBC de // Sun Class.forName("sun.jdbc.odbc. JdbcOdbcDriver"); String jURL = "jdbc:odbc:hfodbc"; //Connexion Connection Contact = ... DriverManager.getConnection (jURL,"<user>", "<pass>"); // Cre une requte Statement jRequete = ... Contact.createStatement(); // Excution de la requte // et rcupration ... ResultSet Resultat = ... jRequete.executeQuery(... "SELECT * FROM CLIENT"); int jColonne = 5; int jLigne = 3; ResultSetMetaData jMetaData= ... Resultat.getMetaData(); for (int i=0;i<jLigne;i++) Resultat.next(); System.out.println("Nom de"+ ... "colonne : " + jMetaData.get ... ColumnLabel(jColonne)); System.out.println("Valeur : " + Resultat.getString(jColonne)); Resultat.close(); jRequete.close(); Contact.close(); WLangage.book Page 365 Mardi, 23. avril 2013 1:59 13 366 Partie 7 : Gestion des fichiers de donnes Remarque : Pour qu'une application puisse utiliser un provider OLE DB, il est ncessaire d'installer le composant MDAC (Microsoft Data Access Compo- nent) en version 2.8 ou suprieure. Ce composant est disponible en tlchargement sur le site de Microsoft. Il est intgr au systme d'exploitation partir de Windows 2003 Serveur et Windows Vista. 2.17.3 Configuration L'application utilisant un provider OLEDB doit four- nir une chane de connexion. Cette chane dfinit le provider utiliser ainsi que les paramtres de con- nexion fournir ce provider pour tablir la con- nexion avec la base de donnes. Cette chane (appele chane de connexion) peut tre : saisie en programmation (par exemple dans une application C# ou VB.Net). construite l'aide d'un assistant (par exemple avec l'outil Crystal Report). Le format gnral de la chane de connexion est le suivant : <Element1>=<Valeur1>;<Element2>=<Va leur2>;...;<ElementN>=<ValeurN> Pour plus de dtails, consultez laide en ligne. Utilisation de l'analyse dans une con- nexion une base de donnes HyperFileSQL Classic Dans le cas d'une connexion une base de don- nes HyperFileSQL Classic : Si le chemin du fichier WDD est indiqu dans le paramtre "Data Source" de la chane de connexion : Seuls les fichiers dcrits dans cette analyse seront pris en compte par la connexion. Les liaisons et les rgles d'intgrit dcrites dans l'analyse sont prises en compte automati- quement. Si le chemin du fichier WDD n'est pas indiqu dans le paramtre "Data Source" de la chane de connexion : Tous les fichiers prsents dans le rpertoire indiqu dans le paramtre "Initial Catalog" seront pris en compte. Aucune contrainte d'intgrit entre les fichiers n'est respecte automatiquement. Remarques : Lors d'un accs par le provider OLE DB pour HyperFileSQL, les fentres d'assistance automati- que de HyperFileSQL sont dsactives. Les rubriques de type "Dure" dans les fichiers de donnes HyperFileSQL sont retournes sous forme d'entiers sur 8 octets par le provider OLE DB. L'unit est la milliseconde. Les rubriques de types tableau ne sont pas gres par le provider OLE DB. Dans cette version, les commandes SQL avec paramtres ne sont galement pas gres. Exemples de chanes de connexion OLE DB Connexion une base HyperFileSQL Classic sans prciser l'analyse : Connexion une base HyperFileSQL Classic en prcisant l'analyse : Connexion une base HyperFileSQL Client/ Serveur : Connexion une base HyperFileSQL Client/Ser- veur avec des fichiers protgs par des mots de passe et utilisant l'alphabet russe : Remarque : Dans cet exemple, tous les fichiers de la base de donnes sont protgs par le mot de passe "secret1" sauf le fichier "Fichier2" qui est pro- tg par le mot de passe "secret2". /Provider=PCSOFT.HFSQL;Initial Catalog=c:\Ma Base HyperFileSQL Provider=PCSOFT.HFSQL;Data Source=c:\Ma Base HyperFleSQL\ ... MonAnalyse.wdd;Initial ... Catalog=c:\Ma Base HyperFileSQL Provider=PCSOFT.HFSQL;Data Source=serveurbdd. masociete.fr:4910;User... ID=admin;Password=secret;... Initial Catalog=MaBase Provider=PCSOFT.HFSQL;Data Source=serveurbdd.masciete.fr;... User ID=utilisateur;... Initial Catalog=MaBasRusse; ... Extended Properties= ... "Password=*:secret1; ... Password=Fichier2:secret2;... Language=KOI8-R" WLangage.book Page 366 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 367 3. LANGAGE SQL 3.1 Prsentation Un programme dvelopp avec WinDev ou WebDev peut accder une base de donnes selon plu- sieurs modes : Accs Natif OLE DB ODBC via OLE DB Ce chapitre prsente comment accder : des fichiers HyperFileSQL par SQL, des fichiers de base de donnes tierce par SQL. 3.2 Langage SQL et HyperFileSQL 3.2.1 Prsentation Le WLangage propose plusieurs fonctions pour interroger une base de donnes HyperFileSQL par des requtes SQL (HExcuteRequte, HExcuteRe- quteSQL). Les fichiers HyperFileSQL peuvent tre interrogs : Par des requtes cres par lditeur de requ- tes. Pour plus de dtails sur la cration des requtes et la manipulation de lditeur de requtes, con- sultez le manuel "Gnrateur dtats et de requ- tes". Par des requtes SQL saisies directement sous lditeur de code (fonction HExcuteRequ- teSQL). A laide du driver ODBC sur HyperFileSQL fourni avec WinDev / WebDev, depuis une application ou un site non dvelopp avec WinDev / WebDev. 3.2.2 Commandes SQL utilisables avec HyperFileSQL Les commandes SQL pouvant tre utilises sur des fichiers HyperFileSQL sont les suivantes : ADD_MONTH ALL AND ANY AS ASC ASCII AVG BETWEEN BIN BOTTOM CASE CBRT CEIL - CEILING CHAR_LENGTH CHARACTER_LENGT H COALESCE CONCAT COUNT CREATE TABLE DECODE DEGREES DELETE DESC WLangage.book Page 367 Mardi, 23. avril 2013 1:59 13 368 Partie 7 : Gestion des fichiers de donnes Toutes les autres commandes SQL non cites ne sont pas gres actuellement. Remarque : Nous ne dtaillerons pas ces comman- des. Nous vous conseillons de consulter si nces- saire un ouvrage spcialis ou laide en ligne. 3.2.3 Fonctions d'excution de requtes Les requtes cres avec l'diteur de requtes seront initialises par la fonction HExcuteRe- qute. Les requtes en langage SQL seront initialises par la fonction HExcuteRequteSQL. Pour rcuprer le contenu d'une requte SQL, il est ncessaire de dis- poser d'une source de donnes (ou d'un champ table fichier, combo, ... reli la requte). Important : Une variable de type "source de don- nes" doit toujours tre dclare comme GLOBALE la fentre, la page ou au projet. Dans le cas con- traire, elle ne pourrait pas tre utilise pour remplir une table par exemple puisque sa dure de vie serait trop courte. Si une variable de type "source de donnes" est dclare en tant que variable LOCALE, un warning sera gnr indiquant le risque. Exemple de requte de l'diteur de requtes (la requte s'appelle ici RequeteEditeur.WDR) : Exemple de requte en langage SQL : DISTINCT DIV DROP TABLE EXISTS FROM FULL OUTER JOIN GROUP BY HAVING HEX IN INNER JOIN INSERT INSTR INTO IS NULL / IF NULL LAST_DAY LAST_INSERT_ID LEFT LEFT OUTER JOIN LEN LENGTH LIKE LIMIT LOWER LPAD LTRIM MAX MID MIN MONTHS_BETWEEN NEW_TIME NEXT_DAY NOT NVL OCT OCTET_LENGTH ON OR ORDER BY PATINDEX POSITION RADIAS RANDOM REPLACE RIGHT RIGHT OUTER JOIN ROUND RPAD RTRIM SELECT SET SOME SOUNDEX SOUNDEX LIKE SOUNDEX2 SOUNDEX2 LIKE SUBSTR SUBSTRING SUM SYSDATE TOP TRANSLATE TRIM TRUNC UNION UPDATE UPPER UUID VALUES WHERE SrcRequete est une source de donnes SI HExcuteRequte(SrcRequete,... RequeteEditeur) ALORS Erreur(HerreurInfo()) SINON HLitPremier(SourceRequete) TANTQUE pas HEnDehors() // Parcours du rsultat de la // requte HLitSuivant() FIN FIN SrcRequete est une source de donnes SI pas HExcuteRequteSQL(... SrcRequete,"SELECT NomClient,... "+... "Adresse FROM CLIENT WHERE "+... "CLIENT.Ville LIKE 'Paris%'") ALORS Erreur(HerreurInfo()) SINON HLitPremier(SourceRequete) TANTQUE pas HEnDehors() // Parcours du rsultat // de la requte HLitSuivant() FIN FIN WLangage.book Page 368 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 369 Particularit des requtes de mise jour de base (UPDATE, DELETE, INSERT, ...) Ces requtes n'tant pas destines renvoyer une slection d'enregistrements, il n'est pas ncessaire de disposer d'une source de donnes pour les ex- cuter. Les fonctions HExcuteRequte et HExcute- RequteSQL peuvent alors tre appeles avec un nom de requte au lieu d'une source de donnes. Exemple de requte SQL DELETE : Passage de paramtres une requte Une requte sur une base de donnes peut rece- voir des paramtres (par exemple la slection des clients du dpartement X). Pour cela, la fonction HExcuteRequte permet de passer des paramtres la requte construite sous l'diteur de requtes. Consultez l'aide relative l'diteur de requtes et la fonction HExcuteRe- qute pour de plus amples informations. Une requte en langage SQL (initialise par la fonc- tion HExcuteRequteSQL) peut elle aussi accepter des paramtres. Il suffit pour cela que la chane constituant la requte SQL soit construite par con- catnation avec les paramtres. Par exemple, pour rechercher un client dont le numro a t saisi l'cran : 3.3 Langage SQL et autres bases de donnes 3.3.1 Prsentation WinDev / WebDev permet dinterroger une base de donnes tierce : soit par le WLangage (HExcuteRequteSQL), soit par une requte cre avec lditeur de requtes. 3.3.2 Requte cre dans lditeur de requtes Pour crer une requte sur une base de donnes tierce, les tapes sont les suivantes : 1. Importation des tables de la base de donnes tierce (description des structures) dans lanalyse du projet. Pour raliser cette opration, sous le volet "Ana- lyse", dans le groupe "Cration", droulez "Impor- ter" et slectionnez loption "Importer des descriptions de fichiers/tables". Lassistant permet de se connecter un serveur ou une base de donnes et de slectionner les tables importer. 2. Cration des requtes avec lditeur de requ- tes. 3.3.3 Requte cre par programmation Pour crer une requte sur une base de donnes tierce, les diffrentes tapes sont les suivantes : 1. Dclaration de la connexion dans lditeur danalyses. 2. En programmation, deux mthodes sont possibles : Mthode 1 : Dclaration dune source de donnes. Utilisation de la fonction HExcuteRequteSQL. Mthode 2 : Ouverture de la connexion avec la fonction HOu- vreConnexion. Excution de la requte avec la fonction HExcu- teRequteSQL. Parcours du rsultat de la requte avec les fonc- tions HLitXXX. Fermeture de la connexion avec la fonction HFer- meConnexion. Dclaration de la connexion Dans lditeur danalyses, sous le volet "Analyse", dans le groupe "Connexion", cliquez sur "Nouvelle connexion". SI PAS HExcuteRequteSQL(... "RequeteDeSuppression",... "DELETE FROM CLIENT WHERE "+... "CLIENT.NumClient=346") ALORS Erreur(HErreurInfo()) SINON Info("Suppression effectue") FIN CReqSQL est une chane SourceRequete est une source de ... donnes // ChampNumeroClient est un champ // de saisie de la fentre cReqSQL="SELECT NomClient"+ ... "FROM CLIENT WHERE "+... "CLIENT.NClient=" +... ChampNumeroClient SI PAS HExcuteRequteSQL(... SourceRequete,cReqSQL) ... ALORS Erreur(HErreurInfo()) SINON HLitPremier(SourceRequete) Info(SourceRequete.NomClient) // Affiche nom client trouv FIN WLangage.book Page 369 Mardi, 23. avril 2013 1:59 13 370 Partie 7 : Gestion des fichiers de donnes Programmation Le code suivant permet dexcuter une requte SQL sur une base de donnes accessible via la con- nexion dcrite dans lanalyse. Remarque : Tous les ordres SQL spcifiques la base de donnes tierce peuvent tre utiliss. // Dclaration de la source // de donnes Client75 est une source de Donnes // Recherche clients du // dpartement 75 // GestionCommerciale : nom de la // connexion dcrite dans l'analyse SI PAS ... HExcuteRequteSQL(Client75,... GestionCommerciale,... hRequteInterruptible,... "SELECT * FROM"+... " CLIENT WHERE CODEPOSTAL "+... "LIKE '75%') alors Erreur(HErreurInfo()) RETOUR FIN // Rcupration du rsultat POUR TOUT Client75 CalculeStats() FIN WLangage.book Page 370 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 371 4. GESTION DES BLOCAGES DE FICHIERS 4.1 Prsentation des blocages 4.1.1 Blocages de fichiers Pourquoi bloquer les fichiers ? Sous Windows, plusieurs programmes s'excutant sur le mme poste ou sur des postes relis en rseau peuvent travailler simultanment sur un mme fichier de donnes. La gestion des fichiers implique donc la gestion des accs concurrentiels. Il faut notamment interdire plusieurs programmes de modifier le mme enre- gistrement en mme temps, en bloquant le fichier ou l'enregistrement. Le WLangage permet de grer simplement le blo- cage d'un fichier ou d'un enregistrement du fichier. Blocages de fichiers par programma- tion Des fonctions du WLangage permettent de bloquer les fichiers ou les enregistrements et d'obtenir des comptes rendus de blocage. Ces fonctions bloquent au choix : uniquement l'enregistrement lu en criture, la totalit du fichier en criture, la totalit du fichier en lecture et en criture. Elles permettent bien entendu de dbloquer les fichiers ou les enregistrements bloqus. 4.1.2 Qu'est ce qu'un blocage ? Un blocage correspond au blocage d'un fichier ou d'une partie de fichier pour interdire temporaire- ment l'accs ce fichier (ou cette partie de fichier) par un autre programme. Le blocage peut tre : uniquement en criture, dans ce cas le fichier (ou la partie de fichier) peut tre lu par un autre pro- gramme pendant la dure du blocage; en lecture et en criture, dans ce cas le fichier (ou la partie du fichier) reste totalement inacces- sible aux autres programmes. 4.1.3 Quand faut-il bloquer et que faut-il bloquer ? Voici quelques rgles de base connatre pour grer les blocages en programmation : 1. Chaque enregistrement qui va tre modifi, sup- prim ou rcrit doit tre au pralable lu et bloqu, par une fonction de lecture bloquante (non obliga- toire). L'enregistrement est automatiquement dbloqu par les oprations de modification, de suppression et de rcriture. 2. Lorsqu'un enregistrement est bloqu par une fonction de lecture bloquante et qu'il n'est pas dbloqu par une opration de modification, de suppression ou de rcriture, il doit tre dbloqu par une fonction de dblocage. 3. Lorsque plusieurs enregistrements doivent tre dbloqus, il est possible de les dbloquer en une seule opration par la fermeture du fichier. 4. Seul le programme ayant bloqu les enregistre- ments et les fichiers peut les dbloquer. 5. Lorsqu'un fichier est bloqu, il n'est pas nces- saire de lire l'enregistrement avec les fonctions de lecture bloquante. Il suffit d'utiliser une fonction de lecture "simple". 6. Ds qu'un fichier ne sert plus dans un pro- gramme, du moins pour un temps assez long, il est prfrable de le fermer. Il reste alors accessible aux autres programmes. 4.1.4 Le WLangage et les blocages Le WLangage propose deux modes de gestion de blocage. Le dveloppeur choisit le mode de blocage en fonction de l'utilisation finale de l'application ou du site qu'il dveloppe et de la programmation sou- haite. Les modes de blocage sont les suivants : Mode Mono : Chaque fichier ouvert est automati- quement bloqu en lecture et en criture. Ainsi, il n'est pas ncessaire de grer les blocages ni de tester les comptes rendus de blocage. Les fichiers ne sont pas partageables. Mode Multi : Tout fichier ouvert peut tre partag par d'autres programmes et d'autres postes. Le dveloppeur gre les blocages des fichiers et des enregistrements ainsi que les comptes rendus de blocage. Il dcide des actions entreprendre dans chacun des cas. Le mode Mono est le mode de blocage par dfaut de WinDev. Le mode Multi est le mode de blocage par dfaut de WebDev. WD WebDev WLangage.book Page 371 Mardi, 23. avril 2013 1:59 13 372 Partie 7 : Gestion des fichiers de donnes 4.2 La gestion des blocages 4.2.1 Exemples illustrant la ncessit de blo- quer Plusieurs exemples de traitements des blocages sont prsents ci-dessous. Ils illustrent la ncessit de bloquer les fichiers. Pour afficher une liste permettant de slection- ner un ou plusieurs enregistrements, il n'est pas ncessaire de bloquer les enregistrements affi- chs. Par contre, une fois la slection effectue, dans la plupart des cas, il faut lire l'enregistrement cor- respondant pour s'assurer de son existence et le bloquer pour pouvoir ventuellement le modifier. Dans le cas de l'ajout d'un ou de plusieurs enre- gistrements dans un fichier, il faut bloquer le fichier pour pouvoir calculer la valeur d'une rubri- que partir d'un autre enregistrement (numro de client par exemple). Dans les autres cas, il n'est pas ncessaire de bloquer le fichier. Lors d'un traitement statistique permettant de calculer le poids d'un ou de plusieurs articles par rapport la totalit des articles, le fichier doit tre bloqu ou interdit de modification avant le traitement afin de s'assurer que le contenu du fichier ne sera pas modifi pendant le calcul. La gestion des blocages dpend souvent des cir- constances des traitements du fichier. Pour sim- plifier la gestion des blocages, par exemple dans le cas d'un programme de gestion des caisses d'un magasin, le mme client ne peut pas tre en mme temps plusieurs caisses. Aussi n'est il pas ncessaire de bloquer l'enregistrement du fichier client lors de son traitement bien qu'il soit modifi. 4.2.2 Structure des blocages Deux niveaux de blocage sont proposs : blocage d'un fichier dans sa totalit, blocage d'un enregistrement donn. Le blocage d'un fichier dans sa totalit bloque auto- matiquement tous les enregistrements de ce fichier. Le blocage d'un fichier n'est possible que si aucun des enregistrements de ce fichier n'est bloqu par un autre poste ou par un autre programme. Le dblocage d'un fichier dbloque automatique- ment tous les enregistrements bloqus par le mme programme. Important : Les blocages restent actifs tant qu'une fonction de dblocage (de fichier ou d'enregistre- ment) ou d'criture (dbloque l'enregistrement crit) n'est pas excute. 4.2.3 Dead lock (inter-blocage) Lors de la gestion des blocages, il est possible de se trouver dans une situation o tous les fichiers sont bloqus et o il n'est pas possible de les dbloquer. Ce cas de figure est appel "Dead Lock". Pour viter une "treinte mortelle", il est conseill de suivre les trois points ci-dessous : 1. Bloquer tous les fichiers exploits dans un traite- ment, selon l'ordre alphabtique des fichiers utili- ss. 2. Effectuer le traitement dsir. 3. Dbloquer les fichiers. Illustrons ce conseil par un exemple. L'exemple ci- dessous prsente un cas "d'treinte mortelle". Supposons que les programmes P1 et P2 effec- tuent les traitements suivants ( ne pas faire !) : Les programmes effectuent leurs blocages dans l'ordre suivant : P1 bloque F1. P2 bloque F2. P1 veut bloquer F2, mais celui-ci est dj bloqu par P2. P2 veut bloquer F1, mais celui-ci est dj bloqu par P1. Les deux programmes attendent donc un dblo- cage ventuel : il n'y a pas de solution si aucun des 2 programmes ne libre un des fichiers ! Pour viter une telle situation, suivons les conseils prcdemment donns : 1. Bloquer les fichiers selon l'ordre alphabtique (F1 puis F2). 2. Effectuer le traitement dsir. 3. Dbloquer les fichiers. WD WebDev Programme P1 Programme P2 BLOQUER(F1) BLOQUER(F2) BLOQUER(F2) BLOQUER(F1) < Traitement 1 > <Traitement 2> DEBLOQUER(F1) DEBLOQUER(F2) DEBLOQUER(F2) DEBLOQUER(F1) WLangage.book Page 372 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 373 Les traitements de P1 et P2 deviennent : Dans ce cas : P1 bloque F1. P2 ne peut pas bloquer F1. P1 bloque F2. P2 attend la libration du fichier F1. Le traitement 1 s'excute. P1 dbloque F1. P1 dbloque F2. P2 bloque F1. P2 bloque F2. ... "L'treinte mortelle" est vite ! 4.3 Les modes de blocage proposs Il existe deux modes de blocage des fichiers et des enregistrements. Ce chapitre : aide choisir le mode adopter dans les pro- grammes, explique la mthode pour bloquer un fichier ou un enregistrement, dtaille le fonctionnement de chaque mode. 4.3.1 Mode Mono Le mode Mono est le mode de blocage par dfaut de WinDev. Il se caractrise par le blocage automatique de cha- que fichier ds son ouverture. Le fichier sera dblo- qu lors de sa fermeture. Utilisateur WinDev 5.5 : ce mode correspond la fonction HModeAuto de WinDev 5.5. Ce mode est conserv par compatibilit avec Win- Dev. Il ne doit pas tre utilis dans un site WebDev. Utilisateur WebDev 1.5 : ce mode correspond la fonction HModeAuto de WebDev 1.5. Quand utiliser ce mode ? Le mode Mono est utilis pour dvelopper simple- ment des programmes dont les fichiers ne sont pas partags par plusieurs postes ou par plusieurs pro- grammes en mme temps. Avec le mode Mono, il n'est pas ncessaire de grer les blocages en programmation, les fichiers sont bloqus ds leur ouverture en criture et en lec- ture. Les fichiers ne sont pas partageables. Important Le mode Mono ne convient pas aux programmes fonctionnant en rseau. Si un programme dvelopp en mode Mono est lanc plusieurs fois sur une mme machine ou s'excute en rseau, un message d'erreur s'affi- chera signalant que le mode Mono est inappro- pri pour ce type de fonctionnement. Un programme dvelopp avec le mode Mono ne pourra pas tre lanc plusieurs fois sous Win- dows. Comment sont bloqus les fichiers en mode Mono ? Le mode Mono est le mode de blocage par dfaut de WinDev. En mode Mono, ds qu'un fichier est ouvert par une fonction (HOuvre ou toute autre fonction, par exemple HLitPremier, HCreation, ...), le fichier est bloqu automatiquement en lecture et en criture. Si l'accs au fichier est refus (le fichier est dj bloqu par un autre programme), l'excution du programme est abandonne aprs l'affichage d'un message signalant que ce mode est inappropri. Un fichier qui a t bloqu lors de son ouverture est automatiquement dbloqu ds qu'il est ferm : par la fonction HFerme, si elle est appele, pour pouvoir ouvrir un autre fichier lorsque le nombre maximum de fichiers pouvant tre ouvert est atteint (fermeture automatique des fichiers). Remarques Si le fichier est dbloqu par HFerme (ou HDblo- queFichier, HDbloqueTotalFichier) ou par la fer- meture automatique, dans la suite du programme, il sera bloqu de nouveau lorsqu'il sera rouvert par une fonction. En mode Mono, le fichier est bloqu tant qu'il est ouvert. Il est donc conseill de laisser un fichier bloqu le moins longtemps possible. Programme P1 Programme P2 BLOQUER(F1) BLOQUER(F1) BLOQUER(F2) BLOQUER(F2) <Traitement 1> <Traitement 2> DEBLOQUER(F1) DEBLOQUER(F1) DEBLOQUER(F2) DEBLOQUER(F2) WD WebDev WLangage.book Page 373 Mardi, 23. avril 2013 1:59 13 374 Partie 7 : Gestion des fichiers de donnes Ainsi, il est prfrable de fermer un fichier ds qu'il n'est plus utilis. Comment partager les donnes en mode Mono ? En mode Mono, les fichiers ne peuvent pas tre partags. Cependant, dans certaines analyses, deux programmes peuvent s'excuter en mme temps, l'un modifiant les fichiers, l'autre consultant uniquement les fichiers. Dans un tel cas d'utilisa- tion, les programmes en mode Mono peuvent acc- der au fichier en mme temps. Si un programme (modifiant les fichiers) dvelopp en mode Mono est lanc plusieurs fois sur une mme machine ou s'excute en rseau, un mes- sage d'erreur s'affichera signalant que le mode Mono est inappropri pour ce type de fonctionne- ment Supposons par exemple deux programmes : P1 consulte le fichier "COMMANDE", P2 modifie le fichier "COMMANDE". P1 suit l'algorithme suivant : P2 suit l'algorithme suivant : Si P2 est lanc en premier puis P1 en second, alors : P2 ouvre et bloque le fichier "COMMANDE" P1 ouvre le fichier "COMMANDE" bien qu'il soit bloqu. HOuvre(HOLecture/HOLectureEcriture) ouvre le fichier qu'il soit bloqu ou non. P1 peut consulter le fichier et P2 peut modifier le fichier. Attention : si P2 supprime l'enregistrement "X" du fichier "COMMANDE" en mme temps que P1 con- sulte l'enregistrement "X" du fichier "COMMANDE", P1 ne verra pas que l'enregistrement "X" est sup- prim du fichier. Pour pouvoir partager un fichier entre un pro- gramme modifiant un fichier et un ou plusieurs pro- grammes consultant le fichier, le programme modifiant le fichier doit appeler une fonction pour ouvrir et bloquer ce fichier, les autres programmes doivent appeler la fonction HOuvreSansBloquer pour accder au fichier bien qu'il soit bloqu. Note : les fonctions sont dtailles la fin de cette partie. Attention : Si le fichier est ouvert par la fonction HOuvre(HOLecture/HOLectureEcriture), le fichier n'est pas bloqu. Ainsi, le fichier n'est pas protg contre d'ventuelles modifications. C'est pourquoi la fonction HOuvre(HOLecture/ HOLectureEcriture) ne doit tre utilise que dans des programmes ne modifiant pas le fichier. Ainsi les instructions suivantes ne doivent pas tre excutes aprs la fonction HOuvre(HOLecture/ HOLectureEcriture) : HAjoute- HEcrit HLibre- HModifie HRaye- HSupprime TableEnregistre- TableSupprime Rgles de base en mode Mono Pour grer correctement les blocages de fichiers et/ou denregistrements nous vous invitons sui- vre les rgles suivantes : Le mode Mono ne doit pas tre utilis lorsque les fichiers sont partags par plusieurs programmes. Le mode Mono ne convient pas pour dvelopper un programme fonctionnant en rseau. En rsum En mode Mono, chaque fois qu'un fichier est ouvert par une fonction (sauf la fonction HOuvre(HOLec- ture/HOLectureEcriture)), il est automatiquement bloqu en lecture et en criture. Le fichier est dbloqu automatiquement lors de sa fermeture. Il sera bloqu de nouveau par l'appel d'une fonction (sauf la fonction HOuvre(HOLecture/HOLectureE- criture). La fonction HOuvre(HOLecture/HOLectureEcriture) ouvre le fichier sans le bloquer, qu'il soit dj blo- qu par un autre programme ou non. // affichage liste des commandes Resouvre = HOuvre(COMMANDE, ... HOlecture) si Resouvre = Faux alors Info ("fichier non trouv")... sinon HLitPremier(COMMANDE,NUM) TantQue pas HEnDehors() Afficher_commande HLitSuivant(COMMANDE,NUM) Fin Fin // suppression des commandes //comportant le produit CodePr CodePr = Saisie_code_produit HLitRecherche(COMMANDE,CODE,CodePr) Tant que HTrouve() HSupprime(COMMANDE) HLitSuivant(COMMANDE,CODE) Fin WLangage.book Page 374 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 375 Le mode Mono convient aux programmes ne parta- geant pas leurs fichiers pour dvelopper simple- ment un programme. Appel du mode Mono Le mode Mono est le mode de blocage par dfaut de WinDev. Remarque : Dans un programme, il est possible de passer du mode Mono au Multi. Exemple en mode Mono Lexemple suivant illustre le mcanisme de blocage et de dblocage du mode Mono. Les fonctions utili- ses sont dtailles la fin de cette partie. Vous remarquerez quaucun de ces programmes ne comporte de fonctions de blocage de fichier. Remarque : Aprs l'appel de la fonction HLitRe- cherche, le fichier "CLIENT" est ouvert et bloqu. Il est dbloqu la fin de l'excution du programme. 4.3.2 Mode Multi Le mode Multi est le mode de blocage par dfaut de WebDev. Le mode Multi se caractrise par : les blocages sont grs par le dveloppeur dans les programmes, les comptes rendus de blocage (permettant de savoir si aucun enregistrement d'un fichier n'est dj bloqu par un autre programme) sont grs dans les programmes par le dveloppeur qui dcide des traitements effectuer. Utilisateur WinDev 5.5 : ce mode correspond la fonction HModePerso de WinDev 5.5. Quand utiliser ce mode ? Le mode Multi doit tre prfr au mode Mono lorsqu'un ou plusieurs fichiers d'un programme doi- vent tre partags par plusieurs programmes. En consquence, le mode Multi doit tre utilis ds qu'une opration logique de mise jour de plu- sieurs fichiers ne peut pas tre interrompue : soit tous les fichiers sont mis jour, soit aucun. En WinDev, le mode Multi propose une gestion automatique : des erreurs de blocages, des conflits de modification. Cette gestion automatique peut tre personnalise tout moment grce la fonction HSurErreur. Pour plus de dtails sur la personnalisation de la gestion automatique, consultez laide en ligne. Remarque : la gestion des blocages utilise en WinDev 5.5 est toujours disponible par compatibi- lit. Appel du mode Multi Pour appeler le mode Multi dans un programme, il suffit d'excuter au dbut du programme la fonc- tion HMode(hModeMulti). Deux mthodes de mise en place des blocages sont disponibles : Mode Direct : constante hModeDirect (valeur par dfaut) : mise en place des blocages prioritaire (sur la modification par exemple). Ainsi, la modification d'un enregistrement sur lequel de nombreuses lectures sont ralises a peu de chances d'tre effectue, mais les bloca- ges sont plus rapides. Mode Rservation : constante hModeRservation : mise en place des blocages non prioritaire. Cette mthode permet de modifier immdiate- ment un enregistrement sur lequel de nombreu- ses lectures sont effectues. Cette mthode est plus lente que la mthode hModeDirect. En rsum Le mode Multi permet de partager un ou plusieurs fichiers entre plusieurs programmes. En programmation, le dveloppeur gre les bloca- ges des fichiers. Il doit galement tester HErreur- Blocage aprs toutes les fonctions HyperFileSQL. Le mode Multi convient aux programmes grant des fichiers pouvant tre partags. Les program- mes traitent une opration logique de mise jour de plusieurs fichiers ne pouvant pas tre interrom- pue. // Recherche client selon son nom HLitRecherche(CLIENT,NOM,"MARTIN") Si HTrouve() alors Info ("Client trouv") Sinon Info("Client inconnu") Fin WLangage.book Page 375 Mardi, 23. avril 2013 1:59 13 376 Partie 7 : Gestion des fichiers de donnes 4.3.3 Les blocages possibles en mode multi Blocage des fichiers en programmation Il existe plusieurs mthodes pour bloquer un fichier ou un enregistrement : blocage du fichier, blocage enregistrement par enregistrement. Blocage du fichier Il est ncessaire de bloquer la totalit du fichier si les deux conditions suivantes sont respectes : si plusieurs enregistrements doivent tre bloqus en mme temps, pour simplifier la programmation. Les fonctions permettant de bloquer un fichier sont : HBloqueFichier : le fichier est bloqu en criture. HBloqueFichier(hBlocageLecture/ hBlocageEcriture) : le fichier est bloqu en lec- ture et en criture. HInterditModif : le fichier est bloqu en criture y compris pour le programme qui l'a bloqu. Les fonctions permettant de dbloquer un fichier sont : HDbloqueFichier : le fichier a t bloqu par HBloqueFichier. HFinInterditModif : le fichier a t bloqu par HInterditModif. HFerme : le fichier est ferm et dbloqu. Blocage enregistrement par enregistrement Les enregistrements peuvent tre bloqus au cours de leur utilisation sans que le fichier soit bloqu dans sa totalit. Les fonctions permettant de bloquer un enregistre- ment sont : HLit, HLitRecherchePremier, HLitRe- chercheDernier, HLitDernier, HLitPremier, HLitSuivant, HLitPrcdent Aprs chaque fonction, il faut tester HErreurBlo- cage pour s'assurer que l'enregistrement a pu tre bloqu. Attention : la fin du traitement, il ne faut pas oublier de dbloquer les enregistrements bloqus avec les fonctions : HDbloqueFichier, HFerme, HFinInterditModif, HDbloqueNumEnr, HAjoute, HModifie, HEcrit, HRaye, HSupprime, TableSup- prime, TableEnregistre. Remarque : Le blocage d'un enregistrement par les fonctions "HLit..." est inactif si le fichier a t prc- demment bloqu par les fonctions "HBloque...", la fonction est quivalente "HLit...". 4.4 Gestion assiste des erreurs HyperFileSQL Le moteur HyperFileSQL permet de grer divers types derreurs par programmation : Erreur de doublons Erreur dintgrit Erreur de mot de passe Erreur de conflit de modification et de conflit d'tat de modification Erreur de blocage Erreur de saisie obligatoire Rindexation en cours A tout moment, la fonction HSurErreur permet de personnaliser la gestion assiste des erreurs ou de dbrancher cette gestion. Pour chaque type derreur, il est possible : soit de grer cette erreur par une fentre spcifi- que ou par une procdure, soit de dbrancher lassistance et de grer lerreur par programmation (comme en WinDev 5.5). 4.4.1 Principe Pour simplifier la programmation de la gestion des fichiers de donnes, le moteur HyperFileSQL gre automatiquement les cas derreur les plus cou- rants. Cette gestion automatique consiste assister lutili- sateur dans le traitement de lerreur. En effet, le plus souvent, lerreur provient dun problme au niveau des donnes saisies. Cette gestion automatique est propose par dfaut et peut tre personnalise ou entirement dbran- che. Remarque : La gestion assiste des erreurs est dis- ponible pour les fichiers au format HyperFileSQL Classic, pour les fichiers manipuls via un accs natif ou pour les fichiers manipuls via un provider OLE DB. WLangage.book Page 376 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 377 Si vos fichiers sont manipuls via un provider OLE DB, sont grs uniquement : Les erreurs de doublons Attention : Certaines erreurs de doublons peu- vent ne pas tre reconnues comme telles par l'accs OLE DB. Ces erreurs ne seront pas gres comme des erreurs de doublons mais seront con- sidres comme des erreurs fatales. Exemple : l'analyse WinDev et la description de la base externe ne sont pas en phase et la description du fichier dans l'analyse ne contient pas toutes les cls uniques du fichier dfinies sur la base. Les erreurs de saisie obligatoire Attention : L'erreur de saisie obligatoire apparat uniquement si le provider OLE DB indique que la rubrique est associe la proprit "NULL inter- dit". Dans le cas contraire, l'erreur sera traite comme une erreur fatale. Si vos fichiers sont manipuls via un accs natif, seule la gestion du mot de passe obligatoire n'est pas disponible. 4.4.2 Fonctionnement standard Erreur de doublons Cause de lerreur Lutilisateur ou linternaute ajoute un enregistre- ment pour lequel la valeur dune cl unique existe dj. Par exemple, le nom de la ville est dfini comme cl unique du fichier Client dans l'analyse. Lajout dune ville avec un nom dj utilis provoque une erreur de doublons. Gestion assiste par dfaut (WinDev et WebDev) Si une erreur de doublons est dtecte, une fen- tre ou une page saffiche, demandant lutilisa- teur de modifier la valeur de lenregistrement provoquant lerreur. Traitement de lerreur (WinDev Mobile) Testez la fonction HErreurDoublon aprs chaque fonction HyperFileSQL pouvant provoquer une erreur de doublons (HAjoute, HModifie par exem- ple). Le libell exact de l'erreur peut tre connu avec la fonction HErreurInfo. Erreur dintgrit Cause de lerreur Lutilisateur ou linternaute tente dajouter un enregistrement en ne respectant pas les con- traintes dintgrit dfinies entre les fichiers au niveau de lanalyse. Par exemple, les fichiers CEDEX, DEPARTEMENT et REGION sont lis entre eux au niveau de l'ana- lyse. Ces liaisons rpondent des contraintes d'int- grit relationnelles. Lajout dun dpartement sans avoir cr la rgion correspondante entrane une erreur dintgrit. Gestion assiste par dfaut (WinDev et WebDev) Lorsquune erreur dintgrit est dtecte, une fentre ou une page saffiche, demandant luti- lisateur dannuler lopration ou de modifier les donnes saisies. Traitement de lerreur (WinDev Mobile) Testez la fonction HErreurIntgrit aprs chaque fonction HyperFileSQL pouvant provoquer une erreur dintgrit (HAjoute, HModifie par exem- ple). Le libell exact de l'erreur peut tre connu avec la fonction HErreurInfo. Erreur de mot de passe Cause de lerreur Le programme tente de manipuler un fichier pro- tg par mot de passe (ouverture, premire lec- ture, ...). Le mot de passe na pas t spcifi par programmation : une erreur de mot de passe sur- vient. Gestion assiste par dfaut (WinDev et WebDev) Lorsquune erreur de mot de passe est dtecte, une fentre ou une page saffiche, permettant lutilisateur de saisir le mot de passe du fichier. Traitement de lerreur (WinDev Mobile) Testez la fonction HErreurMotDePasse aprs chaque fonction HyperFileSQL pouvant provoquer une erreur de mot de passe (HOuvre par exemple ou ds la premire fonction HyperFileSQL mani- pulant le fichier). Le libell exact de l'erreur peut tre connu avec la fonction HErreurInfo. Erreur de conflit de modification et de conflit d'tat de modification Cause de lerreur Lors de l'utilisation d'une application ou dun site en rseau, des conflits peuvent survenir suite la saisie de donnes contradictoires par diff- rents utilisateurs ou internautes. Par exemple : 1. Lutilisateur / linternaute X dite la fiche du dpartement "Cantal". 2. Lutilisateur / linternaute Y dite la fiche du dpartement "Cantal". 3. Lutilisateur / linternaute X renomme le dpar- tement en "Cantal_01". 4. Lutilisateur / linternaute Y modifie le nom du dpartement ("Cantal_02") et enregistre. Lors de cet enregistrement, il y a un conflit de modifica- tion. WLangage.book Page 377 Mardi, 23. avril 2013 1:59 13 378 Partie 7 : Gestion des fichiers de donnes Un conflit de modification apparat. Un conflit d'tat de modification apparat par exemple si l'utilisateur / linternaute X supprime la fiche. Les diffrents cas sont rcapituls dans le tableau suivant : Gestion assiste par dfaut (WinDev et WebDev) En cas de conflit lors de la modification dun enregistrement, une fentre ou une page appa- rat, proposant lutilisateur les diffrentes valeurs possibles pour lenregistrement : la valeur lue dans le fichier (avant modification) la valeur modifie par un autre utilisateur, la valeur saisie par lutilisateur en cours. Lutilisateur peut alors choisir la valeur de la rubri- que qui sera enregistre. En cas de conflit d'tat lors de la modification dun enregistrement, une fentre apparat, proposant lutilisateur : soit de ractiver les donnes supprimes, soit de laisser les donnes dans leur tat. Lutilisateur peut alors choisir la valeur de la rubri- que qui sera enregistre. Traitement de lerreur (WinDev Mobile) Pour les erreurs de conflits de modification, tes- tez la fonction HErreurModification aprs chaque fonction HyperFileSQL pouvant provoquer cette erreur (par exemple HModifie). Le libell exact de l'erreur peut tre connu avec la fonction HErreu- rInfo. Pour les erreurs de conflit d'tat de modification, testez la fonction HErreurEtatModification aprs chaque fonction HyperFileSQL pouvant provoquer cette erreur (par exemple HModifie). Le libell exact de l'erreur peut tre connu avec la fonction HErreurInfo. Erreur de blocage Cause de lerreur Dans une application rseau ou dans un site, il est possible de bloquer un enregistrement ou un fichier (pour effectuer des oprations spcifiques par exemple). Lorsqu'un poste tente d'accder un enregistrement bloqu, une erreur de blocage apparat. Gestion assiste par dfaut (WinDev ou Web- Dev) En cas derreur de blocage, la gestion des bloca- ges (vrification si le fichier est bloqu, traite- ment du blocage) est automatiquement ralise par le moteur HyperFileSQL. Une fentre ou une page apparat, indiquant lutilisateur que lenregistrement ou le fichier est bloqu et lui proposant de retenter lopration ou de lannuler. En cas dannulation, lapplication continue de sexcuter normalement. Traitement de lerreur (WinDev Mobile) Testez la fonction HErreurBlocage aprs chaque fonction HyperFileSQL pouvant provoquer une erreur de blocage. Saisie obligatoire (base de donnes accde par OLE DB) Cause de lerreur Certaines rubriques manipules attendent obli- gatoirement une valeur. Si cette valeur n'a pas t renseigne, une erreur de saisie obligatoire apparat. Gestion assiste par dfaut (WinDev et WebDev) En cas de valeur non renseigne, la gestion de saisie obligatoire est automatiquement ralise par le moteur HyperFileSQL. Une fentre ou une page apparat, indiquant lutilisateur que la rubrique doit tre renseigne et lui propose de saisir la valeur de la rubrique. Traitement de lerreur (WinDev Mobile) Le numro derreur associ ce problme est 70710 : Valeur de rubrique obligatoire. Ces numros derreurs peuvent tre connus avec la fonction HErreur. Rindexation en cours Cause de lerreur Le fichier manipul est actuellement en cours de rindexation. Il est impossible de manipuler le fichier (lecture, criture, ...) pendant cette rin- dexation. Enregistrement lu Enregistre- ment sur disque Actif Ray Supprim Actif Conflit de modifica- tion Conflit de modification Conflit de modifica- tion Ray Conflit d'tat de modifica- tion Conflit de modification Conflit de modifica- tion Supprim Conflit d'tat de modifica- tion Conflit d'tat de modification XXXX WLangage.book Page 378 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 379 Gestion assiste par dfaut (WinDev ou WebDev) Une fentre ou une page apparat, indiquant que le fichier est en cours de rindexation (appele aussi rorganisation). Cette fentre ou page est affiche pendant toute la dure de la rindexa- tion et ne peut tre ferme. Une jauge de pro- gression indique l'tat de la rindexation. Traitement de lerreur (WinDev Mobile) Le numro derreur associ ce problme est 70720 : Une rindexation est en cours sur le fichier. Ces numros derreurs peuvent tre connus avec la fonction HErreur. 4.4.3 Personnalisation Les diffrentes solutions WinDev, WebDev, WinDev Mobile offrent la possibi- lit de personnaliser la gestion des erreurs HyperFi- leSQL. Il est possible d'utiliser des procdures personnali- ses. Une procdure spcifique de votre application est automatiquement excute ds qu'une erreur HyperFileSQL est rencontre. Remarque : Il est possible de dfinir une procdure pour chaque fichier et chaque type d'erreur. WinDev / WebDev offrent galement la possibilit d'utiliser des fentres ou des pages personnalises : les fentres / pages standard du moteur HyperFileSQL sont remplaces par des fentres / pages de votre application. Remarque : il est possible de dfinir une fentre / page pour chaque fichier et chaque type d'erreur. Mise en place Pour mettre en place la personnalisation de la ges- tion assiste des erreurs HyperFileSQL, il suffit de : 1. Pour chaque type derreur, crer la procdure, la fentre ou la page permettant de personnaliser lerreur. Une mme fentre, page ou procdure peut grer plusieurs types derreurs. Cette fentre, page ou procdure doit renvoyer une constante spcifique en fonction du traitement excuter (voir paragraphe ci-dessous). 2. Dfinir la personnalisation des erreurs avec la fonction HSurErreur. Exemples de fentres ou de pages facilement intgrables (WinDev et WebDev) Les fentres / pages derreur utilises par dfaut et prsentes dans les paragraphes prcdents sont livres (avec leur code WLangage) titre dexem- ple. Ces fentres sont disponibles dans le sous-rper- toire "Programmes\Donnees\Fentres prdfi- nies\HyperFileSQL - Fenetres assistance automatique" du rpertoire dinstallation de Win- Dev. Ces pages sont disponibles dans le sous-rpertoire "Programmes\Donnees\Pages prdfinies\Hyper- FileSQL - Pages assistance automatique" du rper- toire dinstallation de WebDev. Vous pouvez inclure ces fentres / pages dans vos projets, les personnaliser et les passer en param- tre la fonction HSurErreur. Constantes utilises pour la person- nalisation des erreurs La fentre, la page ou la procdure permettant de personnaliser l'erreur devra renvoyer une des cons- tantes prsentes dans le tableau ci-dessous. Le traitement correspondant sera effectu en fonc- tion de la constante renvoye. opRessayer La fonction ayant dclench l'erreur est r-excute. OpAnnuler La fonction ayant dclench l'erreur renvoie une erreur et le code continue s'excuter. OpFinTraite- ment La fonction ayant dclench l'erreur renvoie une erreur et le traitement en cours s'arrte. quivalent une ligne de code de type : SI PAS <Fonction HyperFileSQL> ALORS RepriseSaisie() OpFinPro- gramme La fonction ayant dclench l'erreur renvoie une erreur et le programme s'arrte. quivalent une ligne de code de type : SI PAS <Fonction HyperFileSQL> ALORS FinProgramme() OpRelancePro- gramme Termine lapplication et relance automatiquement lapplication WLangage.book Page 379 Mardi, 23. avril 2013 1:59 13 380 Partie 7 : Gestion des fichiers de donnes Remarque : Personnalisation des erreurs de modification : Si la fentre, la page ou la procdure appele lors du conflit de modification renvoie la constante opRessayer sans rien faire d'autre, les valeurs seront crites dans le fichier sans provoquer un nouveau conflit de modification. 4.4.4 Dbrancher la gestion assiste (Win- Dev et WebDev) WinDev et WebDev offrent la possibilit de dbran- cher entirement le systme de gestion automati- que des erreurs. Dans ce cas, il est ncessaire de tester dans lapplication les diffrents cas derreurs pouvant survenir. Si ce test nest pas ralis, une erreur WLangage est gnre et lapplication sarrte. Mise en place Pour dbrancher compltement la gestion automa- tique des erreurs, il suffit dutiliser la fonction HSu- rErreur en spcifiant une chane vide en nom de fentre ou de procdure. Dans ce cas, il est alors ncessaire de tester aprs chaque fonction HyperFileSQL pouvant provoquer une erreur, une ou plusieurs des fonctions suivantes : Le libell exact de lerreur peut tre alors connu avec la fonction HErreurInfo. Il est possible de rebrancher la gestion assiste grce la fonction HSurErreur. Remarque : Pour les autres erreurs (modification, saisie obligatoire, rindexation en cours), aucun test n'est ncessaire. Les numros d'erreurs asso- cis ces problmes sont : 70700 : Conflit de modification 70710 : Valeur de rubrique obligatoire 70720 : Une r-indexation est en cours sur le fichier Ces numros d'erreurs peuvent tre connus avec la fonction HErreur. HErreurBlocage Teste si une erreur de blo- cage est survenue. HErreurDoublon Teste si une erreur de dou- blons est survenue. HErreurIntgrit Teste si une erreur d'int- grit est survenue. HErreurMotDePasse Teste si une erreur due un mot de passe erron a t rencontre. WLangage.book Page 380 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 381 5. LES VUES HYPERFILESQL 5.1 Prsentation des vues HyperFileSQL Une "vue" est un ensemble denregistrements slectionns selon une condition de slection. Ces enregistrements proviennent dun fichier HyperFi- leSQL et sont chargs en mmoire. Une vue est un "instantan" pris un instant donn d'une partie d'une base de donnes. Une vue HyperFileSQL peut tre compare un fichier HyperFileSQL "virtuel" stock en mmoire. Ce fichier n'est pas physiquement stock sur dis- que mais il peut pratiquement tre utilis comme un fichier HyperFileSQL "rel". Une vue peut contenir des enregistrements issus d'un fichier HyperFileSQL selon des critres de slection. Les enregistrements d'une vue sont des enregistre- ments "virtuels". Un enregistrement virtuel se com- pose de certaines rubriques d'un fichier ou de toutes les rubriques. La cration d'une vue est une opration de lecture d'un fichier. Elle peut ventuellement tre accompagne d'une opration de blocage des enregistrements lus si ces enregistrements doivent tre modifis. Il est possible d'annuler toutes les modifications effectues sur une vue. Les modifications effec- tues sur une vue ne sont pas immdiatement rpercutes sur le fichier HyperFileSQL. Pour met- tre jour un fichier HyperFileSQL par rapport une vue, il faut explicitement en donner l'ordre par une fonction du WLangage. 5.2 Intrts des vues Les vues apportent : Plus de souplesse et de puissance pour les appli- cations ou les sites qui utilisent des fichiers HyperFileSQL Les possibilits de filtre et de tri sont fortement augmentes sur les vues. Une vue permet de faire un parcours sur fichier avec un filtre selon n'importe quelle rubrique et non plus selon la cl du filtre uniquement. Un niveau de scurit supplmentaire Les vues permettent de limiter l'accs un sous- ensemble de donnes prslectionnes. Un gain de rapidit Une vue est le rsultat d'une requte. Il s'agit donc d'un change de type client/serveur parti- culirement adapt aux rseaux sur lesquels c'est le nombre d'changes et non la taille des changes qui ralentit la communication. 5.3 Manipulation des vues Aprs leur cration, les vues se manipulent de la mme faon que les fichiers HyperFileSQL. La vue a un nom et peut tre utilise dans la majorit des fonctions HyperFileSQL. Il est par exemple possible de : parcourir une vue (fonctions HLitPremier, HLit- Suivant, etc.), ajouter des enregistrements dans une vue (fonc- tion HAjoute), raliser des filtres sur les enregistrements de la vue (fonction HFiltre), modifier des enregistrements (fonction HModi- fie), ... Les fonctions spcifiques la manipulation des vues sont les suivantes : HCreVue Cre une vue sur un fichier HyperFileSQL HCreVue_55 Cre une vue au format WinDev 5.5 / WebDev 1.5 (compatibilit uniquement) HDtruitVue Dtruit une vue prcdemment cre WLangage.book Page 381 Mardi, 23. avril 2013 1:59 13 382 Partie 7 : Gestion des fichiers de donnes Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, Win- Dev Mobile), consultez laide en ligne. 5.4 Cration de vues HyperFileSQL Comme nous l'avons indiqu prcdemment, une vue contient des enregistrements "virtuels" issus d'un fichier HyperFileSQL. Pour crer une vue, plusieurs tapes sont ncessaires : 1. Choix des rubriques composant la vue. 2. Choix de la rubrique de tri de la vue (si nces- saire). 3. Slection des enregistrements contenus dans la vue. 4. Cration de la vue. 5. Ralisation doprations ensemblistes si nces- saire. 6. Affichage des enregistrements de la vue si ncessaire. Les paragraphes suivants dtaillent chacune de ces tapes. Remarque : Il est possible de conserver le fonction- nement des vues prsent dans WinDev 5.5 / Web- Dev 1.5 (avec gestion dun identifiant de vue). Il suffit dutiliser la fonction HCreVue_55. 5.4.1 Choix des rubriques d'une vue Pour crer une vue, la premire tape consiste dterminer les rubriques que doit contenir la vue. Chaque vue est attache un fichier HyperFileSQL : le fichier de la vue. La vue peut contenir : toutes les rubriques du fichier, certaines rubriques du fichier. Toutes les rubriques du fichier Pour que la vue contienne toutes les rubriques du fichier, il suffit dutiliser la syntaxe suivante : <Rsultat> = HCreVue(<Nom Vue> <Nom Fichier>) <Nom Vue> est le nom de la vue cre. <Nom Fichier> est le nom logique du fichier de base de la vue. Exemple : Certaines rubriques du fichier Pour slectionner uniquement certaines rubriques du fichier, il faut utiliser la syntaxe suivante : <Rsultat> = HCreVue(<Nom Vue>,... <Nom Fichier>, <NomRubrique>) <Nom Vue> est le nom de la vue cre. <Nom Fichier> est le nom logique du fichier de base de la vue. <NomRubrique> est la liste des rubriques int- grer la vue. Les rubriques sont spares par une virgule dans cette chane de caractres. HExcuteVue Excute une vue cre prc- demment. Permet de mettre jour les donnes de la vue avec les dernires donnes modifies dans le fichier HyperFileSQL cor- respondant HFusionneVue Cre une vue HyperFileSQL partir de deux vues prcdem- ment cres (fonction HCre- Vue). Un grand nombre d'oprations ensemblistes peut tre ralis lors de la fusion des vues. HTrieVue Trie une vue en crant un index sur une rubrique de la vue HVueVersFi- chier Enregistre les modifications rali- ses dans une vue (grce aux fonctions HModifie, HSupprime ou HRaye) dans le fichier Hyper- FileSQL correspondant FichierVersTa- bleMmoire Affiche le contenu dune vue dans une table mmoire Externe MaVue1 NomFichier est une chaine="CLIENT" // Vue avec tous les // enregistrements de toutes les // rubriques du fichier HCreVue(MaVue1, NomFichier) WLangage.book Page 382 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 383 Exemple : 5.4.2 Choix de la rubrique de tri initial de la vue Lors de la cration d'une vue, il est possible de sp- cifier la rubrique de la vue qui servira de tri. Toutes les rubriques de la vue peuvent servir de tri. Une fois cre, la vue pourra tre retrie tout moment grce la fonction HTrieVue. Pour indiquer le tri initial, il faut utiliser la syntaxe suivante : <Rsultat> = HCreVue(<Nom Vue>, ... <Nom Fichier>,... <NomRubrique>, <RubriqueTri>) <Nom Vue> est le nom de la vue cre. <Nom Fichier> est le nom logique du fichier de base de la vue. <NomRubrique> est la liste des rubriques int- grer la vue. <RubriqueTri> est le nom de la rubrique de tri. Cette chane contient : Le sens du tri, avec les signes "+" (croissant, valeur par dfaut) ou "-" (dcroissant). Le nom de la rubrique de tri ou son indice de cration. Exemple : 5.4.3 Slection des enregistrements de la vue Lors de la cration d'une vue, il est possible de sp- cifier une condition de slection des enregistre- ments. La condition est applique chaque enregistre- ment avant de lintgrer la vue. Pour spcifier une condition de slection dans une vue, la syntaxe utilise est la suivante : <Rsultat> = HCreVue(<Nom Vue>, ... <Nom Fichier>, <NomRubrique>, ... <RubriqueTri>,<Condition>) <NomVue> est le nom de la vue cre. <Nom Fichier> est le nom logique du fichier de base de la vue. <NomRubrique> est la liste des rubriques int- grer la vue. <RubriqueTri> est le nom de la rubrique de tri. <Condition> est la condition de slection. Cette condition est contenue dans une chane de caractres utilisant une syntaxe de la forme suivante : "NomCli>'Dupont' et (CodePos=34 ou CodePos=32)" 5.4.4 Oprations ensemblistes entre plusieurs vues Lors de la cration des vues, il est possible d'effec- tuer un grand nombre d'oprations de slection sur les enregistrements. Toutefois, ces oprations peuvent se rvler insuffi- santes dans certains cas. La cration d'une vue peut alors se faire partir d'autres vues dj cres. Pour cela, il est possible d'utiliser les principales oprations ensemblistes classiques : union, union exclusive, intersection, soustraction. La syntaxe utiliser est la suivante : <Rsultat> =HFusionneVue(<Nom Vue>,... <NomVue1>,<NomVue2>,... Opration, RubriqueTriEtComparaison) <NomVue> est le nom de la vue cre. <NomVue1> est le nom de la premire vue. <NomVue2> est le nom de la seconde vue. <Opration> est une des constantes permettant de dterminer le type dopration raliser : hVueUnion : union de toutes les lignes des vues A et B hVueUnionEx : union de toutes les lignes non communes des vues A et B Externe MaVue1 NomFichier est une chaine="CLIENT" RubriqueVue est une chane= ... "NOM,PRENOM,ADRESSE" // Vue contenant les enregistrements // des rubriques Nom, Prnom, // Adresse HCreVue(MaVue1, NomFichier, ... RubriqueVue) Externe MaVue1 NomFichier est une chane="CLIENT" RubriquesVue est une chane RubriqueTri est une chane RubriquesVue=... "NOM,PRENOM,ADRESSE,CODEPOST" RubriqueTri="-NOM" //OU RubTri="-1" // Vue contenant les // enregistrements // des rubriques Nom, Prnom, // Adresse // et code postal du fichier// Trie initialement dans l'ordre // inverse des noms HCreVue(MaVue1, NomFichier,... RubriquesVue,RubriqueTri) WLangage.book Page 383 Mardi, 23. avril 2013 1:59 13 384 Partie 7 : Gestion des fichiers de donnes hVueIntersection : lignes communes A et B hVueJointure : lignes communes A et B hVueSoustraction : lignes de A - les lignes com- munes avec B <RubriqueTriEtComparaison> est une chane contenant l'indice de la rubrique de comparaison entre les deux vues. Cette rubrique est gale- ment la rubrique de tri initial de la vue cre. Important : Le fichier de la vue gnre par une opration ensembliste sur deux autres vues est le fichier de la premire vue passe en paramtre la fonction HCreVue. Remarque : Les oprations ensemblistes permet- tent d'effectuer des traitements plus rapides que certaines conditions de slection. Par exemple, l'union est privilgier par rapport au OU dans la condition du HCreVue. WLangage.book Page 384 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 385 6. LES TRIGGERS HYPERFILESQL 6.1 Prsentation 6.1.1 Dfinition Un trigger correspond lassociation dune proc- dure et dune fonction dcriture sur un fichier HyperFileSQL. Les triggers permettent dexcuter facilement des traitements lors de la modification dun enregistre- ment. Les procdures appeles par lintermdiaire des triggers peuvent tre excutes avant ou aprs lopration dcriture ralise sur le fichier. Un trigger AVANT est appel avant d'excuter une fonction HyperFileSQL. Il peut par exemple vrifier la cohrence des rubriques d'un enregistrement. Dans ce trigger, une variable d'tat HyperFileSQL peut tre initialise pour annuler l'excution de la fonction. Un trigger APRES est appel aprs l'excution de la fonction HyperFileSQL (sauf si le programme a t interrompu pendant cette fonction). Il peut par exemple centraliser le traitement des erreurs. Remarque : Trigger sur les fonctions de manipula- tion des tables : Les fonctions de manipulation des tables (TableAjoute, TableAjouteLigne, TableSup- prime, TableModifie, TableEnregistre, ... ) utilisent implicitement les fonctions HyperFileSQL suivantes : HAjoute, HSupprime et HModifie. Lors de l'utilisation de l'une de ces fonctions de manipulation de table, si un trigger est dfini pour la fonction HyperFileSQL correspondante, le trigger est automatiquement dclench. 6.1.2 Intrt des triggers Les triggers permettent d'associer des traitements toutes les fonctions HyperFileSQL de gestion de fichiers sans se proccuper de l'emplacement de ces fonctions dans le code source. Mme s'il s'agit d'une fentre, dune page ou d'un code cr par un assistant, les triggers associs aux fonctions HyperFileSQL utilises seront excu- ts. L'utilisation de triggers permet de diminuer la taille du code, de faciliter sa lecture et de faciliter les volutions futures, par regroupement des traite- ments. Pour plus dinformations, le schma de la page sui- vante prsente le mode de fonctionnement dtaill des triggers. Remarque : Les triggers sont galement disponi- bles en mode HyperFileSQL Client/Serveur. 6.2 Comment crer et manipuler des triggers ? 6.2.1 Fonctions de manipulation des triggers Les fonctions spcifiques la gestion des triggers sont les suivantes : HActiveTrigger Ractive un trigger prcdem- ment dsactiv par la fonction HDsactiveTrigger HDcritTrigger Ajoute ou modifie un trigger sur un fichier HyperFileSQL HDsactiveTrig- ger Dsactive un trigger. Ce trigger pourra ensuite tre ractiv grce la fonction HActiveTrig- ger HDtruitTrigger Dtruit un trigger. Ce trigger ne sera plus utilisable HGreTrigger Active ou dsactive la gestion des triggers HListeTrigger Renvoie la liste des triggers appliqus sur un ou plusieurs fichiers de donnes Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. Les fonctions pour manipuler les triggers sur le serveur sont identiques et ont dans leur nom "Serveur". WLangage.book Page 385 Mardi, 23. avril 2013 1:59 13 386 Partie 7 : Gestion des fichiers de donnes 6.2.2 Manipuler des triggers Crer un trigger Un trigger "avant" ou "aprs" est cr grce la fonction HDcritTrigger, dans le code d'initialisa- tion du projet. Le trigger peut tre cr sur un ou plusieurs fichiers de l'analyse et pour une ou plusieurs fonctions HyperFileSQL de manipulation des enregistre- ments. A chaque excution du trigger, une procdure spci- fique est excute. Pour crer un trigger, il suffit dutiliser la syntaxe suivante : <Rsultat> = HDcritTrigger (<NomFichier>, <NomFonctionHF>,... <NomProcdure>, <Type>) <NomFichier> correspond au nom logique des fichiers concerns par un traitement gr par trigger. <NomFonctionHF> correspond au nom des fonc- tions du WLangage dclenchant le trigger. <NomProcdure> correspond la procdure associe appele par trigger. <Type> permet de dterminer le type de trigger ("avant" ou "aprs"). Crer une procdure appele par trigger Une procdure de type "trigger" naccepte aucun paramtre. Toutefois, un certain nombre de variables d'tat HyperFileSQL sont positionnes avant chaque appel : h.NomFichier : chane contenant le nom logique du fichier dont le trigger est activ. h.Action : caractre initialis "A" pour un trigger "avant" et "P" pour un trigger "aprs". h.FonctionTrigger : chane contenant le nom de la fonction HyperFileSQL qui a dclench le trigger, uniquement si la gestion de l'intgrit est dbran- che. h.AFaire : Pendant l'excution d'un trigger avant : annulation de l'excution de la fonction Hyper File en cours en affectant "A" la variable d'tat Hyper File : H.AFaire = "A". Dans ce cas, l'action n'est pas effectue et la fonction (HAjoute, HModifie, ) renvoie Vrai (pas d'erreur). annulation de l'excution de la fonction Hyper File en cours en affectant "E" la variable d'tat Hyper File : H.AFaire = "E". Dans ce cas, l'action n'est pas effectue (HAjoute, HModifie, ) n'est pas effectue et renvoie Faux. Le mes- sage d'erreur est le suivant : "L'action sur le fichier XXX a t interrompue par le trigger". Activer / Dsactiver un trigger Il est possible tout moment de lancer un traite- ment permettant d'activer ou de dsactiver une vrification ralise par un trigger. Pour dsactiver temporairement un trigger parti- culier, il faut utiliser la syntaxe : <Rsultat>=HDsactiveTrigger([<ListeFichie- rHF> [, <ListeFonctionHF>]] [, <Type>]) Dtruire un trigger La fonction HDetruitTrigger permet de dtruire un ou plusieurs triggers grce la syntaxe suivante : <Rsultat>=HDtruitTrigger([<ListeFichie- rHF> [, <ListeFonctionHF>]] [, <Type>]) WLangage.book Page 386 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 387 7. LA RPLICATION DE DONNES 7.1 Prsentation de la rplication 7.1.1 Prsentation La rplication des donnes est une fonctionnalit trs puissante. La rplication est l'opration per- mettant de maintenir jour des bases de donnes distantes de structures identiques. Chacune de ces bases de donnes volue indpendamment. Grce la rplication, les oprations effectues sur cha- cune des bases de donnes sont reportes sur tou- tes les autres bases de donnes. WinDev / WebDev permet de raliser ces opra- tions simplement. WinDev / WebDev propose deux types de rplication : La rplication journale (base sur la journalisa- tion). Ce type de rplication permet de rpliquer uniquement des bases de donnes HyperFileSQL entre elles. Ce type de rplication peut tre mis en place grce aux fonctions WLangage ou loutil WDReplic. La rplication universelle qui permet de rpliquer nimporte quel type de base de donnes (par exemple une base de donnes HyperFileSQL avec une base de donnes Oracle). La rplication universelle peut tre mise en place simplement grce la rplication universelle assiste. Nous ne prsenterons ici que la rplication univer- selle. 7.1.2 Vocabulaire spcifique la rplication Bases de donnes La rplication distingue deux types de bases de donnes : base de donnes matre C'est la base de donnes de rfrence. Sur cette base de donnes sont effectues toutes les mises jour : modifications effectues par l'application ex- cute sur ce poste. modifications effectues sur les postes dis- tants et transmises par la rplication la base de donnes rplica ou abonne Cette base de donnes distante est identique la base de donnes "Matre". Sur cette base de donnes sont appliques les modifications effec- tues par le poste distant. La rplication trans- met ces modifications la base de donnes "Matre". Type de rplication Deux types de rplication peuvent tre mises en place : Rplication mono-directionnelle : Ce type de rplication consiste effectuer uni- quement une mise jour de la base de donnes "Matre" vers les bases de donnes "Abonnes", ou bien d'une base de donnes "abonne" vers la base de donnes "Matre". Rplication bi-directionnelle : Ce type de rplication consiste effectuer une mise jour de la base de donnes "Matre" vers les bases de donnes "Abonnes" et des bases de donnes "Abonnes" vers la base de donnes "Matre". Fichiers crs lors d'une rplication La rplication universelle utilise plusieurs types de fichiers : Fichier .RPM: fichier permettant de dcrire une base matre, et les bases qui lui sont abonnes. Fichier .RPL : fichier dcrivant une base abon- ne. Pour chaque base abonne, un fichier RPL est cr. Ce fichier est prsent sur le poste abonn. Fichier .RPA : fichier journal contenant les infor- mations de rplication. Ce fichier est chang entre la base de donnes matre et la base de donnes abonne. Fichier .SYN : fichier contenant les informations sur la situation de la base distant. Ce fichier per- met d'optimiser la taille des fichiers de synchroni- sation. Ce fichier est prsent sur le poste matre et sur chaque poste abonn. 7.1.3 Remarque Pour mettre en place la rplication universelle sur des bases de donnes diffrentes de HyperFi- leSQL, il est obligatoire de crer une rubrique de type DateHeure dans chaque fichier. Cette rubrique sera mise jour par l'application lors de la modifi- cation ou lors de l'ajout d'un enregistrement. Si les bases de donnes utilisent diffrents fuseaux horaires, il est conseill d'utiliser un format univer- sel (date et heure GMT par exemple). WLangage.book Page 387 Mardi, 23. avril 2013 1:59 13 388 Partie 7 : Gestion des fichiers de donnes 7.2 Mettre en place la rplication universelle 7.2.1 Activation Pour activer la rplication universelle, il suffit d'utili- ser la fonction HGreRplication avec le paramtre rplRplicationUniverselle. Cette fonction permet de dsactiver le mode de rplication standard (s'il tait actif) et d'activer la rplication universelle. 7.2.2 Dclaration de la base matre Cette opration n'est faire qu'une seule fois sur la base matre. Pour dclarer la base matre, il suffit d'utiliser la fonction HCreRplicaMatre. Remarque : Si le rpertoire courant permet de stoc- ker des donnes, la ligne de code suivante peut tre utilise : Cette ligne de code cre le fichier RplicaMa- tre.RPM sur le disque. Il ne reste plus qu' inscrire les abonns dans ce fichier. 7.2.3 Dclaration des bases abonnes Cette opration n'est faire qu'une seule fois pour chaque base abonne. Cette opration doit tre effectue sur la base matre. Pour dclarer un nouvel abonn, utilisez la fonction HCreRplicaAbonn. Cette fonction cre un abonn (fichier RPL) avec le nom fournit. Cette fonction renvoie galement un numro d'abonn. Remarque : la fonction HCreRplicaAbonn uti- lise des paramtres spcifiques pour la rplication universelle. Pour plus de dtails, consultez l'aide de la fonction. 7.3 Rplication entre des bases htrognes La fonction HCreRplicaTransportable cre un fichier journal (fichier .RPA). Ce fichier journal est transmis et excut grce la fonction HSynchroniseRplica. Attention : Par dfaut lors de la synchronisation (HSynchroniseRplica), le matre est prioritaire : dans le cas d'une rplication abonn vers matre, les donnes du matre ne seront pas mises jour. Pensez utiliser une autre constante (rplPlusR- centPrioritaire par exemple). Deux fonctions spcifiques peuvent galement tre utilises : Remarques : Les changes de fichiers ".RPA" ne sont pas obli- gatoirement symtriques : il est possible de crer et d'excuter plusieurs journaux dans un sens sans crer ni excuter un seul journal dans l'autre sens. Cependant, pour optimiser les per- formances, il est conseill d'viter d'effectuer des changes toujours dans le mme sens. La rplication respecte les filtres poss sur les tables ou les fichiers (sauf dans le cas de liaisons, pour respecter l'intgrit). Un filtre peut tre mis en place du ct du matre : les abonns recevront alors un sous- ensemble des donnes de la base matre. Dans ce cas, il n'est pas ncessaire de mettre en place un filtre du ct de la base abonne. Si par le filtre, un enregistrement n'est plus "visi- ble" sur la base de donnes matre, cet enregis- trement sera considr comme supprim. Il sera alors automatiquement supprim sur le poste abonn. HCreRplicaMatre("") HRplDclareLiaison Permet de signaler au moteur de rplication une liaison entre deux fichiers. Le moteur suivra alors la liaison pour obtenir la liste des enre- gistrements rpliquer dans le second fichier. HRplGestionFichier Dfinit les options utili- ses pour la rplication universelle d'un fichier. HRplGestionRubri- que Dfinit les options utili- ses pour la rplication universelle d'une rubri- que. HRplProcdureFil- tre Permet de spcifier une pro- cdure de filtrage spcifique lorsquun fichier donn sera rpliqu. WLangage.book Page 388 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 389 7.4 Limitations Les limitations sont les suivantes : Chaque fichier ou table doit avoir au moins une rubrique cl unique. Il est ncessaire de pouvoir dater un enregistre- ment. Si la rubrique permettant de dater l'enre- gistrement est remplie automatiquement par un trigger, ce trigger doit tre dsactiv durant l'ex- cution de la fonction HSynchroniseRplica (pour viter de remplir cette rubrique avec la date de rplication). La rplication n'ouvre pas les fichiers ou les tables. Les fichiers ou les tables doivent avoir t ouverts par le programme avant de lancer la rplication. Pendant la rplication, l'occupation mmoire peut tre trs importante. Il est donc conseill de ne rpliquer que les enregistrements ncessaires vers un poste abonn. Attention : cas spcifique : une partie seulement des tables relies ne sont pas rpliques. Dans ce cas, la rplication rejoue parfois certai- nes modifications comme un couple {ajout, sup- pression}. Si une table (non rplique) est relie avec l'option de modifications en cascade, les enregistrements relis risquent d'tre supprims abusivement. WLangage.book Page 389 Mardi, 23. avril 2013 1:59 13 390 Partie 7 : Gestion des fichiers de donnes 8. GESTION DE FICHIERS EN "BACK OFFICE" 8.1 Prsentation La plupart des sites interactifs diffuss sur Internet sont destins fonctionner en parallle dapplica- tions dites traditionnelles, excutes en gnral sous Windows. Pour un site de commerce lectronique par exemple : le "Front Office" consistera dans la partie Inter- net, en la prsentation des produits et prise de commandes. le "Back Office" consistera en la gestion des ven- tes ralises : bons de livraison, factures, bons de rparation, statistiques, relances, ... Pour raliser les fonctions du "Back Office", lutilisa- tion de lAGL WinDev est conseille. WebDev offre plusieurs possibilits pour grer le "Back Office" : la mise jour par email, laccs distant sur HyperFileSQL, la rplication. 8.2 La mise jour par email Lopration consiste synchroniser deux bases de donnes, la base de donnes de lapplication "Back Office" et la base de donnes de lapplication "Front Office", par un envoi demails et une proc- dure de lecture des emails. Lapplication "Front Office" envoie un email cha- que modification de la base de donnes. Lapplication "Back Office" lit automatiquement la messagerie intervalles rguliers afin de mettre jour la base de donnes centrale. 8.3 Laccs distant sur Hyper File 8.3.1 Dfinition L'accs distant permet de consulter une base de donnes HyperFileSQL via Internet/Intranet ou mme via RTC (Rseau Tlphonique Commut). Trois modes dutilisation se distinguent : Mode 1 : Une application "Back Office" interroge la base de donnes situe sur le serveur WEB (o se trouve le site WebDev). Mode 2 : Le serveur WEB accde une base de donnes situe sur le poste de lapplication "Back Office". Mode 3 : Un site WebDev situ sur un serveur A interroge la base de donnes situes sur un serveur B (o se trouve un autre site WebDev). Les fonctions du WLangage spcifiques la gestion de laccs distant sont : HOuvreAnalyse et HCon- necteAccsDistant. 8.3.2 Dtail des trois modes dutilisation Mode 1 : Application "Back Office" WinDev et base de donnes sur le serveur WEB La base de donnes est situe sur le serveur WEB. La base de donnes est mise jour directement par le site WebDev lors des actions des internau- tes. Les utilisateurs de lapplication "Back Office" inter- rogent et mettent jour la base de donnes partir de lapplication WinDev. Lapplication "Back Office" dialogue avec la base de donnes grce laccs distant. Remarque : Lapplication "Back Office" WinDev peut tre accessible sur un serveur applicatif (cas du schma) ou diffuse sur les postes des diff- rents utilisateurs. Dans ce cas, chaque utilisateur lance un accs distant. WLangage.book Page 390 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 391 Mode 2 : Base de donnes sur le poste de lapplication "Back Office" WinDev La base de donnes est situe sur le poste de lapplication WinDev. La base de donnes est mise jour par le site WebDev lors des actions des inter- nautes grce laccs distant. Les utilisateurs de lapplication "Back Office" inter- rogent et mettent jour la base de donnes direc- tement partir de lapplication WinDev. Mode 3 : Deux sites WebDev sur deux serveurs distants pour une seule base de donnes Selon le site auquel se connectent les internautes, la base de donnes est mise jour : soit directement par le site WebDev situ sur le mme poste. soit depuis le site WebDev grce laccs distant (consultez laide en ligne pour plus de dtails). 8.4 La rplication de donnes 8.4.1 Prsentation La rplication des donnes est une fonctionnalit trs puissante. La rplication est l'opration per- mettant de maintenir jour des bases de donnes distantes de structures identiques. Chacune de ces bases de donnes volue indpendamment : des oprations diffrentes sont effectues sur ces bases de donnes. Grce la rplication, les oprations effectues sur chacune des bases de donnes sont reportes sur toutes les autres bases de donnes. La rplication de donnes peut trs simplement tre applique un site WebDev. Dans ce cas, la rplication permet de maintenir jour : la base de donnes situe sur le serveur WEB, utilise par le site WebDev. la base de donnes situe au sige de la socit et utilise par une application WinDev de "Back Office" par exemple. Prenons un exemple classique d'utilisation de la rplication des donnes : Une entreprise permet de saisir des commandes par deux techniques : directement sur le site Internet de lentreprise : le client saisi directement sa commande en indi- quant ses coordonnes et les produits comman- ds. par les commerciaux, qui utilisent une applica- tion de prise de commandes sous Windows. Cette application est utilise au sige de la socit, en tant quapplication de "Back Office". Dans cet exemple : le fichier "Commande" : prsent sur le serveur WEB contient unique- ment les commandes saisies par les clients uti- lisant le site Internet. prsent au sige de la socit contient unique- ment les commandes saisies par les commer- ciaux. Il est donc ncessaire de mettre jour la base de donnes du sige avec les commandes ralises sur le site. le fichier "Produit" : prsent sur le serveur WEB doit contenir toutes les rfrences des produits. prsent au sige de la socit peut voluer, pre- nant en compte les nouveaux produits. Il est donc ncessaire de mettre jour la base de donnes du site WebDev avec les nouveaux pro- duits. Grce la rplication, le site WebDev prsent sur le serveur WEB et lapplication WinDev prsente au sige de la socit ont chacune leur propre base de donnes complte. La base de donnes du site WebDev (ou rplica) est identique la base de donnes "matre", lors de son initialisation. Rgulirement, une "Synchronisation" de ces bases de donnes permet de prendre en compte les modifications effectues sur chacune des diffren- tes bases de donnes. 8.4.2 Mise en place de la rplication Pour plus de dtails, consultez le chapitre La rpli- cation de donnes, page 387 et laide en ligne. WLangage.book Page 391 Mardi, 23. avril 2013 1:59 13 392 Partie 7 : Gestion des fichiers de donnes 9. ACCS AUX BASES TIERCES 9.1 Prsentation Il existe diffrents modes d'excution des requtes SQL en fonction du type d'accs effectu la base de donnes. Accs une base de donnes HyperFileSQL (dif- fusion libre et gratuite avec vos applications Win- Dev et vos sites WebDev) : Aucune contrainte d'installation. Les fonctions SQL et HyperFileSQL (HLitxxx, ...) peuvent tre utilises avec ce type d'accs. Accs par un accs natif : Accs natif Oracle, SQL Server, AS/400, ... Pour chaque type d'accs natif, il est ncessaire de possder un module complmentaire. Contac- tez le service commercial pour les dlais de dis- ponibilit sur votre base de donnes. Pour les accs de type Oracle ou SQL Server, il est ncessaire d'installer la couche client sur le poste de l'utilisateur. Les fonctions SQL et HyperFileSQL (HLitxxx, ) peuvent tre utilises avec ce type d'accs. Ce type d'accs est plus rapide que les accs par ODBC ou par un provider OLE DB. Accs par un driver ODBC direct : Les caractristiques de la connexion la base de donnes doivent tre dfinies dans l'administra- teur ODBC de Windows. Seules les fonctions de type SQL sont utilisables pour ce type d'accs. Les fonctions HyperFileSQL (HLitxxx, ...) ne sont pas utilisables. Accs ODBC via le provider OLE DB : Ce type d'accs utilise un provider OLE DB spci- fique. Ce type d'accs est dconseill car plus lent qu'un accs par un driver ODBC. En effet, les performances sont moins bonnes que par un dri- ver ODBC direct car l'accs se fait la fois par le driver ODBC et par le provider OLE DB. Les fonctions HyperFileSQL (HLitxxx, ...) et SQL peuvent tre utilises avec ce type d'accs. Il est ncessaire de dfinir les caractristiques de la connexion la base de donnes dans l'administrateur ODBC de Windows. Le provider ainsi que MDAC 2.6 (ou suprieur) doivent tre installs sur le poste. Accs par un provider OLE DB : Ce type d'accs utilise un provider OLE DB. Le provider ainsi que MDAC 2.6 (ou suprieur) doi- vent tre installs sur le poste. Les fonctions SQL et HyperFileSQL (HLitxxx, ...) peuvent tre utilises avec ce type d'accs. 9.2 Particularits Accs xBase possible via HyperFileSQL : Des fonctions spcifiques xBase sont utilisa- bles en plus des fonctions classiques HyperFi- leSQL (HDBOuvre, ). Fichiers ASCII : Utilisez les fonctions du WLangage spcifiques aux fichiers externes (fOuvre, fLit, fEcrit, ). Fichiers INI : Utilisez les fonctions du WLangage spcifiques aux fichiers INI (IniLit, IniEcrit, ). Gestion de la base de registres : Utilisez les fonctions du WLangage spcifiques la base de registres (RegistreLit, RegistreEcrit, ). 9.3 Fonctions de gestion des bases de donnes tierces Pour plus de dtails sur les diffrentes fonctions utiliser pour grer une base de donnes tierce (con- nexion la base, excution dune requte, blocage des enregistrements, ...), consultez laide en ligne. WLangage.book Page 392 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 393 10. FONCTIONS HYPERFILESQL Les fonctions permettant de grer les fichiers HyperFileSQL sont les suivantes : EcranVersFichier Initialise automatiquement la valeur mmoire des rubriques d'un fichier avec la valeur des champs de la fentre EspaceSignificatif Ajoute ou supprime les espaces situs droite d'une rubrique texte lors de sa lecture FichierVersEcran Initialise automatiquement les champs d'une fentre avec les valeurs des rubriques associes dans l'enregistrement en cours (charg en mmoire) du fichier HyperFi- leSQL FichierVersPage Initialise automatiquement les champs d'une page avec les valeurs des rubriques associes dans l'enregistrement en cours (charg en mmoire) du fichier HyperFi- leSQL HAcclreVitesse Rorganise la structure interne des index pour optimiser la vitesse d'accs aux don- nes HActiveFiltre Active le filtre prcdemment cr pour le fichier spcifi HActiveFiltreAuto Active un filtre automatique sur les fichiers relis lors du parcours d'un fichier XML HActiveTrigger Ractive un trigger prcdemment dsactiv avec la fonction HDsactiveTrigger HAjoute Ajoute l'enregistrement prsent en mmoire dans le fichier de donnes HAlias Cre un alias logique d'un fichier ou annule tous les alias existants HAnnuleAlias Annule un alias prcdemment dclar avec la fonction HAlias HAnnuleDclaration Supprime une dclaration prcdemment faite avec HDclare, HDclareExterne ou HDcritFichier HAnnuleRecherche Annule le critre de recherche en cours HAttacheMmo Permet d'associer un fichier une rubrique de type mmo binaire HAvance Avance de plusieurs enregistrements dans le fichier, partir de la position en cours, selon une rubrique spcifie HBloqueFichier Bloque un fichier et restreint l'accs ce fichier pour les autres applications ou sites HBloqueNumEnr Bloque un enregistrement et restreint l'accs cet enregistrement pour les autres applications ou sites HChangeCl Change la rubrique de parcours HChangeConnexion Change la connexion une base de donnes utilise pour un fichier. Ce changement sera pris en compte la prochaine ouverture du fichier HChangeLocalisation Modifie le mode de recherche des fichiers de donnes HChangeNom Modifie le nom physique d'un fichier de donnes HChangeRep Modifie le chemin d'accs un fichier de donnes HChangeRepJNL Modifie le chemin d'accs un fichier journal (fichier JournalOpration et fichier JournalIdentification) HChangeRepRPL Modifie l'emplacement de la description du rplica abonn (fichier RPL). Cette fonc- tion doit tre utilise sur le poste abonn HConnecte Redfinit un ou plusieurs paramtres d'une connexion par accs natif ou par accs OLE DB sur une table spcifique ou sur un ensemble de tables HConnecteAccsDis- tant Ouvre une analyse au format HyperFileSQL via un accs distant HConstruitValCl Construit la valeur d'une cl compose pour raliser un filtre ou effectuer une recher- che HConstruitValClANSI Permet (sous une plateforme UNICODE, Pocket PC par exemple) de construire la valeur d'une cl compose pour enregistrer cette cl compose dans un fichier de donnes HyperFileSQL WLangage.book Page 393 Mardi, 23. avril 2013 1:59 13 394 Partie 7 : Gestion des fichiers de donnes HConvert Convertit une valeur numrique en une chane binaire pour effectuer une recherche sur une cl numrique HCopieEnreg Copie le contenu de l'enregistrement en cours (charg en mmoire) dans l'enregistre- ment en cours d'un autre fichier HCration Cre vide un fichier de donnes (fichier d'extension ".FIC") avec le fichier d'index et le fichier mmo si ncessaire HCrationSiInexistant Cre vide un fichier de donnes (si le fichier n'existe pas) ou ouvre un fichier (si le fichier existe) HCreReplicaAbonn Cre le fichier de description d'un rplica abonn (fichier ReplicaAbonne.RPL) HCreRplicaMatre Cre le fichier de description d'un rplica matre (fichier ReplicaMaitre.RPL) HCreRplicaTrans- portable Cre un fichier qui peut tre utilis pour rpliquer les donnes de la base de don- nes en cours vers une base de donnes distante (pour envoi par email ou disquette par exemple) HCreVue Cre une vue HyperFileSQL HDateEnreg Renvoie la date et l'heure de la dernire criture d'un enregistrement dans un fichier HyperFileSQL HDbloqueFichier Dbloque un fichier prcdemment bloqu avec la fonction HBloqueFichier HDbloqueNumEnr Dbloque un enregistrement HDclare Dclare une description de fichier (prsente dans une autre analyse) dans le projet en cours HDclareExterne Importe temporairement dans l'analyse en cours la description d'un fichier partir d'un fichier HyperFileSQL existant HDcritConnexion Dcrit une connexion temporaire HDcritFichier Dcrit un fichier de donnes temporaire HDcritIndexfullText Dcrit un index full-text dans un fichier de donnes cr par programmation. HDcritLiaison Dcrit une liaison temporaire entre deux fichiers HDcritRubrique Dcrit une rubrique d'un fichier de donnes temporaire HDcritTrigger Non disponible dans cette version HDernier Positionne sur le dernier enregistrement d'un fichier HDsactiveFiltre Dsactive temporairement un filtre sur un fichier (une vue ou une requte) HDsactiveFiltreAuto Dsactive un filtre automatique sur les fichiers relis lors du parcours d'un fichier XML HDsactiveTrigger Dsactive un trigger HDtruitTrigger Dtruit un trigger HDtruitVue Dtruit une vue prcdemment cre HEcrit crit un enregistrement dans le fichier de donnes sans mettre jour les index cor- respondants toutes les cls utilises dans le fichier HEnDehors Permet de savoir si l'enregistrement sur lequel on veut se positionner est en dehors du fichier, du filtre, de la vue ou de la requte HEnregistrementVer- sXML Rcupre la structure et la valeur de l'enregistrement en cours et les exporte dans une chane de caractres au format XML HErreur Renvoie le numro de la dernire erreur dclenche par le moteur HyperFileSQL HErreurBlocage Permet de tester si une erreur de blocage est survenue HErreurDoublon Permet de tester si une erreur de doublons est survenue HErreurEtatModifica- tion Renvoie l'tat d'un enregistrement lors d'un conflit de modification HErreurInfo Renvoie une information dtaille sur la dernire erreur dclenche par le moteur HyperFileSQL HErreurIntgrit Permet de tester si une erreur d'intgrit est survenue HErreurModification Renvoie la valeur d'une rubrique d'un enregistrement lors d'un conflit de modifica- tion WLangage.book Page 394 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 395 HErreurMotDePasse Permet de savoir si une erreur due un mot de passe erron a t rencontre sur ce fichier HEtat Permet de connatre l'tat d'un enregistrement HExcuteProcdure Excute une procdure ou une fonction stocke. HExcuteRequte Initialise une requte cre sous l'diteur de requtes et dclare cette requte au moteur HyperFileSQL HExcuteRequteSQL Initialise une requte crite en langage SQL et dclare cette requte au moteur HyperFileSQL HExcuteVue Excute une vue cre auparavant HExporteXML Exporte les enregistrements d'un fichier (HyperFileSQL ou OLEDB), d'une vue ou d'une requte dans un fichier XML HExtraitMmo Extrait le contenu d'une rubrique de type mmo binaire dans un fichier HFerme Ferme soit un fichier, soit tous les fichiers ouverts HFermeAnalyse Ferme l'analyse en cours HFermeConnexion Ferme une connexion une base de donnes HFichierExiste Permet de savoir si un fichier existe HFiltre Dfinit et active un filtre sur un fichier, une vue ou une requte HFiltreContient Dfinit et active un filtre de type "Contient" sur un fichier de donnes, une vue ou une requte. HFiltreCommencePar Dfinit et active un filtre de type "Commence par" sur un fichier, une vue ou une requte. Le filtre de type "Commence par" permet de slectionner tous les enregis- trements commenant par une suite de caractres dfinie HFiltreComprisEntre Dfinit et active un filtre de type "Compris entre" sur un fichier, une vue ou une requte. Le filtre de type "Compris Entre" permet de slectionner tous les enregistre- ments compris entre deux valeurs donnes HFiltreIdentique Dfinit et active un filtre permettant de rechercher la valeur exacte d'une rubrique de type chane. Ce filtre peut tre utilis sur un fichier, une vue ou une requte HFinInterditModif Dbloque un fichier qui a t bloqu avec la fonction HInterditModif HForceEcriture Force le systme d'exploitation du poste sur lequel les fichiers de donnes sont pr- sents crire les donnes directement sur le disque HFusionneVue Cre une vue HyperFileSQL partir de deux vues prcdemment cres HGreAccsDistant Dbranche temporairement l'accs distant pour accder des fichiers de donnes HyperFileSQL Classic prsents en local HGreDoublon Active ou dsactive la gestion des doublons sur une cl unique HGreIntgrit Active ou dsactive la gestion d'une contrainte d'intgrit sur une liaison d'un fichier HGreJournal Active ou dsactive la gestion du journal d'un fichier journalis HGreMmo Active ou dsactive la gestion des rubriques de type mmo HGreREP Active ou dsactive la gestion du fichier .REP HGreRplication Active ou dsactive temporairement la gestion de la rplication HGreServeur Permet de connatre et de modifier certains paramtrages du serveur. HGreTransaction Active ou dsactive la gestion des transactions HGreTrigger Active ou dsactive la gestion des triggers HHistoriqueModifica- tion Renvoie les modifications apportes une ou plusieurs rubriques d'un enregistre- ment donn. Le rsultat peut tre par exemple affich dans une liste ou une table afin de permettre l'utilisateur de visualiser les modifications effectues sur le fichier spcifi HImporteHF55 Importe un fichier Hyper File 5.5 dans un fichier au format HyperFileSQL Classic HImporteTexte Importe un fichier texte dans un fichier au format HyperFileSQL Classic HImporteXML Importe un fichier XML dans un fichier au format HyperFileSQL Classic HInfoAnalyse Renvoie des informations sur une analyse (fichier WDD). HInfoLog Renvoie des informations sur les logs du serveur. WLangage.book Page 395 Mardi, 23. avril 2013 1:59 13 396 Partie 7 : Gestion des fichiers de donnes HInfoMmo Renvoie les caractristiques des mmos binaires HInfoRplica Renvoie des informations sur le rplica spcifi HInitAbonn Initialise la plage d'identifiants automatiques d'un fichier de description d'un rplica abonn (extension ".RPL") HInterditModif Interdit toute modification sur un fichier. Les enregistrements sont uniquement accessibles en lecture HJournalInfo Insre des commentaires lors de la journalisation d'une opration HJournalRecre Permet de recrer un journal vide. Cette fonction permet par exemple de remettre le journal 0 aprs une sauvegarde ou une rplication. Le contenu des fichiers exis- tants est perdu HJournalRedmarre Redmarre la journalisation du fichier. Cette journalisation a t arrte grce la fonction HJournalStop HJournalStop Arrte la journalisation du fichier. Les manipulations effectues dans le fichier jour- nal ne sont plus enregistres HLibre Transforme les enregistrements rays d'un fichier en enregistrements supprims HLibrePosition Supprime une position sauvegarde par la fonction HSauvePosition HLibreRequte Libre les ressources d'une requte (suite l'utilisation des fonctions HExcuteRe- qute ou HExcuteRequteSQL) HListeAnalyse Renvoie la liste des analyses disponibles dans un rpertoire donn HListeCl Renvoie la liste des cls d'un fichier reconnu par le moteur HyperFileSQL HListeConnexion Renvoie la liste des connexions dfinies dans l'application ou dans le site (con- nexions dfinies dans l'analyse et/ou dynamiquement) HListeFichier Renvoie la liste des fichiers de l'analyse en cours ou d'une analyse spcifique recon- nue par le moteur HyperFileSQL HListeIndexFullText Renvoie la liste des index full-text d'un fichier (d'une requte ou d'une vue) reconnu par le moteur HyperFileSQL HListeLiaison Renvoie la liste des liaisons (de type Merise) prsentes dans l'analyse en cours ou dans une analyse spcifique HListeParamRequte Renvoie la liste des paramtres d'une requte cre avec l'diteur de requtes HListePersoDossier Renvoie la liste des perso-dossiers (galement appels groupes) dfinis dans l'ana- lyse. HListeProvider Renvoie la liste des providers OLE DB installs sur le poste HListeREP Renvoie la liste des affectations des fichiers prsents dans une analyse HListeRubrique Renvoie la liste des rubriques d'un fichier reconnu par le moteur HyperFileSQL HListeTrigger Renvoie la liste des triggers appliqus sur un ou plusieurs fichiers de donnes Hyper- FileSQL HLit Lit un enregistrement dans un fichier en fonction d'un numro d'enregistrement donn HLitDernier Positionne sur le dernier enregistrement d'un fichier, lit l'enregistrement et met jour les variables HyperFileSQL HLitPrcdent Positionne sur l'enregistrement prcdent d'un fichier, lit l'enregistrement et met jour les variables HyperFileSQL HLitPremier Positionne sur le premier enregistrement d'un fichier, lit l'enregistrement et met jour les variables HyperFileSQL HLitRecherche Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est suprieure ou gale une valeur recherche HLitRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est infrieure ou gale une valeur recherche HLitRecherchePre- mier Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est suprieure ou gale une valeur recherche WLangage.book Page 396 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 397 HLitSuivant Positionne sur l'enregistrement suivant d'un fichier, lit l'enregistrement et met jour les variables HyperFileSQL HMigreClCompose- Relie Migre les valeurs des cls composes relies HMiseAJourCollection Cre ou met jour une collection de procdures sur un serveur HyperFileSQL HMode Change le mode et la mthode de blocage des fichiers HModifie Modifie l'enregistrement spcifi ou l'enregistrement prsent en mmoire dans le fichier de donnes HModifieStructure Permet de mettre jour la structure dun fichier de donnes HyperFileSQL en effec- tuant une modification automatique des donnes (galement appele Synchronisa- tion des donnes). HNbEnr Renvoie le nombre d'enregistrements d'un fichier ou d'une vue HyperFileSQL HNumEnr Renvoie le numro de l'enregistrement en cours dans le fichier ou dans la vue Hyper- FileSQL HOptimise Optimise l'accs aux index des fichiers HyperFileSQL : les index sont chargs dans les caches du systme. Acclre les premiers parcours de fichiers et les premires excutions de requtes HOptimiseRequte Permet dutiliser les temps morts dans lutilisation dun logiciel (priode sans traite- ments) pour optimiser les requtes. Optimise laccs aux index des fichiers HyperFi- leSQL HOuvre Ouvre un fichier HOuvreAnalyse Ouvre une analyse au format HyperFileSQL HOuvreConnexion Ouvre une connexion une base de donnes HPasse Fixe le mot de passe utilis pour crer ou pour ouvrir un fichier HPositionCourante Renvoie la position approximative de l'enregistrement en cours dans le fichier HPositionne Positionne sur un enregistrement partir de la position approximative d'une de ses rubriques (l'enregistrement est lu) HPoste Mmorise un numro unique de poste afin d'utiliser la journalisation et les transac- tions en rseau HPrcdent Positionne sur l'enregistrement prcdent du fichier (l'enregistrement n'est pas lu) HPremier Positionne sur le premier enregistrement d'un fichier (l'enregistrement n'est pas lu) HPrpareRequte Initialise une requte et dclare cette requte au serveur de base de donnes pour optimiser les prochaines excutions de cette requte HPrpareRequteSQL Initialise une requte crite en langage SQL et dclare cette requte au serveur de base de donnes pour optimiser les prochaines excutions de cette requte HPriorit Permet de connatre ou modifier la priorit de l'application appelante. HPrioritClient Modifie la priorit d'une application cliente. HRaye Raye un enregistrement d'un fichier HRAZ Initialise une ou toutes les variables des rubriques d'un fichier avec leurs valeurs par dfaut HRecherche Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est suprieure ou gale une valeur recherche HRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est infrieure ou gale une valeur recherche (l'enregistrement n'est pas lu) HRecherchePremier Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp- cifique est suprieure ou gale une valeur recherche HRecule Recule de plusieurs enregistrements dans le fichier, partir de la position en cours, selon une rubrique spcifie HRcupreEnregistre- ment Renvoie le contenu de l'enregistrement en cours HRcupreLog Ecrit dans un fichier les logs du serveur raliss entre deux dates donnes WLangage.book Page 397 Mardi, 23. avril 2013 1:59 13 398 Partie 7 : Gestion des fichiers de donnes HRcupreRubrique Renvoie le contenu d'une rubrique de l'enregistrement en cours HRgnreFichier Rgnre un fichier partir de son journal HRindexationEn- Cours Avertit si une rindexation est en cours sur un fichier de donnes et renvoie le pour- centage de rindexation effectu HRindexe Reconstruit l'index d'un fichier HRetourPosition Restaure le contexte prcdemment sauvegard d'un fichier HRplDclareLiaison Dclare une liaison de type (1,1) (0,n) entre deux tables HRplGestionFichier Dfinit les options utilises pour la rplication universelle d'un fichier : le sens de rplication, le mode de gestion des conflits. HRplGestionRubrique Renseigne les options de rplication pour une rubrique : la rubrique peut tre rpli- que ou non. HRplPasse Fixe les mots de passe protgeant les rplicas transportables de la rplication uni- verselle HRplProcdureFiltre Dfinit la procdure WLangage qui sera appele chaque opration de rplication pour un fichier donn HSauvePosition Mmorise le contexte en cours d'un fichier HScurit Active ou dsactive le mcanisme de scurit HStatCalcule Ralise diverses statistiques sur les cls d'un fichier HStatDate Renvoie la date de la dernire mise jour des statistiques d'index HStatHeure Renvoie l'heure de la dernire mise jour des statistiques d'index HStatNbDoublon Renvoie le nombre de doublons pour une rubrique donne HStatNbEnr Renvoie le nombre d'entres pour une rubrique donne HStatNbEnrIntervalle Renvoie une estimation majore du nombre d'entres pour une rubrique donne dans un intervalle de valeurs donn HSubstRep Remplace le nom logique du rpertoire des donnes (spcifi dans l'analyse) par un nom physique HSuivant Positionne sur l'enregistrement suivant du fichier (l'enregistrement n'est pas lu) HSupprime Supprime un enregistrement d'un fichier HSupprimeCollection Supprime une collection de procdures stockes d'un serveur HyperFileSQL. HSupprimeTout Supprime tous les enregistrements d'un fichier de donnes ou d'une requte. HSurErreur Personnalise la gestion des erreurs HSynchroniseRplica Synchronise un rplica matre et un rplica abonn HTransactionAnnule Si une transaction est en cours, annule toutes les oprations effectues sur les fichiers en transaction depuis le dbut de la transaction. Si aucune transaction est en cours, rtabli la cohrence de la base de donnes et annule la transaction qui a chou (cas d'une coupure de courant par exemple) HTransactionDbut Dmarre une transaction sur les fichiers HyperFileSQL et cre le fichier des transac- tions HTransactionFin Valide la transaction en cours : les modifications effectues sur le fichier de donnes depuis le dbut de la tran- saction (fonction HTransactionDbut) sont valides le fichier de transaction est supprim (si la transaction est la dernire transaction en cours dans le cas d'une application rseau) les enregistrements bloqus en lecture par la transaction sont dbloqus HTransactionInterrom- pue Permet de savoir si une transaction a t interrompue (la transaction n'a t ni vali- de, ni annule). Les caractristiques de la transaction interrompue peuvent tre connues grce des variables HyperFileSQL WLangage.book Page 398 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 399 HTransactionLibre Transforme tous les enregistrements "en transaction" en enregistrements "normaux" si ces enregistrements n'appartiennent pas une transaction actuellement en cours. Si un enregistrement du fichier de donnes spcifi est considr comme tant en transaction mais n'appartient aucune transaction en cours, il est automa- tiquement libr HTrieVue Trie une vue en crant un index sur une rubrique de la vue HTrouve Vrifie si l'enregistrement en cours correspond au filtre ou la recherche en cours HVrifieIndex Vrifie que les donnes contenues dans le fichier d'index (fichier .NDX) rfrencent correctement les donnes contenues dans le fichier de donnes (.FIC) HVrifieStructure Fixe le mode de comparaison des fichiers. HVersion Permet de savoir si le contenu du fichier a t modifi HVersFichier Copie une source de donnes (vue, requte, ) vers un fichier physique HyperFi- leSQL de mme description HVersRubrique Affecte la valeur indique une rubrique de l'enregistrement en cours HVueVersFichier Enregistre les modifications ralises dans une vue dans le fichier correspondant PageVersFichier Initialise automatiquement la valeur mmoire des rubriques dun fichier avec la valeur des champs de la page Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 399 Mardi, 23. avril 2013 1:59 13 400 Partie 7 : Gestion des fichiers de donnes 11. PROPRITS HYPERFILESQL Les proprits sappliquant aux fichiers HyperFileSQL sont les suivantes : Abrviation Renvoie l'abrviation du fichier, dfinie sous l'diteur d'analyses lors de la description du fichier Accs Permet de connatre et de modifier le type d'accs d'une connexion Alphabet Permet de connatre l'alphabet utilis par un fichier HyperFileSQL Anne Rcupre ou modifie l'anne d'une rubrique de type Date BaseDeDonnes Permet de connatre et de modifier la base de donnes associe une connexion Binaire Identifie une rubrique de type binaire BorneMax Rcupre la borne maximale du filtre en cours (dfini par la fonction HFiltre) sur un fichier de donnes, une vue ou une requte BorneMin Rcupre la borne minimale du filtre en cours (dfini par la fonction HFiltre) sur un fichier de donnes, une vue ou une requte CardinalitRelie- Max Paramtre la cardinalit maximale de la rubrique relie dans une liaison CardinalitRelie- Min Paramtre la cardinalit minimale de la rubrique relie dans une liaison CardinalitSource- Max Paramtre la cardinalit maximale de la rubrique source dans une liaison CardinalitSource- Min Paramtre la cardinalit minimale de la rubrique source dans une liaison ClCompose Identifie une rubrique de type cl compose ClRelie Renvoie ou modifie la rubrique du fichier reli utilise dans la liaison ClSource Renvoie ou modifie la rubrique du fichier source utilise dans la liaison CodeSQL Renvoie une chane contenant le code SQL d'une requte cre avec l'diteur de requ- tes. Composante Paramtre les diffrentes composantes d'une cl compose Compression Paramtre la compression des donnes d'une connexion. CompressionMMO Paramtre le mode de compression du fichier MMO associ au fichier de donnes ConditionFiltre Renvoie la condition de slection mise en place par la fonction HFiltre sur un fichier de donnes, une vue HyperFileSQL ou une requte Connexion Permet de connatre la connexion actuellement associe un fichier de donnes Cryptage Permet de grer le type de cryptage de la communication entre les postes Client et le poste Serveur HyperFileSQL CryptageFic Paramtre le mode de cryptage du fichier de donnes CryptageMMO Paramtre le mode de cryptage du fichier mmo associ au fichier de donnes CryptageNdx Paramtre le mode de cryptage du fichier d'index associ au fichier de donnes CxAccs Gre le type d'accs au fichier lors de la connexion OLE DB une table spcifique (en tenant compte des modifications effectues par la fonction HConnecte) CxAccsDcrit Gre le type d'accs au fichier lors de la connexion OLE DB une table spcifique (sans tenir compte des modifications effectues par la fonction HConnecte) CxBaseDeDonnes Gre la source de donnes OLE DB lors de la connexion OLE DB une table spcifique (en tenant compte des modifications effectues par la fonction HConnecte) CxBaseDeDon- nesDcrit Gre la source de donnes OLE DB lors de la connexion OLE DB une table spcifique (sans tenir compte des modifications effectues par la fonction HConnecte) CxInfosEtendues Permet de connatre les informations supplmentaires insres dans la chane de con- nexion la base de donnes CxInitialCatalog Permet de connatre la base de donnes par dfaut dfinie pour l'accs WLangage.book Page 400 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 401 CxLibellDcrit Paramtre le libell de la connexion la source de donnes OLE DB CxMotDePasseD- crit Dfinit le mot de passe utilis pour ouvrir le fichier lors d'une connexion OLE DB (fichier dfini dynamiquement uniquement) CxOptionsCurseur Permet de connatre le type curseur utilis lors d'une connexion une base de donnes externe CxProviderOLEDB Gre le nom du serveur OLE DB utilis (en tenant compte des modifications effectues par la fonction HConnecte) CxProviderOLEDB- Dcrit Gre le nom du serveur OLE DB (sans tenir compte des modifications effectues par la fonction HConnecte) CxTailleCache Permet de connatre et de modifier le nombre maximum d'enregistrements pouvant tre contenus dans le cache de l'Accs Natif MySQL CxUtilisateur Gre le nom de l'utilisateur lors d'une connexion OLE DB (en tenant compte des modifi- cations effectues par la fonction HConnecte) CxUtilisateurDcrit Gre le nom de l'utilisateur lors d'une connexion OLE DB (sans tenir compte des modifi- cations effectues par la fonction HConnecte) ExcutionTermine Permet de savoir si une requte ou une vue Hyper File Classic ou Client / Serveur a fini de s'excuter Extension Permet de connatre ou de modifier l'extension d'un fichier de donnes FichierJournal Permet de savoir si un fichier de donnes est un fichier journal FichierOrigine Permet de connatre le nom du fichier original correspondant une rubrique dsigne par un alias FichierParcouru Permet de connatre et de modifier la source de donnes utilise pour l'affichage des enregistrements dans les champs bass sur un fichier de donnes FichierReli Paramtre le nom du fichier reli utilis dans la liaison FichierSource Paramtre le nom du fichier source utilis dans la liaison FichierTransaction Permet de savoir si un fichier de donnes est un fichier de transaction FiltreAvecBornes Permet de savoir si des bornes ont t prcises sur le filtre mis en place par la fonction HFiltre sur un fichier de donnes, une vue HyperFileSQL ou une requte Format Paramtre le format des donnes du fichier de donnes (ANSI ou Unicode) FormuleCl Paramtre les diffrentes composantes d'une cl compose GreHTLM Paramtre le mode de gestion du HTML dans un index full-text. GreRTF Paramtre le mode de gestion du RTF dans un index full-text. GrosFichier Paramtre la taille maximale d'un fichier de donnes GUIDAnalyse Renvoie le GUID de l'analyse qui a permis de crer le fichier de donnes GUIDFichier Renvoie le GUID du fichier dfini dans l'analyse qui a permis de crer le fichier de don- nes HauteurMaxVi- gnette Permet de connatre et de fixer la hauteur maximale de la nime vignette Heure Rcupre ou modifie l'heure ou le nombre d'heures d'une rubrique de type Date (au for- mat "Date et Heure" ou "Dure") ou d'une rubrique de type Heure IdAutoMax Permet de connatre lidentifiant automatique maximum sur un fichier rpliqu IdAutoMin Permet de connatre lidentifiant automatique minimum sur un fichier rpliqu Indice Renvoie l'indice physique de la rubrique dans l'enregistrement InfoGnrationVi- gnette Permet de savoir si la vignette a t gnre ou permet de connatre l'erreur de gnra- tion InfosEtendues Renvoie et modifie les informations supplmentaires d'un fichier de donnes ou d'une rubrique accd par Accs Natif Jour Rcupre ou modifie le jour ou le nombre de jours d'une rubrique de type Date (au for- mat "Date", "Date et Heure" ou "Dure") Journalisation Paramtre le mode de journalisation d'un fichier de donnes WLangage.book Page 401 Mardi, 23. avril 2013 1:59 13 402 Partie 7 : Gestion des fichiers de donnes Langue Dfinir les paramtres de la langue utilise pour les comparaisons et le tri dans le cas d'une rubrique Unicode (en tenant compte des modifications effectues par la variable H.CrationLangueUnicode). LangueDcrit Dfinir les paramtres de la langue utilise pour les comparaisons et le tri dans le cas d'une rubrique Unicode (sans tenir compte des modifications effectues par la variable H.CrationLangueUnicode). LargeurMaxVi- gnette Permet de connatre et de fixer la largeur maximale de la nime vignette Libell Renvoie le libell associ la rubrique LongueurMinimale Permet de dfinir et de connatre la longueur minimale des mots indexer dans un index full-text. Mmo Identifie une rubrique de type Mmo Milliseconde Rcupre ou modifie les millisecondes ou le nombre de millisecondes d'une rubrique de type Date (au format "Date et Heure" ou "Dure") Minute Rcupre ou modifie les minutes ou le nombre de minutes d'une rubrique de type Date (au format "Date et Heure" ou "Dure") ou d'une rubrique de type Heure Mois Rcupre ou modifie le mois d'une rubrique de type Date (au format "Date Simple" ou "Date et Heure") MotDePasse Permet de dfinir le mot de passe de l'utilisateur utilisant la connexion MotDePasseWDD5 5 Donne le mot de passe utiliser pour manipuler un fichier au format Hyper File 5.5 NbComposante Renvoie le nombre de composantes d'une cl compose NbElmentTableau Paramtre le nombre d'lments d'une rubrique tableau NbRubrique Renvoie le nombre de total de rubriques (y compris les cls composes) prsentes dans un enregistrement d'un fichier dcrit sous l'diteur d'analyses, un fichier dcrit dynami- quement, une vue HyperFileSQL ou une requte NbRubriqueCl Renvoie le nombre de total de rubriques cl (y compris les cls composes) prsentes dans un enregistrement d'un fichier dcrit sous l'diteur d'analyses, un fichier dcrit dynamiquement, une vue HyperFileSQL ou une requte NbRubriqueMmo Renvoie le nombre de total de rubriques mmo prsentes dans un enregistrement d'un fichier dcrit sous l'diteur d'analyses, un fichier dcrit dynamiquement, une vue Hyper- FileSQL ou une requte NbVignette Permet de connatre le nombre de vignettes gnres pour la rubrique NbVignetteDcrit Permet de connatre le nombre de vignettes dcrites pour la rubrique Nom Gre le nom des diffrents objets HyperFileSQL Nom55 Gre le nom logique d'un fichier au format Hyper File 5.5 NomDcrit Gre le nom logique d'un fichier de donnes NomPhysique Gre le nom physique des fichiers de donnes NomPhysiqueD- crit Gre le nom physique des fichiers HyperFileSQL (sans tenir compte des changements de noms raliss grce la fonction HChangeNom) NouvelEnregistre- ment Permet de savoir si l'enregistrement vient d'tre saisi dans le fichier de donnes. Null Permet de grer la valeur NULL dans les rubriques des fichiers HyperFileSQL NullSupport Permet de grer la valeur NULL dans un fichier HyperFileSQL Numrique Identifie une rubrique numrique NumroGnration Permet de connatre le numro de gnration du fichier physique associ au fichier logi- que spcifi OptionsCurseur Permet de grer le type de curseur utilis lors d'une connexion (HyperFileSQL Client/Ser- veur, OLE DB, ...). PartieDate Rcupre et modifie la date d'une rubrique de type Date (au format "Date et Heure") WLangage.book Page 402 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 403 PartieDcimale Permet de connatre ou de modifier le nombre de dcimales d'une rubrique de type numrique PartieEntire Permet de connatre ou de modifier le nombre de chiffres composant la partie entire d'une rubrique de type numrique PartieHeure Rcupre et modifie l'heure d'une rubrique de type Date (au format "Date et Heure") ProtgParMotDe- Passe Permet de savoir si un fichier est protg ou non par mot de passe Provider Permet de grer le type d'une connexion (HyperFileSQL Client/Serveur, OLE DB, .). RgleModification Gre la rgle de modification (gestion de l'intgrit) utilise dans une liaison RgleSuppression Gre la rgle de suppression (gestion de l'intgrit) utilise dans une liaison Rpertoire Gre le rpertoire physique des fichiers HyperFileSQL (en tenant compte des change- ments de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep) RpertoireDcrit Gre le rpertoire physique des fichiers HyperFileSQL (sans tenir compte des change- ments de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep) RpertoireJournal Gre le rpertoire du fichier journal dcrit dans l'analyse RpertoireJourna- lOpration Permet de grer le rpertoire du fichier des oprations du journal associ un fichier journal RpertoireRplica- tion Permet de grer le rpertoire du rplica (fichier ".RPL" ou ".RPM") RpertoireSauve- gardeJournal Permet de connatre et de modifier le rpertoire de sauvegarde des fichiers Journal Rplication Permet de connatre le mode de rplication utilis pour un fichier de donnes (fichier dfini sous l'diteur d'analyses ou dfini dynamiquement). Pour les fichiers dfinis dyna- miquement, il est possible d'indiquer si ce fichier est en mode rplication ou non RubriqueFiltre Permet de connatre la rubrique sur laquelle un filtre a t mis en place par la fonction HFiltre sur un fichier de donnes, une vue HyperFileSQL ou une requte RubriqueOrigine Permet de connatre le nom de la rubrique originale correspondant une rubrique dsi- gne par un alias Rubriques Permet de dfinir et de connatre les diffrentes rubriques composant l'index full-text. RubriqueTex- teComplte Paramtre la gestion des rubriques de type texte dans un fichier HyperFileSQL (les rubri- ques de type texte peuvent tre compltes automatiquement par des espaces ou non) Seconde Rcupre ou modifie les secondes ou le nombre de secondes d'une rubrique de type Date (au format "Date et Heure" ou "Dure") Scuris Paramtre le niveau de scurit du cryptage des fichiers SensibleAccentua- tion Paramtre la prise en compte de l'accentuation dans les diffrentes recherches effec- tues sur la rubrique SensibleCasse Paramtre la prise en compte de la case (majuscules/minuscules) dans les diffrentes recherches effectues sur la rubrique SensiblePonctua- tion Paramtre la prise en compte de la ponctuation (virgule, point, etc.) dans les diffrentes recherches effectues sur la rubrique Serveur Permet de connatre et modifier la source de donnes d'une connexion Source Permet de connatre et modifier la source de donnes d'une connexion Taille Paramtre la taille d'une rubrique de type texte (chane de caractres, mmo texte, caractre) TailleCache Permet de connatre et de modifier le nombre maximum d'enregistrements pouvant tre contenus dans le cache de l'Accs Natif MySQL TailleCl Permet de connatre et de modifier la taille de la partie indexe du mmo texte TailleEnregistre- ment Renvoie la taille d'un enregistrement sans tenir compte des cls composes Texte Identifie une rubrique de type texte Type Identifie et modifie le type d'une rubrique WLangage.book Page 403 Mardi, 23. avril 2013 1:59 13 404 Partie 7 : Gestion des fichiers de donnes TypeCl Paramtre les caractristiques d'une rubrique de type cl TypeTri Paramtre les caractristiques de tri sur une rubrique Utilisateur Permet de connatre et modifier l'utilisateur d'une connexion ValeurParDfaut Paramtre la valeur par dfaut d'une rubrique Vignette Permet de connatre la valeur de la nime vignette VisibleUtilisateurFi- nal Permet de savoir si une rubrique est visible ou non par les utilisateurs finals et de dfinir si une rubrique doit tre visible ou non par les utilisateurs finals WDD55 Chemin du fichier WDD au format 5.5 / 1.5 utilis pour manipuler des fichiers au format 5.5 / 1.5 dans une application WinDev 8 ou dans un site WebDev 7 Pour plus de dtails sur ces proprits, consultez laide en ligne. Pour connatre la disponibilit de ces proprits dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 404 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 405 12. FONCTIONS SQL Les principales fonctions SQL pouvant tre utili- ses sur des requtes en code SQL sont les suivan- tes (classes par thme) : extraction de caractres : ELT EXTRACTVALUE LEFT RIGHT MID, SUBSTR et SUBSTRING SPLIT_PART suppression de caractres : LTRIM RTRIM TRIM substitution de caractres : REPLACE REVERSE TRANSLATE fusion de chanes : CONCAT STRING_AGG compltion de chanes : LPAD REPEAT RPAD SPACE modification de la casse d'une chane de caractres : LOWER UPPER LCASE UCASE taille d'une chane de caractres : LEN et LENGTH CHARACTER_LENGTH CHAR_LENGTH OCTET_LENGTH position d'une chane de caractres : INSTR FIELD PATINDEX POSITION nombre d'enregistrements dans un fichier : COUNT calculs de numriques : AVG MAX MIN SUM slection des n premiers ou des n derniers enregistrements : BOTTOM TOP code ASCII : ASCII code Unicode : UNICODE phontique : SOUNDEX SOUNDEX LIKE SOUNDEX2, SOUNDEX2 LIKE gestion des dates ADD_MONTH LAST_DAY MONTHS_BETWEEN NEW_TIME NEXT_DAY ROUND SYSDATE TRUNC Fonctions de comparaison : COALESCE GREATEST IF NULL IS NULL LEAST NVL Instruction conditionnelle : DECODE CASE Recherche "full-text" : MATCH AGAINST WLangage.book Page 405 Mardi, 23. avril 2013 1:59 13 406 Partie 7 : Gestion des fichiers de donnes Vrification : MD5 SHA et SHA1 Pour plus de dtails sur les fonctions SQL, consul- tez une documentation spcifique au langage SQL. Pour connatre toutes les commandes SQL (fonc- tions, clauses, oprateurs, ...) utilisables dans une requte SQL gre par HyperFileSQL, consultez laide en ligne. Remarques : Ces instructions sont utilisables : Dans le code SQL des requtes cres sous l'diteur de requtes. Ces requtes sont ensuite excutes grce la fonction HExcuteRe- qute. Dans le code SQL des requtes excutes avec la fonction HExcuteRequteSQL. Sauf indication contraire, ces fonctions sont utili- sables sur tous les types de sources de donnes (Oracle, Access, SQL Server, ...). 12.1 Dtail des fonctions 12.1.1 ELT La fonction ELT renvoie la nime chane de caract- res d'une liste de chanes. Format d'utilisation : Exemple : Le code SQL suivant suivant permet de slectionner la premire chane de la liste : 12.1.2 EXTRACTVALUE La fonction EXTRACTVALUE permet de manipuler des chanes XML. Cette fonction renvoie le texte (CDATA) du premier noeud texte qui est un fils de l'lment correspondant l'expression XPATH. Si plusieurs correspondances sont trouves, le con- tenu du premier noeud texte fils de chaque noeud correspondant l'expression XPATH est retourn sous forme d'une chane dlimite par des espa- ces. Format d'utilisation : Le paramtre <Fragment de XML> doit tre un frag- ment de XML valide. Il doit contenir une unique racine. Exemple : Le code suivant permet de compter les lments trouvs : 12.1.3 LEFT La fonction LEFT extrait la partie gauche (c'est-- dire les premiers caractres) : soit du contenu d'une rubrique de fichier, soit d'une chane de caractres. Format d'utilisation : Exemple : Le code SQL suivant permet de lister les dpartements des clients : 12.1.4 RIGHT La fonction RIGHT extrait la partie droite (c'est-- dire les derniers caractres) : soit du contenu d'une rubrique de fichier, soit d'une chane de caractres. Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les cinq derniers caractres du nom des clients : 12.1.5 SPLIT_PART La fonction SPLIT_PART dcoupe une chane de caractres selon le sparateur spcifi et renvoie la nime partie de la chane. ELT(Numro de la chane, ... Chane1, Chane2, Chane3, ...) SELECT ELT(1, 'ej', 'Heja', ... 'hej', 'foo') EXTRACTVALUE(Fragment de XML,... Expression XPATH) SELECT EXTRACTVALUE('<a><b/> ... </a>', 'count(/a/b)') FROM CLIENT WHERE CLCLEUNIK=1 LEFT(... ChaneDeCaractres ou ... Rubrique,NbCaractresAExtraire) SELECT LEFT(CLIENT.CodePostal, 2) FROM CLIENT RIGHT(... ChaneDeCaractres ou ... Rubrique,NbCaractresAExtraire) SELECT RIGHT(CLIENT.Nom, 5) FROM CLIENT WLangage.book Page 406 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 407 Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les 3 premiers mots correspondants l'adresse : 12.1.6 MID, SUBSTR et SUBSTRING Les fonctions MID, SUBSTR et SUBSTRING permettent : soit d'extraire une sous-chane du contenu d'une rubrique partir d'une position donne, soit d'extraire une sous-chane d'une chane de caractres partir d'une position donne. MID La fonction MID peut tre utilise uniquement sur une source de donnes de type Access. Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients : SUBSTR La fonction SUBSTR peut tre utilise uniquement sur une source de donnes de type Oracle. Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients : SUBSTRING La fonction SUBSTRING peut tre utilise unique- ment sur une source de donnes de type SQL Ser- ver. Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients : 12.1.7 LRIM La fonction LTRIM renvoie une chane de caractres : soit sans les espaces situs gauche, soit sans une liste de caractres. La suppression des caractres s'effectue de la gauche vers la droite. Cette suppression est sen- sible la casse (majuscules/minuscules). Cette suppression s'arrte sur le premier caractre trouv n'appartenant pas la liste spcifie. La suppression de caractres spcifiques ne peut pas tre ralise sur une source de don- nes de type Access ou SQL Server. La chane de caractres passe en paramtre la fonction correspond : soit au contenu d'une rubrique, soit une chane de caractres. Format d'utilisation : Exemple : Le nom des clients est prcd de la civi- lit des clients ("Mr.", "Mme." ou "Melle."). Le code SQL suivant permet de : supprimer la civilit de chaque nom (lettres "M", "r", "m", "e" et "l" ainsi que le caractre point), supprimer l'espace prcdent le nom (espace qui SPLIT_PART(Expression initiale, ... Dlimiteur, Numro de la partie ... extraire) SELECT SPLIT_PART(ADRESSE,' ', ... 1), SPLIT_PART(ADRESSE,' ',2),... SPLIT_PART(ADRESSE,' ',3) FROM CLIENT WHERE CLCLEUNIK=2 MID(... ChaneDeCaractres ou ... Rubrique, PositionDpart,... NbCaractresAExtraire) SELECT MID(CLIENT.Nom, 3, 2) FROM CLIENT SUBSTR(... ChaneDeCaractres ou Rubrique,PositionDpart,... NbCaractresAExtraire) SELECT SUBSTR(CLIENT.Nom, 3, 2) FROM CLIENT SUBSTRING(ChaneDeCaractres ou Rubrique, PositionDpart,... NbCaractresAExtraire) SELECT SUBSTRING(CLIENT.Nom, 3, 2) FROM CLIENT // Suppr. espaces situs gauche LTRIM(ChaneDeCaractres/Rubrique) // Suppr. liste de caractres LTRIM(... ChaneDeCaractres ou ... Rubrique,CaractresASupprimer) WLangage.book Page 407 Mardi, 23. avril 2013 1:59 13 408 Partie 7 : Gestion des fichiers de donnes tait prsent entre la civilit et le nom). Dans cet exemple : 12.1.8 RTRIM La fonction RTRIM renvoie une chane de caractres : soit sans les espaces situs droite, soit sans une liste de caractres. La suppression des caractres s'effectue de la droite vers la gauche. Cette suppression est sen- sible la casse (majuscules/minuscules). Cette suppression s'arrte sur le premier caractre trouv n'appartenant pas la liste spcifie. La suppression de caractres spcifiques ne peut pas tre ralise sur une source de don- nes de type Access ou SQL Server. La chane de caractres passe en paramtre la fonction correspond : soit au contenu d'une rubrique, soit une chane de caractres. Format d'utilisation : Exemple : Le code SQL suivant permet de suppri- mer les caractres 'E', 'U' et 'R' situs droite du nom des clients : Dans cet exemple : 12.1.9 TRIM La fonction TRIM renvoie une chane de caractres : soit sans les espaces situs gauche et droite. soit sans une chane de caractres situe en dbut et en fin de chane. soit sans une chane de caractres situe en dbut de chane. soit sans une chane de caractres situe en fin de chane. La suppression des caractres s'effectue de la droite vers la gauche. Cette suppression est sensi- ble la casse (majuscule/minuscule). Cette sup- pression s'arrte sur le premier caractre trouv n'appartenant pas la chane spcifie. Format d'utilisation : 12.1.10 REPLACE La fonction REPLACE renvoie une chane de caractres : soit en remplaant toutes les occurrences d'un mot prsent dans une chane par un autre mot. soit en remplaant toutes les occurrences d'un mot prsent dans une chane. Le remplacement s'effectue de la droite vers la gauche. Ce remplacement est sensible la casse (majuscule/minuscule). Ce remplacement s'arrte // Suppression des caractres SELECT LTRIM(CLIENT.Nom, 'Mrmel.') FROM CLIENT // Suppression de l'espace SELECT LTRIM(CLIENT.Nom) FROM CLIENT Si le nom du client est : La chane retourne est : 'Melle. DUPONT' 'DUPONT' 'Mr. CIRVAL' 'CIRVAL' 'Mme. Dubois' 'Dubois' // Suppr. espaces gauche RTRIM(ChaneDeCaractres ou Rubri- que) // Suppr. liste de caractres RTRIM(ChaneDeCaractre ou ... Rubrique,CaractresASupprimer) SELECT RTRIM(CLIENT.Nom, 'EUR') FROM CLIENT Si le nom du client est : La chane retourne est : 'DUVALEUR' 'DUVAL' 'DRAFUREUR' 'DRAF' 'Galteur' 'Galteur' 'FOURMALTE' 'FOURMALTE' 'BENUR' 'BEN' // Supp. espaces gauche et // droite TRIM(Expression initiale) // Supp. chane de caractres // en dbut et en fin de chane TRIM(Expression initiale, ... Chane supprimer) // Supp. espaces gauche et // droite TRIM(Expression initiale) // Supp. chane de caractres // en dbut et en fin de chane // TRIM(Expression initiale, ... Chane supprimer) // OU // TRIM(BOTH Chane supprimer // FROM Expression initiale) // Supp. chane en dbut de chane // TRIM(LEADING Chane supprimer // FROM Expression initiale) // Supp. chane en fin de chane // TRIM(TRAILING Chane supprimer // FROM Expression initiale) WLangage.book Page 408 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 409 sur le premier caractre trouv n'appartenant pas la chane spcifie. Format d'utilisation : 12.1.11 REVERSE La fonction REVERSE renvoie une chane de carac- tres dont l'ordre des caractres est l'inverse de la chane initiale. Format d'utilisation : 12.1.12 TRANSLATE La fonction TRANSLATE renvoie une chane de caractres en remplaant tous les caractres indi- qus par d'autres caractres. Si un caractre remplacer n'a pas sa correspondance, ce caractre est supprim. Le remplacement s'effectue de la droite vers la gauche. Ce remplacement est sensible la casse (majuscule/minuscule). Format d'utilisation : 12.1.13 CONCAT La fonction CONCAT concatne plusieurs chanes entre elles. Format d'utilisation : CONCAT nest pas gr par Sybase. 12.1.14 STRING_AGG La fonction STRING_AGG permet de concatner des chanes non nulles d'une liste de valeurs. Format d'utilisation : 12.1.15 LPAD La fonction LPAD renvoie une chane de taille dter- mine. Pour atteindre la taille requise, cette chane est complte gauche : soit par des espaces. soit par un caractre ou une chane donne. Format d'utilisation : 12.1.16 REPEAT La fonction REPEAT renvoie une chane de caract- res constitue de la n fois la rptition de la chane initiale. Si n est infrieur ou gal 0, la fonction renvoie une chane vide. Si la chane initiale ou n sont NULL, la fonction renvoie NULL. Format d'utilisation : Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients : 12.1.17 RPAD La fonction RPAD renvoie une chane de taille dtermine. Pour atteindre la taille requise, cette chane est complte droite : soit par des espaces. soit par un caractre ou une chane donne. Format d'utilisation : // Remplacement de toutes les // occurrences d'un mot par // un autre REPLACE(Expression initiale, ... Chane remplacer, ... Nouvelle chane) // Suppression de toutes les // occurrences d'un mot REPLACE(Expression initiale, ... Chane supprimer) REVERSE(Chane initiale) // Remplacement des caractres TRANSLATE(Expression initiale, ... Caractres remplacer, ... Nouveaux caractres) CONCAT(Chane1, Chane2 [, ... , ChaneN]) STRING_AGG(chane, sparateur) // Compltion par des espaces //LPAD(Expression initiale, // Longueur) // Compltion par un caractre // LPAD(Expression initiale, // Caractre) // Compltion par une chane de // caractres LPAD(Expression initiale, ... Chane de caractres) REPEAT(Chane initiale, n) SELECT REPEAT(NOMCONTACT,14) FROM CLIENT WHERE CLCLEUNIK=10 // Compltion par des espaces RPAD(Expression initiale, Longueur) // Compltion par un caractre RPAD(Expression initiale, Caractre) WLangage.book Page 409 Mardi, 23. avril 2013 1:59 13 410 Partie 7 : Gestion des fichiers de donnes 12.1.18 SPACE La fonction SPACE renvoie une chane constitue de N espaces. Format d'utilisation : 12.1.19 LOWER La fonction LOWER convertit en minuscules : soit le contenu d'une rubrique, soit une chane de caractres. La fonction LOWER ne peut pas tre utilise sur une source de donnes de type Access. Format d'utilisation : Exemple : Le code SQL suivant permet de convertir en minuscules le prnom des clients : 12.1.20 LCASE La fonction LCASE retourne une chane avec tous les caractres en minuscules en fonction du jeu de caractres courant. Format d'utilisation : Exemple : Le code SQL suivant permet de convertir en minuscules les villes des clients : 12.1.21 UCASE La fonction UCASE retourne une chane avec tous les caractres en majuscules en fonction du jeu de caractres courant. Format d'utilisation : Exemple : Le code SQL suivant permet de convertir en minuscules les villes des clients : 12.1.22 UPPER La fonction UPPER convertit en majuscules : soit le contenu d'une rubrique, soit une chane de caractres. La fonction UPPER ne peut pas tre utilise sur une source de donnes de type Access. Format d'utilisation : Exemple : Le code SQL suivant permet de convertir en majuscules les villes des clients : 12.1.23 LEN et LENGTH Les fonctions LEN et LENGTH renvoient la taille (le nombre de caractres) dune expression. Cette taille comprend tous les caractres, y compris les caractres espace et 0 binaire. LEN La fonction LEN peut tre utilise sur tous les types de source de donnes, sauf les sources de don- nes de type Oracle. Pour les sources de donnes de type Oracle, utilisez la fonction LENGTH. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir la taille des noms des clients : LENGTH La fonction LENGTH peut tre utilise uniquement sur une source de donnes de type Oracle. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir la taille des noms des clients : 12.1.24 INSTR La fonction INSTR renvoie la position d'une chane de caractres. Cette chane de caractres peut tre recherche : soit dans le contenu d'une rubrique, // Compltion par une chane de // caractres RPAD(Expression initiale, ... Chane de caractres) SPACE(N) LOWER(ChaneCaractres ou Rubrique) SELECT LOWER(CLIENT.Prnom) FROM CLIENT LCASE(Expression initiale) SELECT LCASE(Ville) FROM CLIENT UCASE(Expression initiale) SELECT UCASE(Ville) FROM CLIENT UPPER(ChaneCaractres ou Rubrique) SELECT UPPER(CLIENT.Ville) FROM CLIENT LEN(ChaneDeCaractres ou Rubrique) SELECT LEN(CLIENT.Nom) FROM CLIENT LENGTH(... ChaneDeCaractres ou Rubrique) SELECT LENGTH(CLIENT.Nom) FROM CLIENT WLangage.book Page 410 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 411 soit dans une chane de caractres. La fonction INSTR peut tre utilise uniquement sur une source de donnes de type Oracle ou sup- portant la norme SQL-92. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir la position de la premire occurrence de la lettre "T" dans chaque nom de ville des clients : 12.1.25 FIELD La fonction FIELD renvoie l'index de la chane recherche dans la liste. Si la chane n'est pas trou- ve, la fonction renvoie 0. Format d'utilisation : 12.1.26 PATINDEX La fonction PATINDEX renvoie la position de la pre- mire occurrence d'une chane de caractres cor- respondant une valeur spcifie (avec des caractres gnriques). Les caractres gnriques autoriss sont les suivants : '%' : reprsente zro, un ou plusieurs caractres. '_' : reprsente un caractre unique. Ces caractres gnriques peuvent tre combins. Cette chane de caractres peut tre recherche : soit dans le contenu d'une rubrique, soit dans une chane de caractres. La fonction PATINDEX peut tre utilise sur une source de donnes de type HyperFileSQL 7 ou de type SQL Server. Format d'utilisation : Exemple : Le tableau ci-dessous indique la position de la premire occurrence trouve en fonction de diffrentes valeurs recherches : 12.1.27 POSITION La fonction POSITION renvoie la position d'une chane de caractres dans une expression. Format d'utilisation : 12.1.28 COUNT La fonction COUNT renvoie : le nombre d'enregistrements prsents dans un fichier. le nombre de valeurs non nulles d'une rubrique. le nombre de valeurs diffrentes et non nulles d'une rubrique Format d'utilisation : Exemples : Le code SQL suivant permet d'obtenir le nombre de produits prsents dans le fichier Produit : Le code SQL suivant permet d'obtenir le nombre de produits sur lesquelles un taux de TVA de 5,5 % est appliqu : 12.1.29 AVG La fonction AVG calcule : la moyenne d'un ensemble de valeurs non nulles. la moyenne dun ensemble de valeurs diffrentes et non nulles. INSTR(... ChaneDeCaractres ou ... Rubrique, ChaneARechercher, ... PositionDpart, Occurrence) SELECT INSTR(CLIENT.Ville, 'T', 1, 1)FROM CLIENT FIELD(Chane rechercher, ... Chane1, Chane2, ...) PATINDEX(ValeurARechercher, ... ChaneDeCaractres ou Rubrique) Valeur recherche Nom de ville %E% %E_ %AR% MONTPELLIER 6 10 0 PARIS 0 0 2 TARBES 5 5 2 TOULOUSE 8 0 0 VIENNE 3 0 0 POSITION(Chane rechercher, ... Expression initiale) POSITION(Chane rechercher, ... Expression initiale, ... Position de dpart) COUNT(*) COUNT(Rubrique) COUNT(DISTINCT Rubrique) SELECT COUNT(*) FROM PRODUIT SELECT COUNT(PRODUIT.TauxTVA) FROM PRODUIT WHERE PRODUIT.TauxTVA = '5.5' WLangage.book Page 411 Mardi, 23. avril 2013 1:59 13 412 Partie 7 : Gestion des fichiers de donnes Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir le salaire moyen des employs : 12.1.30 MAX La fonction MAX renvoie la plus grande valeur des valeurs prsentes dans une rubrique pour tous les enregistrements slectionns dans le fichier. La fonction MAX utilise dans une requte sans regroupement doit renvoyer un et un seul enregis- trement. Si la requte contient des regroupements, il y aura un enregistrement par regroupement. Si la source de donnes contient des enregistre- ments, l'enregistrement retourn par la requte contiendra la valeur maximale. Si la source de donnes ne contient pas d'enregis- trements, la valeur du MAX dans l'enregistrement retourn est NULL. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir le salaire maximal des employs : 12.1.31 MIN La fonction MIN renvoie la plus petite valeur des valeurs prsentes dans une rubrique pour tous les enregistrements slectionns dans le fichier. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir le salaire minimal des employs : 12.1.32 SUM La fonction SUM renvoie : soit la somme totale des valeurs non nulles pr- sentes dans une rubrique pour tous les enregis- trements slectionns dans le fichier. soit la somme totale des valeurs diffrentes et non nulles prsentes dans une rubrique pour tous les enregistrements slectionns dans le fichier. Format d'utilisation : Exemple : Le code SQL suivant permet d'obtenir la somme totale des salaires : Remarque : La rubrique manipule par la fonction SUM ne doit pas correspondre au rsultat d'une opration. Ainsi, la syntaxe suivante gnre une erreur : Cette syntaxe doit tre remplace par la syntaxe suivante : 12.1.33 BOTTOM La fonction BOTTOM renvoie uniquement les n der- niers enregistrements du rsultat d'une requte. La fonction BOTTOM peut tre utilise uniquement sur une source de donnes de type HyperFileSQL. Format d'utilisation : Exemple : Le code SQL suivant permet de lister les 10 plus mauvais clients : Remarque : Il est conseill d'utiliser la fonction BOTTOM sur une requte trie. Dans le cas con- traire, les enregistrements retourns par la fonction BOTTOM seront slectionns selon leur numro d'enregistrement. 12.1.34 TOP La fonction TOP renvoie uniquement les n premiers enregistrements du rsultat d'une requte. AVG(Rubrique) AVG(DISTINCT Rubrique) SELECT AVG(EMPLOYE.Salaire) FROM EMPLOYE MAX(Rubrique) MAX(DISTINCT Rubrique) SELECT MAX(EMPLOYE.Salaire) FROM EMPLOYE MIN(Rubrique) SELECT MIN(EMPLOYE.Salaire) FROM EMPLOYE SUM(Rubrique) SUM(DISTINCT Rubrique) SELECT SUM(EMPLOYE.Salaire) FROM EMPLOYE SELECT (A*B) AS C, SUM(C) FROM MONFICHIER SELECT (A*B) AS C, SUM(A*B) FROM MONFICHIER BOTTOM NbDernierEnregSlectionn SELECT BOTTOM 10 SUM(COM- MANDE.TotalTTC) AS TotalTTC, CLIENT.NomClient FROM CLIENT, COMMANDE WHERE CLIENT.NumClient =COMMANDE.NumClient GROUP BY NomClient ORDER BY TotalTTC DESC WLangage.book Page 412 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 413 La fonction TOP ne peut pas tre utilise sur une source de donnes de type Oracle. Format d'utilisation : Exemple : Le code SQL suivant permet de lister les 10 meilleurs clients : Remarque : Il est conseill d'utiliser la fonction TOP sur une requte trie. Dans le cas contraire, les enregistrements retourns par la fonction TOP seront slectionns selon leur numro d'enregistre- ment. 12.1.35 ASCII La fonction ASCII renvoie le code ASCII : soit d'un caractre. soit du premier caractre d'une chane. Si le caractre ou la chane de caractres spcifie correspond une chane vide (""), la fonction ASCII renvoie 0. Format d'utilisation : 12.1.36 SOUNDEX, SOUNDEX LIKE La fonction SOUNDEX renvoie la reprsentation phontique d'une chane de caractres (bas sur un algorithme anglo-saxon). Format d'utilisation : Remarque : la fonction SOUNDEX utilise sur plu- sieurs bases diffrentes (Hyper File, Oracle, MySQL, ) peut renvoyer des rsultats diffrents selon la base utilise. SOUNDEX LIKE n'est pas gr par Oracle, par MySQL, par Progress ou par Informix. SOUNDEX n'est pas gr par Informix. 12.1.37 SOUNDEX2, SOUNDEX2 LIKE La fonction SOUNDEX2 renvoie la reprsentation phontique d'une chane de caractres (bas sur un algorithme proche du franais). Format d'utilisation : SOUNDEX2 et SOUNDEX2 LIKE ne sont pas grs par Oracle, SQL Server, MySQL, Progress, Informix ou par DB2. 12.1.38 ADD_MONTHS La fonction ADD_MONTHS permet d'ajouter plu- sieurs mois une date spcifie. Format d'utilisation : ADD_MONTHS n'est pas gr par SQL Server, par MySQL, par Informix, par DB2 ou par Sybase. 12.1.39 LAST_DAY La fonction LAST_DAY permet d'obtenir la date du dernier jour du mois spcifi. Format d'utilisation : LAST_DAY n'est pas gr par Informix, par DB2 ou par Sybase. 12.1.40 MONTHS_BETWEEN La fonction MONTHS_BETWEEN permet d'obtenir le nombre de mois entre deux dates spcifies. Format d'utilisation : MONTHS_BETWEEN n'est pas gr par MySQL, par Informix, par DB2 ou par Sybase. 12.1.41 NEW_TIME La fonction NEW_TIME permet d'obtenir une date aprs conversion de fuseau horaire. Format d'utilisation : NEW_TIME n'est pas gr par SQL Server, par MySQL, par Progress, par Informix, par DB2 ou par Sybase. TOP NbPremierEnregSlectionn SELECT TOP 10 SUM(COM- MANDE.TotalTTC) AS TotalTTC, CLIENT.NomClient FROM CLIENT, COMMANDE WHERE CLIENT.NumClient =COMMANDE.NumClient GROUP BY NomClient ORDER BY TotalTTC DESC // Code ASCII d'un caractre ASCII(Caractre) // Code ASCII du premier caractre // d'une chane ASCII(Chane de caractres) // Code ASCII d'un caractre ASCII(Caractre) // Code ASCII du premier caractre // d'une chane ASCII(Chane de caractres) SOUNDEX2(Chane) ADD_MONTHS(Date,Nombre de mois) LAST_DAY(Date) MONTHS_BETWEEN(Date1, Date2) NEW_TIME(Date, Fuseau Horaire 1, Fuseau Horaire 2) WLangage.book Page 413 Mardi, 23. avril 2013 1:59 13 414 Partie 7 : Gestion des fichiers de donnes 12.1.42 NEXT_DAY La fonction NEXT_DAY permet d'obtenir le premier jour de la semaine suivant la date spcifie ou le jour spcifi. Format d'utilisation : NEXT_DAY n'est pas gr par SQL Server, MySQL, par Progress, par Informix, par DB2 ou par Sybase. 12.1.43 ROUND La fonction ROUND permet d'arrondir la date au for- mat spcifi. Format d'utilisation : ROUND n'est pas gr par Progress, par DB2, et par Sybase. 12.1.44 SYSDATE La fonction SYSDATE permet d'obtenir la date et l'heure courante. Format d'utilisation : SYSDATE n'est pas gr par Informix et par Sybase. 12.1.45 TRUNC La fonction TRUNC permet de tronquer la date au format spcifi. Format d'utilisation : TRUNC n'est pas gr par SQL Server, par MySQL, par Progress, par DB2 et par Sybase. 12.1.46 COALESCE La fonction COALESCE permet de trouver la pre- mire expression non nulle parmi ses arguments. Format d'utilisation : COALESCE n'est pas gr par Progress ou par Infor- mix. 12.1.47 GREATEST La fonction GREATEST renvoie la valeur la plus grande des lments passs en paramtre; Format d'utilisation : 12.1.48 LEAST La fonction LEAST renvoie la valeur la plus petite des lments passs en paramtre; Format d'utilisation : 12.1.49 NVL, IF_NULL, IS_NULL La fonction NVL permet de remplacer les valeurs nulles d'une colonne par une valeur de substitu- tion. Les fonctions IS_NULL et IF_NULL sont identi- ques. IS_NULL est utilis en SQL Server et IF_NULL avec les bases MySQL ou Progress. Format d'utilisation : 12.1.50 DECODE La fonction DECODE permet d'obtenir le fonctionne- ment d'une instruction SI .. ALORS .. SINON. Format d'utilisation : DECODE n'est pas gr par SQL Server, par MySQL, par Progress, par Informix, par DB2 et par Sybase. 12.1.51 CASE La fonction CASE permet d'obtenir le fonctionne- ment d'une instruction SI .. ALORS .. SINON; Format d'utilisation : Ou : Exemple : NEXT_DAY(Date, Jour) ROUND(Date, Format) SYSDATE TRUNC(Date, Format) COALESCE(Param1, Param2, ...) GREATEST(Param1, Param2, ...) LEAST(Param1, Param2, ...) NVL(Nom Colonne, ... Valeur de substitution) DECODE(Nom_Colonne, Valeur compare 1, Valeur retourne 1, [Valeur compare 2, Valeur retourne 2][, Valeur par dfaut]) CASE Nom_Colonne WHEN Valeur ... compare 1 THEN Valeur ... retourne 1 [WHEN Valeur ... compare 2 THEN Valeur ... retourne 2][ELSE Valeur ... retourne par dfaut] END CASE WHEN Condition 1 THEN ... Valeur retourne 1 [WHEN ... Condition 2 THEN Valeur ... retourne 2][ELSE Valeur ... retourne par dfaut] END SELECT rubInt, CASE rubInt ... WHEN 3 THEN 'trois' WHEN 4 ... THEN 'quatre' ELSE 'autre' END WLangage.book Page 414 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 415 Ou : 12.1.52 MATCH AGAINST La fonction MATCH AGAINST permet d'obtenir l'indice de pertinence de l'enregistrement lors d'une recherche full-text. Format d'utilisation : Ou : Liste des rubriques correspond la liste des rubriques de l'index spares par des virgules (l'ordre des rubriques n'est pas important). Valeur correspond la valeur recherche dans les diffrentes rubriques. Ce paramtre peut cor- respondre une valeur littrale ou un nom de paramtre. La valeur de recherche peut contenir les lments suivants : [ALL] permet de forcer le remplacement des espa- ces par des "+" dans la valeur recherche. Exemple : Dans cet exemple, SAI_Rechercher est un champ de saisie et IdUserConnect est une variable. Pour plus de dtails sur la recherche full-text, con- sultez laide en ligne. SELECT rubInt, CASE WHEN ... rubInt=3 THEN 'trois' WHEN ... rubInt=4 THEN 'quatre' ELSE ... 'autre' END MATCH(Liste des rubriques) ... AGAINST [ALL] Valeur Elment Signification Un mot tout seul Le mot indiqu sera recher- ch. La pertinence sera aug- mente si le texte contient ce mot. Exemple : "WinDev" recher- che le mot "WinDev". Deux mots spa- rs par un espace Recherche l'un ou l'autre des mots. Exemple : "WinDev WebDev" recherche les textes conte- nant soit "WinDev" soit "Web- Dev". Un mot prcd du signe "+" Le mot indiqu est obliga- toire. Exemple : "+WinDev" recher- che les textes contenant obli- gatoirement "WinDev". Un mot prcd du signe "-" Le mot indiqu ne doit pas tre prsent dans le texte. Exemple : "-Index" recherche les textes ne contenant pas "Index". Un mot prcd du signe "~" Le mot indiqu ne doit pas tre prsent dans le texte. Exemple : "-Index" recherche les textes ne contenant pas "Index". Un ou plusieurs mots entours de guillemets Les mots indiqus sont recherchs groups et dans l'ordre. Attention : si l'option "Igno- rer les mots infrieurs " est diffrente de 0, les mots entre les guillemets inf- rieurs la taille prcise ne seront pas recherchs. Un mot suivi du signe "*" La recherche est une recher- che du type "Commence par" le mot indiqu. MaRequte est une chane = [SELECT * FROM Contact WHERE MATCH(Contact.Nom, Contact.Prenom, Contact. CommentaireHTML, Contact.CommentaireTexteBrut, Contact.Commentaires, Contact.Telephone, Contact.Bureau, Contact.Portable, Contact.Mail, Contact.MSN, Cotact.Site_internet, Contact.Pays, Contact.NumFax, Contact.Ville) AGAINST (' ] MaRequte = MaRequte + SAI_Rechercher + [ ') AND Contact.IDUtilisateur = ] MaRequte = MaRequte + IdUserConnect + [ ORDER BY Nom DESC ] HExcuteRequteSQL(REQ_RECH, hRequteDfaut, MaRequte) POUR TOUT REQ_RECH TableAjouteLigne(Table_Contact_ par_catgorie, ... REQ_RECH.idcontact,REQ_RECH. IDCategorie, IdUserConnect, ... REQ_RECH.Nom, REQ_RECH.Prenom) FIN CAS ERREUR: Erreur(HErreurInfo()) WLangage.book Page 415 Mardi, 23. avril 2013 1:59 13 416 Partie 7 : Gestion des fichiers de donnes 12.1.53 MD5 La fonction MD5 calcule la somme de vrification MD5 de la chane passe en paramtre. La valeur retourne est un entier hexadcimal de 32 caract- res qui peut tre utilis par exemple comme cl de hachage. Format d'utilisation : 12.1.54 SHA et SHA1 Les fonctions SHA et SHA1 calculent la somme de vrification SHA1 160 bits de la chane passe en paramtres selon la norme RFC 3174 (Secure Hash Algorithm). La valeur retourne est une chane hexadcimale de 40 caractres ou bien NULL si l'argument est NULL. Une des possibilits d'utilisa- tion de cette fonction est le hachage de cl Format d'utilisation : MD5(Chane) SHA(Chane) SHA1(Chane) WLangage.book Page 416 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 417 13. HYPERFILESQL CLIENT/SERVEUR 13.1 Prsentation WinDev permet de crer des applications accdant des bases de donnes HyperFileSQL Client/Ser- veur. Une application HyperFileSQL Client/Serveur con- siste excuter l'application sur diffrents postes utilisateur (appels machines clientes) et dpor- ter la ou les bases de donnes et les traitements sur un poste serveur. Ce mode de fonctionnement permet des temps de rponses plus rapides et plus fiables, ainsi qu'une maintenance de la base de donnes facilite. WinDev permet de : crer entirement une application HyperFileSQL Client/Serveur. modifier une application WinDev existante en une application HyperFileSQL Client/Serveur. 13.2 Mettre en place une application Client/Serveur Pour mettre en place une application HyperFileSQL Client/Serveur, les tapes sont les suivantes : 1. Paramtrage du serveur utilis. 2. Connexion des postes client au serveur. 3. Paramtrage des fichiers de donnes sur le ser- veur. 4. Utilisation de l'application. Pour plus de dtails sur HyperFileSQL Client/Ser- veur, consultez laide en ligne. WLangage.book Page 417 Mardi, 23. avril 2013 1:59 13 418 Partie 7 : Gestion des fichiers de donnes 14. FONCTIONS HYPERFILESQL CLIENT/SER- VEUR Les fonctions spcifiques la gestion du moteur HyperFileSQL Client/Serveur sont les suivantes : HActiveTriggerServeur R-active un trigger serveur prcdemment dsactiv par la fonction HD- sactiveTriggerServeur. HAjouteGroupe Ajoute un groupe d'utilisateurs HAjouteLiaison Ajoute une rgle d'intgrit entre deux fichiers sur le serveur HAjouteOptimisationPlanifie Ajoute une tche d'optimisation des fichiers de donnes HyperFileSQL Client/Serveur. HAjouteSauvegardePlanifie Ajoute une planification de sauvegarde complte et diffrentielle sur le ser- veur dfini par la connexion HAjouteTche Ajoute une tche planifie sur le serveur dfini par la connexion. HAjouteUtilisateur Ajoute un utilisateur une base de donnes HAnnuleSauvegarde Annule une sauvegarde en cours. HArrteServeur Arrte un serveur HChangeMotDePasse Change le mot de passe d'un fichier de donnes HyperFileSQL Client/Ser- veur HChargeParamtre Lit un paramtre prcdemment sauvegard partir d'une procdure stoc- ke grce la fonction HSauveParamtre. HClusterAjouteNoeud Active un noeud dans un cluster HyperFileSQL. HClusterArrte Suspend le fonctionnement d'un cluster HyperFileSQL HClusterDmarre Dmarre un cluster HyperFileSQL. HClusterEtat Renvoie l'tat d'un cluster HyperFileSQL en interrogeant son coordinateur HClusterIgnoreSynchro Dsigne un noeud du cluster HyperFileSQL comme source de donnes pour raliser la synchronisation du cluster. HClusterInfoNoeud Renvoie l'tat de chaque noeud du cluster en interrogeant le coordinateur HClusterParamtre Lit et modifie les paramtres d'un cluster HyperFileSQL HClusterSupprimeNoeud Dsactive un noeud dans un cluster HyperFileSQL. HCopieFichier Effectue une copie d'un fichier HyperFileSQL HCreTriggerServeur Ajoute ou modifie un trigger serveur sur le serveur HyperFileSQL. HDconnecteClient Affiche un message sur le(s) poste(s) Client, et dconnecte l'application HDcritTriggerServeur Ajoute ou modifie un trigger serveur. HDmarreServeur Permet de dmarrer un serveur (utilise MantaManager) HDsactiveTriggerServeur Dsactive un trigger Serveur Hyper File Client / Serveur. Ce trigger pourra ensuite tre ractiv grce la fonction HActiveTriggerServeur. HDtruitTriggerServeur Dtruit un trigger serveur. Ce trigger serveur ne sera plus utilisable. HEnvoieMessageVersClient Affiche un message sur le(s) poste(s) Client HEtatServeur Permet de connatre l'tat d'un serveur HExcuteProcdure Excute une procdure ou fonction stocke. HExcuteSauvegardePlanifie Force le dclenchement d'une sauvegarde planifie. HFinInterditAccsBaseDeDon- nes R-autorise l'accs une ou plusieurs bases de donnes accessibles par une connexion HGreCache Permet de paramtrer la gestion des caches dans le moteur HyperFileSQL Client/Serveur HGreServeur Permet de modifier certains paramtres du serveur. WLangage.book Page 418 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 419 HGreTche Active ou dsactive une tche planifie d'un serveur Hyper File Client / Ser- veur. Cette fonction permet galement de connatre l'tat d'une tche plani- fie. HInfoBlocage Renvoie des informations sur le blocage d'un fichier, d'un enregistrement, ou de tous les enregistrements d'un fichier HInfoDroitBaseDeDonnes Permet de connatre les droits accords sur une base de donnes dfinis pour un utilisateur ou un groupe HInfoDroitFichier Permet de connatre les droits accords sur un fichier de donnes pour un utilisateur ou un groupe HInfoDroitServeur Permet de connatre les droits accords sur un serveur un utilisateur ou un groupe HInfoFichier Renvoie les caractristiques d'un fichier prsent sur un serveur HyperFi- leSQL HInfoGroupe Renvoie des informations sur le groupe d'utilisateurs spcifi HInfoLog Renvoie des informations sur les logs du serveur. HInfoPropritBaseDeDonnes Permet de connatre les proprits d'une base de donnes situe sur un serveur HyperFileSQL HInfoPropritFichier Permet de connatre les proprits d'un fichier de donnes situ sur un ser- veur HyperFileSQL HInfoPropritServeur Permet de connatre les proprits d'un serveur HyperFileSQL HInfoSauvegarde Renvoie des informations sur une ou plusieurs sauvegardes effectues sur un serveur Hyper File Client / Serveur. HInfoServeur Renvoie l'information spcifie propos du poste serveur HInfoTche Renvoie les caractristiques d'une tche planifie dans une variable avan- ce de type hTchePlanifie. HInfoUtilisateur Met jour les variables de gestion des utilisateurs avec les informations concernant l'utilisateur spcifi HInterditAccsBaseDeDonnes Interdit tous les accs une base de donnes, ou bien aux bases de don- nes accessibles par une connexion HListeBaseDeDonnes Liste les bases de donnes Client/Serveur associes une connexion HListeElmentStock Renvoie la liste des lments stocks sur un serveur Hyper File (collections de procdures, procdures stockes ou requtes). HListeGroupe Renvoie la liste des groupes d'utilisateurs dfinis pour une connexion HListeOptimisationPlanifie Liste les tches d'optimisation planifies des fichiers de donnes HyperFi- leSQL Client/Serveur pour une connexion HListeParamtre Renvoie la liste des paramtres sauvegards partir des procdures stoc- kes sur le serveur. HListeSauvegardePlanifie Liste les sauvegardes compltes et diffrentielles qui ont t planifies sur un serveur HyperFileSQL Client/Serveur. HListeServeur Liste les serveurs HyperFileSQL installs sur une machine HListeTche Liste les tches planifies d'un serveur. HListeTriggerServeur Liste les diffrents triggers disponibles sur une connexion ou sur un des fichiers de la connexion. HListeUtilisateur Renvoie la liste des utilisateurs dfinis pour une connexion HListeUtilisateurConnect Renvoie la liste les utilisateurs actuellement connects un ou plusieurs fichiers manipuls par un une connexion Client/serveur HMiseAJourCollection Cre ou met jour une collection de procdures sur un serveur Hyper File HMiseAJourRequte Cre ou met jour une requte sur un serveur Hyper File HModifieDroitBaseDeDonnes Modifie les droits donns un utilisateur ou un groupe pour une base de donnes HyperFileSQL Client/Serveur WLangage.book Page 419 Mardi, 23. avril 2013 1:59 13 420 Partie 7 : Gestion des fichiers de donnes HModifieDroitFichier Modifie les droits accords sur un fichier de donnes HyperFileSQL Client/ Serveur pour un utilisateur ou un groupe HModifieDroitServeur Modifie les droits accords sur un serveur HyperFileSQL pour un utilisateur ou un groupe HModifieGroupe Modifie les informations du groupe en fonction des lments prsents dans les variables de gestion de groupe correspondantes HModifieOptimisationPlanifie Modifie une tche d'optimisation planifie sur le serveur HyperFileSQL dfini par la connexion. Cette tche est prsente dans une variable avance de type hOptimisationPlanifie. HModifiePropritBaseDeDon- nes Modifie les proprits d'une base de donnes situe sur un serveur Hyper- FileSQL HModifiePropritFichier Modifie les proprits d'un fichier HyperFileSQL situ sur un serveur HModifiePropritServeur Modifie les proprits d'un serveur HyperFileSQL HModifieSauvegardePlanifie Modifie une planification de sauvegarde complte HModifieTche Modifie une tche planifie sur le serveur dfinie par la connexion. Cette tche est prsente dans une variable avance de type hTchePlanifie. HModifieUtilisateur Modifie les informations d'un utilisateur en fonction des lments prsents dans les variables de gestion des utilisateurs correspondantes HPriorit Permet de connatre ou de modifier la priorit de l'application appelante. HPrioritClient Modifie la priorit d'une application cliente HPurgeRepTravail Purge et dtruit le rpertoire temporaire prcdemment cr lors de l'excu- tion de la fonction HRepTravailServeur HQualitConnexion Renvoie l'indice de qualit de la connexion : plus l'indice est lev et plus la connexion est rapide HRAZClient Initialise la structure de gestion des postes Client (structure HClient) HRAZGroupe Initialise les variables de gestion des groupes avec les valeurs par dfaut HRAZUtilisateur Initialise les variables de gestion des utilisateurs avec les valeurs par dfaut HReconnecte Effectue une reconnexion au serveur pour toutes les connexions interrom- pues. HRcupreLog Rcupre dans un fichier les logs du serveur raliss entre deux dates don- nes HRepTravailServeur Renvoie le chemin d'un rpertoire temporaire sur le serveur. Ce rpertoire est automatiquement cr sur le serveur. Les procdures stockes excu- tes sur le serveur auront les droits d'criture dans ce rpertoire. Ce rper- toire sera automatiquement vid et dtruit lors de la dconnexion du client. HRestaureSauvegarde Permet de restaurer une sauvegarde effectue grce la fonction HSauve- garde (ou via le Centre de Contrle Hyper File). HSauvegarde Ralise la sauvegarde du contenu d'un serveur Hyper File : toutes les bases du serveur, plusieurs ou une seule base de donns, un ou plusieurs fichiers. Cette sauvegarde peut tre ralise alors quune ou plusieurs bases de donnes sont en cours d'utilisation. HSauveParamtre Sauve une valeur persistante partir d'une procdure stocke. Cette valeur pourra tre lue grce la fonction HChargeParamtre. HSimuleRseau Simule le fonctionnement de HyperFileSQL Client/Serveur sur un rseau ADSL ou 3G HSupprimeBaseDeDonnes Supprime une base de donnes prsente sur un serveur HyperFileSQL HSupprimeCollection Supprime une collection de procdures stockes d'un serveur Hyper File. HSupprimeFichier Supprime les fichiers HyperFileSQL (fichier .fic, .ndx et .mmo s'ils existent) sur le serveur HSupprimeGroupe Supprime un groupe d'utilisateurs associ une connexion, sur le serveur HSupprimeLiaison Supprime une rgle d'intgrit entre deux fichiers sur le serveur WLangage.book Page 420 Mardi, 23. avril 2013 1:59 13 Partie 7 : Gestion des fichiers de donnes 421 HSupprimeOptimisationPlani- fie Supprime une tche d'optimisation planifie de fichiers de donnes Hyper- FileSQL Client/Serveur HSupprimeParamtre Supprime un paramtre prcdemment sauv avec la fonction HSauvePa- ramtre. HSupprimeRpertoire Supprime un rpertoire prsent dans une base de donnes HyperFileSQL Client/Serveur HSupprimeRequte Supprime une requte d'un serveur Hyper File. HSupprimeSauvegarde Supprime une sauvegarde prcdemment effectue avec la fonction HSau- vegarde. La sauvegarde est supprime physiquement du disque. HSupprimeSauvegardePlani- fie Supprime une planification de sauvegarde complte et/ou diffrentielle sur un serveur HyperFileSQL Client/Serveur HSupprimeTche Supprime une tche planifie d'un serveur Hyper File Client / Serveur. HSupprimeUtilisateur Supprime un utilisateur associ une connexion sur le serveur HSurAppelServeur Personnalise la gestion de l'affichage d'un message sur le poste client, et la gestion de la dconnexion d'un poste client HTransactionListe Liste les transactions en cours ou interrompues sur le serveur de la con- nexion spcifie Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. WLangage.book Page 421 Mardi, 23. avril 2013 1:59 13 422 Partie 7 : Gestion des fichiers de donnes WLangage.book Page 422 Mardi, 23. avril 2013 1:59 13 Index 423 Symbols .JNL 356 .Net 316 Assemblage 316 .REP 348 A Acclrer traitements 363 Accs aux bases de donnes tierces 392 Accs distant Fichier HyperFileSQL 390 ADD_MONTHS 413 Aide Code 32 AJAX 222 Alias de Fichier 339 Appels entrants 271 Appels sortants 273 Archive 200 Fonctions ZIP 202 Argument de recherche 325 Assemblage (.NET) 316 Assigner fichier 347 Assistant de code 31 AVG 411 B Back (Gestion) 125 Back Office 390 Base de donnes 392 Tierce 392 Binaire Fonctions 153 Mmos binaires 346 Blocage 371 Enregistrement 372 Fichier HyperFileSQL 371 Bote de dialogue 128 Fonctions 132 Multilangue 130 BOTTOM 412 Boucle (Instruction) 76 Bouton de regroupement 30 Buffer (Variable) 42 Type Buffer 42 C Caractre (Variable) 41 CD (graver) 204 Certificat SSL 235 Chane (Variable) 41 Chane ASCIIZ 41 Chane de caractres 155 Fonctions 156 Manipulation 155 Chane fixe sur 41 Chane Pascal sur 41 Champ Fonctions 137 Proprits 137 Clavier Traitements associs 33 Cl 324 Cl compose 326 Lecture selon cl 329 Type de cl 324 Cl compose 324, 326 Cl de parcours 330 Cl doublon 324, 331 Cl numrique 326 Cl texte 325 Cl unique 324, 343 Client HyperFileSQL Client/Serveur 417 Client/Serveur 417 COALESCE 414 Code Aide 32 Assistant 31 Compltion automatique 31 Couleur 31 Historique 32 Indentation automatique 32 Points darrt 33 Saisie assiste 31 Traduction des messages 33 Traitements spcifiques 33 Vrification 32 Collection de procdures 99 Communication 243 E-mails 245 Fax 278 Fichier XML 312 FTP / RPC WinDev 282 WLangage.book Page 423 Mardi, 23. avril 2013 1:59 13 424 Index Page HTML 281 Serveur de WebServices XML 306 Serveur FTP 285 SOAP 302 Socket 287 Tlphonie 271 Thread 294 Compltion automatique 31 CONCAT 409 Constante 46 Continuer (Instruction) 87 Contrle de lintgrit 343 Cookies 216 Couleur Code 31 COUNT 411 Critre de recherche 325 Cryptage fichiers HyperFileSQL 342 CTI 271 D Date Fonctions 159 Date (Variable) 42 Type Date 42 Type DateHeure 43 Type Dure 43 Type Heure 43 DateHeure (Variable) 43 Dates et heures 159 DDE Fonctions 193 Dead lock 372 DECODE 414 Dplacement dans un fichier 333 Description de fichier (Variable) 57 De liaison (Variable) 58 De rubrique (Variable) 59 Dialogue (botes de dialogue) 128 Document XML Fonctions 314 Doublon 324, 331 Doublons 377 Downpload 215 Drag and Drop 133 Automatique 133 Depuis lexplorateur 135 Fonctions 136 Programm 134 Driver ODBC sur HyperFileSQL 364, 365 Dure (Variable) 43 E Ecrire un e-mail 251 E-mail 245 Ecrire 251 Fonctions 251 POP 3 et SMTP 246 Simple MAPI 248 Email Mise jour des fichier HyperFileSQL 390 Enregistrement 328 Ajouter 332 Charg en mmoire 330 Ecrire 328 Lire 328 Modifier 332 Point 328, 330 Rechercher 329 Supprimer 332 Entier (Variable) 40 Envoyer des fax 278 Erreur Gestion assiste 376 Gestion des exceptions 105 Etreinte mortelle 372 Evnement Windows (fonctions) 187 Excel 199 Fonctions 199 Exception (Mcanisme) 105 Excutable Fonctions 192 Explorateur (Drag and Drop) 135 Externe (Mots rservs) 90 F Fax 278 Application denvoi de fax 279 Fonctions 280 Serveur de fax 278 Fentre Fonctions 119 Proprits 137 Fentre MDI (fonctions) 121 Fentre popup MonChampPopup 93 WLangage.book Page 424 Mardi, 23. avril 2013 1:59 13 Index 425 Fichier Zip 200 Fichier archive (fonctions) 202 Fichier de rplication 387, 391 Fichier HyperFileSQL Accs distant (RPC) 390 Alias 339 Assigner 347 Blocage 371 Cl 343 Crer 323 Fermer 323 Identifiant 325, 343 Journal 356 Lecture selon cl 329 Mmos 346 Mise jour par email 390 Nom logique 323 Nom long 323, 348 Optimisation 363 Ouvrir 323 Parcours 330 Parcours selon un filtre 331 Positionnement 333 Protection 342 Restauration 359 Sauvegarde 359 Taille suprieure 2 Go 324 Variable 328 Vue 381 Fichier journal 356 Fichier mmo 346 Fichier temporaire 362 Fichier xBase 334 Fichier XLS 199 Fichier XML 312 Fonctions 314 Fichiers externes Fonctions 168 Manipulation de fichiers 167 Manipulation des disques et de rpertoires 168 Manipulation du contenu 167 Prsentation 167 Filtre 331 Finances (fonctions) 154 Fonction Archive 202 Binaire 153 Bote de dialogue 132 Chane de caractres 156 Champs dune fentre 137 Date 159 DDE 193 Drag and drop 136 E-mail 251 Evnement Windows 187 Excutable 192 Fax 280 Fentre 119 Fichiers externes 168 Finances 154 Fonctions diverses 188 FTP 286 Graphe 164 Gravure 205 HTTP 281 HyperFileSQL 393 HyperFileSQL Client/Serveur 418 Impression 177 Java 188 LDAP 270 Matrice 153 MCI 183 MDI 121 Menu 121, 124 Messages 132 Net 284 Options de menu 121, 124 Page 123 Ports srie et parallle 181 Presse-papiers 180, 181 Projet 195 Registre 180 Rseau 194 Service 184 SOAP 305 Socket 291 Souris 181 SQL 405 Statistique 154 Surcharger une fonction WLangage 102 Systme 185 Tlphonie 274 Thread 301 Twain 182 USB 182, 183 Windows 186 XLS 199 XML 314 WLangage.book Page 425 Mardi, 23. avril 2013 1:59 13 426 Index ZIP 202 Zone mmoire 166 Fonctions SNMP 194 Framework 316 Front Office 390 FTP 285 FTP (fonctions) 286 FTP / RPC WinDev 282 G Gnrer un Webservice XML 308 Gestion assiste des erreurs 376 Goto (Instruction) 77 Graphe 3 dimensions 162 Graphes 161 Boursier 162 Courbe 162 Cration 163 Exemples 164 Fonctions 164 Histogramme 161 Nuage de points 162 Prsentation 161 Secteur 161 Types 161 Valeurs par dfaut 163 Gravage 204 Graver 204 Fonctions 205 Guide 32 H Heure Type DateHeure 43 Type Dure 43 Type Heure 43 Historique du code 32 HTTP (fonctions) 281 HyperFileSQL Client/Serveur 417 Driver ODBC 364, 365 Fonctions 393 Fonctions Client/Serveur 418 Gestion de laccs distant (RPC) 390 Gestion du NULL 341 Mise jour par email 390 Proprits 400 Rplication 387, 391 SQL 367 Triggers 385 Vue 381 I Identifiant 325 Identifiant automatique 343 IF_NULL 414 Importer un Webservice XML 306 Impression 174 Dessins 176 Fonctions 177 Images 176 Paramtres 174 Polices 175 Prsentation 174 Principes 174 Texte 176 Indentation automatique (code) 32 Index xBase 334 INSTR 410 Instruction 76 Boucle 76 Compose 76 Continuer 87 Goto 77 Pour 77 Pour tous (parcours de chanes) 80 Pour tous (parcours de champs) 81 Pour tous (parcours de fichiers) 78 Pour tous (parcours de tableaux) 82, 83 Pour tout (parcours de chanes) 80 Pour tout (parcours de champs) 81 Pour tout (parcours de fichiers) 78 Pour tout (parcours de tableaux) 82, 83 Renvoyer 88 Retour 87 Selon 84 Si 85 Sortir 88 Intgrit rfrentielle 343, 344 Inter blocage 372 Internaute Cookies 216 IS_NULL 414 WLangage.book Page 426 Mardi, 23. avril 2013 1:59 13 Index 427 J J++ 364 Java (fonctions) 188 JDBC 364 Journal 356 Programmation 359 L Langage SQL 367 LAST_DAY 413 LDAP 270 LEFT 406 LEN 410 LENGTH 410 Liaison Types de liaisons 344 LOWER 410 LPAD 409 LTRIM 407 M MaFentre (Mots rservs) 91 MaPage (Mots rservs) 91 MAPI 248 MaSource (Mots rservs) 92 Matrices 151 Fonctions 153 Manipulation 151 MAX 412 MCI (fonctions) 183 MDI Fonctions 121 Mcanisme des exception 105 Mmo 346 Menu Fonctions 121, 124 menu 324 Menu diteur (Ruban) 30 Message (fonctions) 132 MID 407 MIN 412 Mode de blocage 371, 373 Modulo (Mots rservs) 92 MoiMme (Mots rservs) 92 MonChampPopup (Mots rservs) 93 Montaire (Variable) 41 MonEtat (Mots rservs) 94 MonFichier (Mots rservs) 94 MonParent (Mots rservs) 94 MONTHS_BETWEEN 413 Mot de passe 342 Variable 342 Mots rservs 90 Externe 90 MaFentre 91 MaPage 91 MaSource 92 Modulo 92 MoiMme 92 MonChampPopup 93 MonEtat 94 MonFichier 94 MonParent 94 Stop 95 Multilangue 33 Bote de dialogue 130 N Net (fonctions) 284 NEW_TIME 413 NEXT_DAY 414 Nom logique 323 Nom long 323, 348 NULL 45 NULL dans HyperFileSQL 341 Numrique (Variable) 41 NVL 414 O Objet automation (Variable) 54 Objet automation dynamique (Variable) 55 Oprateur 67 Arithmtiques 68 Binaires 68 Comparaison 70 Divers 74 Indirection 73 Logiques 67 Sur adresse 73 Sur chanes de caractres 71 Optimisation 363 Option de menu Fonction 121, 124 WLangage.book Page 427 Mardi, 23. avril 2013 1:59 13 428 Index P Page Fonctions 123 Prsentation 123 Page HTML 281 Rcuprer 281 Paramtres dune procdure 100 Parcours de fichier 330 Parcours selon filtre 331 PATINDEX 411 Priphrique Twain (fonctions) 182 Point darrt 33 Police (Variable) 60 POP 3 246 Popup (fentre) MonChampPopup 93 Ports srie et parallle (fonctions) 181 Pour (Instruction) 77 Pour tous, parcours de chanes (Instruction) 80 Pour tous, parcours de champs (Instruction) 81 Pour tous, parcours de fichiers (Instruction) 78 Pour tous, parcours de tableaux (Instruction) 82, 83 Pour tout, parcours de chanes (Instruction) 80 Pour tout, parcours de champs (Instruction) 81 Pour tout, parcours de fichiers (Instruction) 78 Pour tout, parcours de tableaux (Instruction)82, 83 Prcdent (Bouton) 125 Presse-papiers (fonctions) 180, 181 Procdure 96 Appeler 100 Collections de procdures 99 Dclarer 99 Globale 96 Locale 98 Paramtres 100 Projet Fonctions 195 Proprit DateHeure 43 Description de fichier 57 Description de liaisons 59 Description de rubriques 60 Dure 43 Fentres et champs 137 Heure 43 HyperFileSQL 400 Protection des fichiers 342 Protocole POP 3 246 SMTP 246 SOAP 302 SSL 235 R Recherche A lidentique 325 Gnrique 325 Recherche denreg. 329 Rcuprer des pages HTML 281 Rel (Variable) 41 Registre (fonctions) 180 Rgle de porte des variables 66 Regroupement 30 Renvoyer (Instruction) 88 REPLACE 408 Rplication de donnes 387, 391 Rseau (fonctions) 194 Retour (Instruction) 87 RIGHT 406 ROUND 414 RPAD 409 RTRIM 408 Ruban (Editeur) 30 Rubrique 328 Cl 324 S Scuriser les transactions (SSL) 235 Selon (Instruction) 84 Smaphore dans les threads 296 Serveur HyperFileSQL Client/Serveur 417 Serveur de fax 278 Programmation 279 Serveur FTP 285 Serveur SOAP 302 Excuter des procdures 302 Service (fonctions) 184 Si (Instruction) 85 Signaux 298 Site AJAX 222 Lien avec WinDev 390 SMTP 246 SNMP (Fonctions) 194 WLangage.book Page 428 Mardi, 23. avril 2013 1:59 13 Index 429 SOAP 302 Fonctions 305 Socket 287 Fonctions 291 Sortir (Instruction) 88 SOUNDEX 413 SOUNDEX2 413 Source de donnes (Variable) 56 Souris Fonctions 181 Traitements associs 33 SQL 367 AVG 411 BOTTOM 412 COUNT 411 Fonctions 405 HyperFileSQL 367 INSTR 410 LEFT 406 LEN 410 LENGTH 410 LOWER 410 LTRIM 407 MAX 412 MID 407 MIN 412 PATINDEX 411 RIGHT 406 RTRIM 408 SUBSRING 407 SUBSTR 407 SUM 412 TOP 412 UPPER 410 SSL 235 Statistiques (fonctions) 154 Stop (Mots rservs) 95 STRING_AGG 409 Structure (Variable) 52 Structure dynamique (Variable) 54 SUBSTR 407 SUBSTRING 407 SUM 412 Surcharger une fonction WLangage 102 SYSDATE 414 Systme (fonctions) 185 T Tableau dynamique (Variable) 48 Tableau fixe (Variable) 50 Tableau simple (Variable) 47 Tlcharger un fichier 213, 215 Tlphonie 271 Appels entrants 271 Appels sortants 273 Fonctions 274 Temporaire (Fichier) 362 Thread 294 Fonctions 301 Grer les smaphores 296 Signaux 298 TOP 412 Touche "Prcdent" 125 Traduction Messages 33 Traitements spcifiques 33 Transaction 353 Programmation 354 Transaction scurise 234 TRANSLATE 409 Triggers 385 TRIM 408 TRUNC 414 Twain (fonctions) 182 Type Buffer 42 Chane 41 Date 42 DateHeure 43 Description de fichier 57 Description de liaison 58 Description de rubrique 59 Dure 43 Heure 43 Montaire 41 Numrique 41 Police 60 Rel 41 Source de donnes 56 Tableau dynamique 48 Tableau fixe 50 Tableau simple 47 Variant 44 U Unicit 324 Unicit cl 343 Upload 213 WLangage.book Page 429 Mardi, 23. avril 2013 1:59 13 430 Index UPPER 410 USB (fonctions) 182, 183 V Variable Description de fichier 57 Description de liaison 58 Description de rubrique 59 Globale 64 Locale 64 Objet automation 54 Objet automation dynamique 55 Police 60 Prsentation 39 Rgle de porte 66 Source de donnes 56 Structure 52 Structure dynamique 54 Type avanc 47 Type Buffer 42 Type caractre 41 Type chane 41 Type date 42 Type dateheure 43 Type dure 43 Type entier 40 Type heure 43 Type montaire 41 Type numrique 41 Type rel 41 Type simple 39 Type tableau dynamique 48 Type tableau fixe 50 Type tableau simple 47 Type variant 44 Variable compose 51 Variable de fichier 328 Variant (Variable) 44 Vrification du code 32 Verrou 371 Volet (menu ruban) 30 Vue HyperFileSQL 381 Programmation 382 W WDBackup 359 WebService XML 306 Importer 306 Webservice XML Gnrer 308 WinDev Fonctions diverses 188 WinDev (Back office) 390 Windows 180 Fonctions 186 WLangage 37 Code navigateur 38 Code serveur 38 Surcharger une fonction WLangage 102 X xBase 334 XLS 199 Fonctions 199 XML 312 Fonctions 314 Z Zone mmoire (fonctions) 166 WLangage.book Page 430 Mardi, 23. avril 2013 1:59 13