Vous êtes sur la page 1sur 216

WinDev 18, WebDev 18, WinDev Mobile 18 Documentation version 18(1) - 1012

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


Visitez rgulirement le site www.pcsoft.fr, espace tlchargement, pour vrifier si des mises jour sont proposes.

1. INTRODUCTION

37

1.1 Quelques caractristiques du WLangage ......................................................................... 37 1.2 La programmation en code serveur et navigateur ...........................................................38

Adresse e-mail Support Technique Gratuit : supportgratuit@pcsoft.fr.

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

Conseil : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation, abonnezvous 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.

2.2 Oprations disponibles sur les dates, heures, dures, ... ................................................44
Sommaire 3

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

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

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

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

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

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

3.3 Oprateurs arithmtiques ................................................................................................68


3.3.1 Prsentation ..........................................................................................................................68 3.3.2 Rgles de calcul .....................................................................................................................68 3.3.3 Notes.....................................................................................................................................68

5. MOTS RSERVS

90

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 4 Sommaire

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
Sommaire 5

5.9 MonFichier ........................................................................................................................94 5.10 MonParent ......................................................................................................................94 5.11 STOP (appel du dbogueur) ............................................................................................95

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

6. PROCDURE ET FONCTION

96

7.5 Fonctions de gestion des exceptions ..............................................................................108

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

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

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

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

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

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

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

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

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

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

7. GESTION DES EXCEPTIONS

105

8.7 Hritage de classe ........................................................................................................... 115


8.7.1 Syntaxe ...............................................................................................................................116 8.7.2 Redfinition de mthodes ....................................................................................................116

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

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

7.3 Mcanisme des exceptions spcifiques ..........................................................................107


7.3.1 Prsentation ........................................................................................................................107 7.3.2 Syntaxes de dclaration .......................................................................................................107

Sommaire

Sommaire

2. GESTION DES PAGES

123

5.3 "Drag and Drop" programm .........................................................................................134


5.3.1 Principe...............................................................................................................................134 5.3.2 Programmation....................................................................................................................134

2.1 Prsentation .................................................................................................................... 123 2.2 Fonctions de gestion des pages ..................................................................................... 123 2.3 Fonctions de gestion des menus .................................................................................... 124

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

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

5.5 Fonctions de gestion du "Drag and Drop" ......................................................................136

6. GESTION DES CHAMPS

137

3.2 Empcher lutilisation du bouton "Prcdent" ............................................................... 126


3.2.1 Fonctionnement...................................................................................................................126 3.2.2 Mise en place.......................................................................................................................126

6.1 Prsentation .....................................................................................................................137 6.2 Fonctions gnrales de manipulation des champs ........................................................137

3.3 Gestion de la synchronisation ........................................................................................ 126


3.3.1 Prsentation ........................................................................................................................126 3.3.2 Synchronisation par dfaut...................................................................................................126

7. PROPRITS DES FENTRES, DES PAGES ET DES CHAMPS

140

3.4 Synchronisation par programmation ..............................................................................127

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

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

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

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

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

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

2.3 Manipulation des chanes de caractres sous Pocket PC ..............................................156 2.4 Fonctions de gestion des chanes de caractres ............................................................156

Sommaire

Sommaire

3. MANIPULER DES DATES ET DES HEURES

159

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

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

7.5 Fonctions de gestion des zones mmoires partages ....................................................173

8. IMPRIMER EN WLANGAGE

174

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

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

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 6. MANIPULER DES FICHIERS EXTERNES

166 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

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

10

Sommaire

Sommaire

11

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

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

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

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

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

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

12.4 Fonctions d'archivage ...................................................................................................202

13. GRAVER UN CD OU UN DVD

204

3.4 Tester la gestion des cookies dans un site WebDev .......................................................217

13.1 Prsentation ...................................................................................................................204 13.2 Gravure dun CD / DVD .................................................................................................204 13.3 Fonctions de gravure ....................................................................................................205

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

14. FONCTIONS DACCS AU POCKET PC 15. FONCTIONS SPCIFIQUES WINDEV MOBILE

206 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

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

15.2 Clavier du Pocket ..........................................................................................................208


15.2.1 Prsentation ......................................................................................................................208 15.2.2 Fonctions WLangage ..........................................................................................................209

5.3 Manipulation d'objets Javascript externes depuis le WLangage ...................................221

12

Sommaire

Sommaire

13

6. AJAX

222

10.3.3 Etape 3 : Certification du certificat sur le serveur .................................................................236

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

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

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

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

7. GADGETS VISTA

227

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

7.1 Prsentation ....................................................................................................................227 7.2 Cration du Gadget ........................................................................................................227


7.2.1 Les tapes ...........................................................................................................................227 7.2.2 Gnration du gadget...........................................................................................................228

PARTIE 6 : COMMUNICATION
1. LA COMMUNICATION 243
1.1 Communication avec WinDev / WebDev ........................................................................243 1.2 Communication avec WinDev Mobile ............................................................................244

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

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

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

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

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 14 Sommaire

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

Sommaire

15

3. ACCDER LOTUS NOTES ET OUTLOOK

253

5. SALESFORCE

267

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

5.1 Utiliser le service Salesforce ............................................................................................ 267


5.1.1 Prsentation ........................................................................................................................ 267 5.1.2 Comment le faire ? ..............................................................................................................267

5.2 Fonctions Salesforce ....................................................................................................... 267

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

6. FLUX RSS

269

6.1 Prsentation ....................................................................................................................269 6.2 Comment le faire ? .........................................................................................................269 6.3 Fonctions de gestion des flux RSS ..................................................................................269

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

7. SERVEUR LDAP 8. WINDEV ET LA TLPHONIE

270 271

7.1 Prsentation .................................................................................................................... 270

8.1 Prsentation ....................................................................................................................271 8.2 Grer les appels entrants ................................................................................................271


8.2.1 Les diffrentes tapes.......................................................................................................... 271 8.2.2 Exemple .............................................................................................................................. 272

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

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

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

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

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

9.3 Fonctions WLangage ...................................................................................................... 277

4.4 Gestion des documents Google .....................................................................................265


4.4.1 Prsentation ........................................................................................................................265 4.4.2 Comment grer les documents Google ? ...............................................................................265

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

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

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

16

Sommaire

Sommaire

17

10.4 Configurer le serveur de fax par programmation ........................................................279


10.4.1 Options du serveur de fax ...................................................................................................279 10.4.2 Astuces .............................................................................................................................280

15. GESTION DES CLS BLUETOOTH

292

10.5 Fonctions de gestion des fax ........................................................................................280

11. RCUPRER DES PAGES HTML

281

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

11.1 Prsentation .................................................................................................................... 281 11.2 Fonctions HTTP ............................................................................................................... 281

12. GESTION DE FICHIERS SUR INTERNET

282

16. GESTION DES THREADS

294

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

16.1 Prsentation ...................................................................................................................294


16.1.1 D'une gestion simple des threads vers une gestion avance ...............................................294 16.1.2 Exemple ............................................................................................................................ 294

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

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

12.3 Fonctions Net ................................................................................................................284

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

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

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

13.2 Fonctions FTP .................................................................................................................286

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

14. GESTION DES SOCKETS

287

14.1 Prsentation ...................................................................................................................287


14.1.1 Diffrentes possibilits.......................................................................................................287 14.1.2 Exemple ............................................................................................................................287

16.7 Fonctions de gestions des threads .................................................................................301

17. SOAP

302

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

17.1 Prsentation ...................................................................................................................302


17.1.1 WinDev / WebDev et le protocole SOAP.............................................................................. 302 17.1.2 Exemple ............................................................................................................................ 302

14.3 Application WinDev "Serveur simplifi" ........................................................................288


14.3.1 Le serveur simplifi ............................................................................................................288 14.3.2 Mode de transmission des informations..............................................................................289

17.2 Excuter des procdures sur un serveur SOAP .............................................................302


17.2.1 Principe d'utilisation.......................................................................................................... 302 17.2.2 La structure SOAP..............................................................................................................303

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

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

14.5 Fonctions Socket ........................................................................................................... 291

17.4 Fonctions SOAP .............................................................................................................305

18

Sommaire

Sommaire

19

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

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

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

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

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

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

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

2. FONCTIONNALITS AVANCES

339

19.3 Fonctions de gestion des documents XML ................................................................... 314

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

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

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

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

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

20.5 Crer le programme dinstallation dun assemblage .NET .......................................... 318 20.6 Utiliser des assemblages .NET dans une application WinDev ..................................... 319

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

20

Sommaire

Sommaire

21

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.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.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.17 Provider OLE DB pour HyperFileSQL .............................................................................365


2.17.1 Prsentation...................................................................................................................... 365 2.17.2 Installation ........................................................................................................................ 365 2.17.3 Configuration.....................................................................................................................366

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

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

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

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

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

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

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

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

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

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

2.15 Driver ODBC sur HyperFileSQL ......................................................................................364


2.15.1 Prsentation ......................................................................................................................364 2.15.2 Configuration .....................................................................................................................364

5. LES VUES HYPERFILESQL

381

5.1 Prsentation des vues HyperFileSQL ...............................................................................381 5.2 Intrts des vues .............................................................................................................381 5.3 Manipulation des vues ....................................................................................................381

22

Sommaire

Sommaire

23

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

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 Sommaire 25

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 11. PROPRITS HYPERFILESQL


24 Sommaire

393 400

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

PARTIE 1 Editeur de code

14. FONCTIONS HYPERFILESQL CLIENT/SERVEUR

418

26

Sommaire

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 permet d'accder tout moment tous les traitements d'un objet.

1.1 Lditeur de code


Lditeur de code permet de saisir tous les traitements en WLangage (le langage de programmation intgr WinDev, WebDev et WinDev Mobile). Il permet 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, ...

Partie 1 : Editeur de code

29

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.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. L'ensemble des options slectionnes est automatiquement intgr dans le code lors de la validation (touche ENTREE). lancer les assistants de code. Ces assistants permettent 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 slectionner.

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 "Environnement", droulez "Options" puis slectionnez "Options de lditeur de code".

1. Bouton WinDev/WebDev/WinDev Mobile (en haut gauche). Ce bouton permet dafficher le "A propos" du produit en cours. 2. 3. Affichage des barres doutils des versions prcdentes (mode compatible). Affichage des menus droulants des versions prcdentes (mode compatible).

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 : inutile de rechercher le nom exact d'une variable globale 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, ... contenant 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.

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 donnes par les diffrents crans de l'assistant pour obtenir la syntaxe correspondante. Lutilisation de ces assistants de code nest bien entendu pas obligatoire. 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 correspondant.

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.

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 saisie grce diffrentes bulles. Cette aide apparat lorsque le nom de la fonction est entirement saisi. Si diffrentes syntaxes sont disponibles pour la fonction en cours, des flches apparaissent dans les diffrentes bulles. Pour modifier la syntaxe active, utilisez les touches [Alt] + [Flche droite] ou [Alt] + [Flche gauche]. Une bulle d'aide affiche la description du paramtre 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 utilise sur un paramtre dj saisi. Partie 1 : Editeur de code 31

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 flche), soit deffectuer une action par dfaut (clic sur licne du bouton).

30

Partie 1 : Editeur de code

Une bulle d'aide affiche la description du rsultat (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 nouvelle fonction). - si la combinaison de touches [Alt + F1] est utilise 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 produit.

Dans chaque sous-rpertoire, des fichiers ".FIC", ".NDX" et ".MMO" correspondants au nom des fentres, du projet, ... contiennent l'historique. Ces fichiers peuvent au bout d'un certain temps occuper 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.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 diffrents. 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 multilingues est dtaill dans laide en ligne.

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 lment d'un type donn. Pour plus de dtails, consultez laide en ligne.
Reprage du code modifi

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 didentifier le type de problme rencontr. Plusieurs types de messages peuvent tre affichs dans ce volet : les warnings, affichs en orange, alertent des risques 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 fentre, de page ou chaque recompilation du projet des problmes potentiels dtects sur les interfaces.

1.2.10 Gestion des points darrt


Lors du test de lapplication sous lditeur, les points darrt permettent de lancer automatiquement le dbogueur partir dune ligne donne. Pour plus de dtails, consultez laide en ligne.

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 colores disparaissent automatiquement.
Correction du code saisi

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 lditeur de code". 2. Dans longlet "Code", cochez loption "Sauver lhistorique des modifications du code". Cette gestion de lhistorique cre un sous-rpertoire "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 ...

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 lutilisation de la souris ou du clavier, cliquez sur une des icnes proposes.

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 dsormais une liste des corrections possibles. Cette liste prsente le nom des variables et/ou des lments du projet pouvant correspondre. le correcteur d'orthographe pour les commentaires et les chanes de caractres.
Marques de positionnement

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 "Rindentation auto.".

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.

32

Partie 1 : Editeur de code

Partie 1 : Editeur de code

33

PARTIE 2 Syntaxe de base du WLangage

34

Partie 1 : Editeur de code

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 permet d'accder tout moment tous les traitements d'un objet.

1.1 Quelques caractristiques du WLangage


Les fonctions du WLangage peuvent s'crire indiffremment 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 pratique 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 programmation vnementielle sans mme avoir la grer. En effet, pour chaque objet cr avec WinDev, WebDev ou WinDev Mobile, il est possible d'associer un ou plusieurs traitements qui s'excuteront sur laction d'un vnement donn. Vous navez rien grer, vous n'aurez qu' saisir chaque traitement. En WebDev, les traitements peuvent tre saisis : soit en code serveur : le traitement saisi sexcutera 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'initialisation 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 lorsque le champ est modifi, dautres traitements lis dautres vnements 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 permet d'illustrer l'utilisation de la fonction. Tous les mots-cls du WLangage (fonctions, constantes 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.

Partie 2 : Syntaxe de base du WLangage

37

1.2 La programmation en code serveur et navigateur


Ce chapitre prsente la syntaxe du WLangage. Chaque 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 pouvez utiliser : soit le WLangage qui sera automatiquement traduit en JavaScript, soit directement le JavaScript.

WB

Dans lditeur de code, des bandeaux de couleurs 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 serveur depuis un traitement ralis en code navigateur. Exemple :
// Code navigateur de Modification // et sortie dune COMBO PageValide("", "BOUTON1") // Appelle le code serveur de clic sur // le bouton BOUTON1

2. LES VARIABLES
Le WLangage propose deux types de variables : les types simples, pouvant tre dclars directement 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 rservs. 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 caractres 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 caractres (essentiellement pour les API Windows), le WLangage propose diffrents types de chanes. Pour plus de dtails sur les chanes de caractres, consultez le paragraphe Le type Chane, page 41 Buffer : type conseill pour crire un code portable 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 DateHeure, page 43. Partie 2 : Syntaxe de base du WLangage 39

2.1.2 Types de variables


Les types "simples" du WLangage sont les suivants : Boolen : type conseill pour toutes les oprations 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 raliss sur des valeurs relles ncessitant une prcision 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 raliss sur des valeurs relles ncessitant une prcision garantie des dcimales. Un numrique gre 38 chiffres significatifs (32 maximum pour la partie entire, 6 maximum pour la partie dcimale). 38 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, consultez le paragraphe Le type variant, page 44.

constantes dans le fichier "Limites.WL". Pour intgrer ces constantes dans votre application, utilisez la ligne de code suivante dans le code dinitialisation du projet :
Externe "Limites.WL"

2.1.3 Dclarer un type simple


Dclarer une ou plusieurs variables
<Nom variable> est un(e) <Type variable>

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 plusieurs 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)

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 initialise 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 significatifs (17 maximum pour la partie entire, 6 maximum 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 dutiliser 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 oprandes seront automatiquement converties en montaire. Langage externe Le type montaire n'est pas disponible en langage externe.

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 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. Pour obtenir une prcision plus importante, utilisez le type montaire.

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.
NomClient est une chane Compteur est un entier Prix est un rel i,j,k sont des entiers

2.1.4 Les diffrents types dentier


Le WLangage propose diffrents types d'entiers : Valeur comprise entre Entier -2 x 109 et 2 x 109 (environ) Entier sur 1 octet -128 et 127 (incluses) Entier sur 2 octets -32.768 et 32.767 (incluses) Entier sur 4 octets -2 x 109 et 2 x 109 (environ) Entier sur 8 octets -9 x 1018 et 9 x 1018 (environ) Entier sans signe 0 et 4 x 109 Octet 0 et 255 (incluses) Ce type est quivalent au type Entier sans signe sur 1 octet. Entier sans signe sur 0 et 255 (incluses) 1 octet Entier sans signe sur 0 et 65.535 (incluses) 2 octets Entier sans signe sur 0 et 4 x 109 (environ) 4 octets Entier sans signe sur 0 et 18 x 1018 8 octets Entier systme s'adapte automatiquement la taille gre par le systme (4 octets en 32 bits, 8 octets en 64 bits)

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.
NomClient est une chane NomClient = "Dupond" Compteur est un entier = 7 i,j,k sont des entiers = 21 // Seul k est initialis 21

2.1.8 Le type Chane


Le WLangage propose diffrents types de chanes de caractres. Les types de chane les plus courants sont les suivants : Caractre : Caractre cod sur 1, 2 ou 4 octets selon le mode de gestion des chanes et la plateforme d'excution. Chane Ansi : Chane de taille dynamique contenant uniquement des caractres au format ANSI. Chane Unicode : Chane de taille dynamique contenant 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 longueur de la chane. Celle-ci peut varier de faon Partie 2 : Syntaxe de base du WLangage 41

Valeurs limites des types de donnes Si une variable est affecte avec une valeur dpassant 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 diffrents types de donnes ont t associes des 40 Partie 2 : Syntaxe de base du WLangage

2.1.6 Le type numrique


Le type numrique permet de contenir des nombres 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.

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 disponibles : 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 compatible 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 environ 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 longueur. 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 Windows. Tous les types avancs (diffrents du type "Chane") sont disponibles pour compatibilit avec les autres langages de programmation 42 Partie 2 : Syntaxe de base du WLangage

(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 initialise 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 proposes, 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 :
MaChane est une chane fixe sur 30 MaChane = "WinDev est formidable" // Suppression des espaces MaChane = SansEspace(MaChane) ComptageLettre(MaChane) // ComptageLettre est une procdure

automatique les conversions (fonctions ChaneVersDate, DateVersChane, EntierVersDate, DateVersEntier, ...). Ce type peut tre utilis aussi bien : pour rcuprer puis manipuler des rubriques HyperFileSQL au format Date. pour rcuprer puis manipuler les champs de saisie 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 utilises 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.
DateDbut est une date = 1205 DateFin est une date = "20011231" // 31/12/2001 DateJour est une date = DateDuJour()

dans les fonctions du WLangage permettant de grer les Heures, pour raliser des calculs sur les heures (diffrence, addition, ...). Proprits utilisables sur les heures : Pour connatre les proprits utilisables sur les heures, consultez laide en ligne.
HeureDbut est une heure="20011201" // Ajoute 5 heures HeureDbut..Heure +=5 // Modifie le nombre de minutes HeureDbut..Minutes = 5

Limites : Le type Heure permet de grer les heures comprises entre 00:00 et 23:59. La prcision est effectue la milliseconde.

2.1.12 Le type DateHeure


Le type DateHeure permet de manipuler simplement 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.
DateDbut est une DateHeure DateDbut = "200112311524" // 31/12/2001 15h24 minutes

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 automatiquement 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 raliser certaines manipulations spcifiques en mmoire, d'utiliser certaines API windows.

Les proprits utilisables sur les dates Pour connatre les proprits utilisables sur les dates, consultez laide en ligne.
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--

Proprits utilisables sur les variables de type DateHeure Pour connatre les proprits utilisables sur les variables de type DateHeure, consultez laide en ligne.
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)

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 HeureVersChane, 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 saisie de type Heure,

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-

2.1.10 Le type date


Le type Date permet de manipuler simplement des dates. Ce type permet de grer de manire quasi

Partie 2 : Syntaxe de base du WLangage

43

culs (diffrence, addition, ...).


HeureDbut est une heure = "1330" HeureFin est une heure = "1730" DureCongrs est une Dure = ... HeureFin - HeureDbut

Remarque : pour un type variant, NULL signifie "Pas affect"


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

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 indiquer que le paramtre ne doit pas tre pris en compte pour vrifier si un objet dynamique est allou ou non Cas n3 : Seul le prnom est donn :
sNom est un Variant = Null // utilisation du variant // obligatoire // pour variable de type Null // (non renseigne) HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, sNom, "Jean")

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 comprises entre plus et moins 2 milliards de jours. La prcision est la milliseconde.

Ou
HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, Null, "Jean")

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
nValeur est un variant = 10 nValeur = Saisie1 nValeur = Client.Nom

pour un type numrique, NULL signifie "gal 0".


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

excutera la requte :
SELECT * FROM CLIENT WHERE PRENOM='Jean'

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 :
SELECT * FROM CLIENT WHERE NOM = {Param1} AND PRENOM = {Param2}

Type d'un variant Il est possible de connatre le type d'un variant grce la proprit ..Type. La proprit ..Type permet 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).

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 simplement ignores. Par exemple, la requte "Ex1" correspond au code SQL suivant :
SELECT NomDesRubriques FROM NomDesFichiers WHERE Rubrique = {Param1}

Type variant et NULL Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la constante NULL.

Cas n1 : Les 2 paramtres sont donns :


HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond", "Jean")

excutera la requte :
SELECT * FROM CLIENT WHERE NOM = 'Dupond' AND PRENOM = 'Jean'

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 fonctions permettant de manipuler des dates et les heures (voir fonctions de gestion des dates et des heures dans laide en ligne).

La requte "Ex1" est excute dans le bouton "Btn_OK" par la fonction HExcuteRequte. Le code WLangage utilis est le suivant :
HExcuteRequte, (... Ex1,hRequteDfaut,SAI_Saisie1)

Cas n2 : Seul le nom est donn :


HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond")

excutera la requte :
SELECT * FROM CLIENT WHERE NOM='Dupond'

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 lutilisation de loption "NULL si vide" :
Valeur saisie "NULL si dans le champ vide" pour le SAI_Saisie1 champ ChampSaisi e1 Code SQL excut

Aucune valeur Option coche

SELECT NomRubriques FROM NomFichiers

44

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

45

Aucune valeur Option dco- SELECT NomRubriques che

FROM NomFichiers WHERE Rubrique =

(voir ci-dessus) pour un type numrique, NULL signifie "gal 0"


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

SELECT NomUne valeur est Option saisie coche ou Rubriques dcoche FROM NomFichiers WHERE Rubrique= ValeurSaisie

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 partir 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.2 Null et les variants


Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la constante NULL. Remarques : pour un type variant, NULL signifie "Pas affect" pour un type numrique, NULL signifie "gal 0" (voir ci-dessous)
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

Les constantes doivent tre dclares dans : le code d'initialisation du projet pour tre utilisable 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 fentre / 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 utilisable 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.

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 :
// 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

Dclarer des constantes de mme nom Dans un mme traitement, il n'est pas possible de dclarer plusieurs lments (variables ou constantes) 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 variable sera utilise dans cette procdure locale. la constante sera utilise dans tous les autres traitements. Si une constante "globale" au projet et une constante "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.3.3 Null et les valeurs numriques


Utilis avec des valeurs numriques, Null permet de comparer une valeur 0. Il est uniquement possible d'utiliser les oprateurs de comparaison d'galit et de diffrence (oprateur = et oprateur <>). Remarques : pour un type variant, NULL signifie "Pas affect"

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 directement 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>

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 CONSTANTE 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
CONSTANT TauxTVA = 19.6 FIN

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)

46

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

47

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

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 manipuler des tableaux simples. Il est par exemple possible 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 nouvelle 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 toutes les instances de classes, il est ncessaire de dclarer un tableau local de la manire suivante :
ClasseSystme est une classe tTableauDfaut est un tableau ... local de 1 entier FIN

OU
<Nom du tableau dynamique> = allouer un tableau dynamique de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau>
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

suivante :
<Nom de la procdure>(<Nom du tableau>)
TableauFourn est un tableau... dynamique TableauFourn = allouer un tableau... dynamique de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn)

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>)
TableauFourn est un tableau ... de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn)

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 permet 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
TableauClient est un tableau ... dynamique

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 uniquement si ces classes possdent un constructeur sans paramtres (ou avec des paramtres facultatifs). 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 plusieurs variables de mme nom (quel que soit le 48 Partie 2 : Syntaxe de base du WLangage

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

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 effectue la suite de la dclaration de la structure, de la variable compose ou de la classe.
// 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

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 classes uniquement si ces classes possdent un constructeur 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 plusieurs variables de mme nom (quel que soit le type de ces variables).

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>

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>

Passer un tableau dynamique en paramtre une procdure Un tableau dynamique peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe

Partie 2 : Syntaxe de base du WLangage

49

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 manipuler 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 permet 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>

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

Reprsentation "MaStructure" :

de

la

zone

mmoire

de

Syntaxe Dclarer un tableau associatif


<Nom du tableau> est un tableau associatif de <Type>
// 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"])

Cette reprsentation mmoire est compatible avec les API de Windows. Il est ainsi possible de transmettre un tableau de taille fixe une fonction des API de Windows. Dimension d'un tableau fixe La fonction Dimension permet de connatre le nombre 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 plusieurs 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.

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 personnalises, 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
RefProduit est compose de CodeF est un entier CodePr est une chane fixe sur 10 FIN

Passer un tableau fixe en paramtre une procdure Un tableau fixe peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom du tableau>)
TableauFourn est un tableau fixe ... de 10 par 50 chanes // Appel procdure AfficheTableau AfficheTableau(TableauFourn)

OU
<Nom du tableau> est un tableau fixe de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau>
TableauClient est un tableau fixe... de 5 par 7 par 3 entiers // quivalent : TableauClient est un tableau fixe... de 5,7,3 entiers

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 directement 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 structure>.
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

2.5.4 Tableau associatif


Un tableau associatif est un type "avanc" de tableau : il permet de regrouper une srie d'lments 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).

Manipuler un membre d'une variable compose


<Nom de la variable>.<Nom du membre>
RefProduit.CodeF = 7 RefProduit.CodePr = "cran"

50

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

51

Manipuler une variable compose Une variable compose peut tre utilise sans faire rfrence ses membres.
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

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 constructeur sans paramtre (ou avec des paramtres facultatifs). Tous les autres types de donnes (chane, constante, ...) 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 dclaration. 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'utiliser le tableau.. .
// 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

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 : Peut tre Variable Structure Classe Tableau un mem- compose bre de Variable Non Non Non Non compose Structure Oui Oui Oui Oui Classe Oui Oui Oui Oui Tableau Oui Oui Oui Non 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.

Syntaxe Dclarer une structure


<Nom de la structure> est une structure <Membres de la structure> FIN
RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN

Dclarer une variable de type structure


<Nom de la variable> est une <Nom de la structure>
RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN Fauteuil est une RefProduit

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 avances). 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 compose, 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 dclaration. 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'utiliser le tableau.
// 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

Manipuler un membre d'une variable de type structure


<Nom de la variable structure>:<Nom du membre de la structure>
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"

2.5.6 Structure
Une structure est un type de donnes personnalis. Une structure regroupe des lments de types diffrents. Remarque : Si vous manipulez des variables personnalises, 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.

Dclaration de structures Si une structure <Nom de la structure> est dclare : dans le code du projet, il sera possible de dclarer 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 possible 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.

Quels types "avancs" peuvent tre membre ? Une variable "avance" peut tre membre d'une variable "avance". Le tableau ci-dessous prsente les diffrentes combinaisons :
Peut tre un membre de Variable compose Structure Classe Tableau Variable Structure Classe Tableau compose Non Oui Oui Oui Non Oui Oui Oui Non Oui Oui Oui Non Oui Oui Non

52

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

53

Passer une structure en paramtre une procdure 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>)
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)

//... FichierSource = Allouer un Fichier // traitement sur l'objet // ... // librer l'objet Liberer FichierSource

Appeler une mthode d'un objet automation


<Nom de l'objet automation> mthode>([<Paramtres>])

>> <Nom

de la

* 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 plusieurs 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.

Dclaration d'une structure dynamique


<NomVariable> est [un] <NomStucture> dynamique

Remarque : La liste des mthodes pouvant tre utilises dpend du serveur. Pour connatre les mthodes, reportez-vous la documentation du serveur.
MonObjetAutomation>>... FichierOuvrir(NomDoc)

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>])

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.

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 serveur automation est automatiquement lanc. Pour allouer un objet automation 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 paramtres doit tre respect (reportez-vous la documentation du serveur et de ses mthodes si ncessaire). Pour certains serveurs automation, certains paramtres 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 paramtres obligatoires. Ainsi pour donner une valeur quelconque un paramtre optionnel, il suffit d'affecter le caractre

2.5.9 Objet Automation Dynamique


Un objet automation dynamique est un objet automation allou la demande, au cours du programme. Syntaxe Dclarer un objet automation dynamique
<Nom de l'objet automation dynamique> est un objet automation dynamique
// Dclaration MonObjetDynamique... est un objet automation dynamique

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 constructeur. Librer une structure dynamique
Librer <NomStructure>

Allouer un objet automation dynamique


<Nom de l'objet automation dynamique> = allouer un objet automation dynamique <Nom du serveur automation>
// Cration d'un objet automation // dynamique MonObjetDynamique = allouer un ... objet automation dynamique ... MonServeur

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 automatique lorsquil n'est plus utilis. Toutefois, il est possible de forcer la destruction de la structure.
Fichier est une structure Nom est une Chane Extension est une Chane Rpertoire est une Chane Fin FichierSource est un Fichier ... dynamique

o <NomStructure> : Nom identifiant l'instance de la structure.

Appeler une mthode d'un objet automation dynamique


<Nom de l'objet automation dynamique> <Nom de la mthode>([<Paramtres>])
MonObjetDynamique>>... FichierOuvrir(NomDoc)

>>

2.5.8 Objet automation


Le mot-cl Automation permet de dclarer un objet automation. L'allocation de cet objet est directement effectue lors de la dclaration. Remarque : Il est aussi possible d'utiliser un objet automation dynamique. Son allocation est effectue la demande, au cours du programme. Syntaxe Dclarer un objet automation
<Nom de l'objet automation> est un objet automation <Nom du serveur automation>
MonObjetAutomation ... est un objet automation MonServeur

Remarque : La liste des mthodes pouvant tre utilises dpend du serveur automation. Pour connatre 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 automatiquement dtruit la fin du traitement contenant sa dclaration ou lors d'une nouvelle allocation de l'objet.

54

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

55

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>

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 possibles sur une vue (respectivement une requte) pourront tre effectues sur une variable de type Source de donnes associe une vue (respectivement une requte). Pour dcrire une source de donnes temporaire, il est ncessaire de : 1. Dclarer une variable de type "Source de donnes". 2. Initialiser la source de donnes (fonctions HExcuteRequteSQL 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 dclare), la source de donnes sera automatiquement dtruite. Syntaxe Dclarer une source de donnes
<Nom de la variable> est une source de donnes

Supprimer la source de donnes (requte ou vue) Lorsque la mme variable de type Source de donnes 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.
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)

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 temporaires. La description de chaque fichier de donnes 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 rinitialise 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

Allocation d'un objet dynamique Lors de l'allocation d'un objet automation dynamique, 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 paramtres doit tre respect (reportez-vous la documentation si ncessaire). Pour certains serveurs automation, certains paramtres des mthodes ne sont pas valus : seule la prsence du paramtre a de l'importance. 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 paramtres 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 plusieurs 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 56 Partie 2 : Syntaxe de base du WLangage

Dclarer plusieurs descriptions de fichiers


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de fichiers
MonFichier ... est une description de fichier MonFichier1, MonFichier2 sont des... descriptions de fichiers

Dclarer plusieurs sources de donnes


<Nom de la variable 1>, <Nom de la variable 2> sont des sources de donnes
MaSourceDonne ... est une source de donnes MaSourceDonne1, MaSourceDonne2 ... sont des sources de donnes

Initialiser une variable de type "Source de donnes" (requte ou vue) Pour initialiser une variable de type "Source de donnes", utilisez la fonction : HExcuteRequteSQL si la variable est associe une requte. HCreVue si la variable est associe une vue.
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)

Manipuler une requte ou une vue par programmation Pour manipuler une requte ou une vue par programmation, 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 plusieurs 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

Dcrire une variable de type "Description de fichier" Pour dcrire une variable de type "Description de fichier", utilisez les proprits du WLangage spcifiques aux descriptions de fichiers de donnes. Pour valider la description d'une variable de type "Description de fichier", utilisez la fonction HDcritFichier.
// Description du fichier "CLIENT" MonFichier..Nom = "CLIENT" MonFichier..Type = hFichierNormal MonFichier..CryptageFic = ... hCryptageStandard // Description des rubriques // du fichier ... // Validation description // fichier "CLIENT" HDcritFichier(MonFichier)

Proprits spcifiques la description de fichiers de donnes Les proprits spcifiques la description de fichiers de donnes sont dtailles dans laide en ligne.

Partie 2 : Syntaxe de base du WLangage

57

Comment dcrire des fichiers de donnes temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 donnes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de donnes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes temporaire 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 temporaire ou ses rubriques provoque une erreur de compilation. 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.
MonFichier est une description ... de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI)

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 plusieurs 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.

// Validation description // liaison "HABITE" HDcritLiaison(MaLiaison)

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 temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 automatiquement 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.
MaLiaison est ... une description de liaison ... MaLiaison..Nom = "HABITE" ... HDcritLiaison("HABITE") ...

EXTERNE HABITE ... Cardinalit = ... HABITE..CardinalitRelieMax

2.5.12 Description de liaison


Une variable de type Description de liaison permet de dcrire une liaison entre deux fichiers de donnes 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 rinitialise et pourra tre utilise pour dcrire une autre liaison. Syntaxe Dclarer une description de liaison
<Nom de la variable> est une description de liaison

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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 permet de dcrire une ou plusieurs rubriques d'un fichier de donnes temporaire. La description de chaque rubrique est valide par la fonction HDcritRubrique. 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 temporaire. Syntaxe Dclarer une description de rubrique
<Nom de la variable> est une description de rubrique

Dclarer plusieurs descriptions de liaisons


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de liaisons
MaLiaison ... est une description de liaison MaLiaison1, MaLiaison2 sont des ... descriptions de liaisons

Dclarer plusieurs descriptions de rubriques


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de rubriques
MaRubrique ... est une description de rubrique MaRubrique1, MaRubrique2 sont des descriptions de rubriques

Dcrire une variable de type "Description de liaison" Pour dcrire une variable de type "Description de liaison", utilisez les proprits du WLangage spcifiques aux descriptions de liaisons. Pour valider une description d'une variable de type "Description de liaison", utilisez la fonction HDcritLiaison.
// 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"

Dcrire une variable de type "Description de rubrique" Pour dcrire une variable de type "Description de rubrique", utilisez les proprits du WLangage spcifiques aux descriptions de rubriques. Pour valider une description de variable de type "Description de rubrique", utilisez la fonction HDcritRubrique.
// Description du fichier // MonFichier ... // Description de la rubrique "NOM" MaRubrique..Nom = "NOM" MaRubrique..Type = hRubTexte MaRubrique..Taille = 40

58

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

59

MaRubrique..TypeCl = hClUnique // Validation description // rubrique "NOM" HDcritRubrique(MonFichier, ... MaRubrique) // Validation description fichier // MonFichier ...

de donnes. Ce fichier de donnes temporaire et ses rubriques pourront alors tre manipuls par leur nom sous l'diteur de code.
MonFichier ... est une description de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI)

Proprits spcifiques la description de rubriques Les proprits spcifiques la description de rubriques sont dcrites dans laide en ligne. Comment dcrire des fichiers de donnes temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 donnes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de donnes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes temporaire 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 temporaire ou ses rubriques provoque une erreur de compilation. Pour que les noms du fichier de donnes temporaire 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

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 dynamique, 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.
MaPolice = ... PoliceCre("Arial",12,iGras) MaPolice..Nom = "Arial" MaPolice..Taille = 12 MaPolice..Gras = Vrai

MaCxion..MotDePasse = "PASSWORD" MaCxion..Serveur = "MONSERVEUR" MaCxion..BaseDeDonnes = "Base1" MaCxion..Provider = ... hAccsHFClientServeur MaCxion..Accs = hOLectureEcriture MaCxion..InfosEtendues = "Infos" MaCxion..OptionsCurseur= ... hCurseurClient HOuvreConnexion(MaConnexion)

Remarque : il est galement possible de dclarer le nom du fichier de donnes temporaire avec le motcl Externe. Cependant, la vitesse d'excution du traitement sera ralentie. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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.

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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.

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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 regrouper une srie d'lments du mme type. Les lments 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>

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 grPoliceTitreAxe). 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

2.5.15 Connexion
Une variable de type Connexion permet de dcrire une ou plusieurs connexions des bases de donnes externes (HyperFileSQL Client/Serveur, Accs Natif, ...). La connexion pourra tre ouverte grce la fonction 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

Par exemple, si les lments sont ajouts dans l'ordre suivant : 1, 2, 3, ils seront rcuprs dans le mme ordre 1, 2, 3
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

Proprits WLangage utilisables avec le type File AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du multithread

Dclarer plusieurs connexions


<Nom de la variable 1>, <Nom de la variable 2> sont des connexions
MaConnexion est une connexion

Dclarer plusieurs polices


<Nom de la variable 1>, <Nom de la variable 2> sont des polices
MaPolice est une police MaPolice1, MaPolice2 sont des polices

Dfinir les caractristiques d'une connexion Pour dcrire une variable de type Connexion, utilisez les proprits WLangage spcifiques aux connexions.
// Description de la connexion MaCxion..Utilisateur = "USER"

NbThreadAttente Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du multithread Occurence Renvoie le nombre d'occurrences de la file 61

60

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

Vide

Vrai si la file est vide, Faux dans le cas contraire

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 affich dans l'ordre de dfilement. Une file peut tre utilise pour typer un paramtre 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'lments dans l'ordre d'enfilement.

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. Dfile Rcupre l'lment du dbut de la file. Ajoute un lment la fin de la file. Srialise une file. Supprime tous les lments d'une file.

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 lment. Il est galement possible d'utiliser les proprits lors d'une gestion multithread mais le rsultat n'est pas permanent. Par exemple :
SI MaListe..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la liste peut tre vide FIN

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. :
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

Dsrialise Dsrialise une file. Enfile Srialise Supprime Tout

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>

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 :
POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <Liste> [<Sens>] ... FIN

Proprits WLangage utilisables avec le type Pile Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Pile. AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du multithread Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du multithread Renvoie le nombre d'occurrences de la pile. Vrai si la pile est vide, Faux dans le cas contraire

Les files et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonctions 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 :
SI MaFile..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la file peut tre vide FIN

Proprits WLangage utilisables avec le type Liste Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Liste Occurence Vide Renvoie le nombre d'occurrences de la liste. Vrai si la liste est vide, Faux dans le cas contraire.

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la liste pendant un parcours, le parcours est affect par les oprations d'ajout et de suppression. Les fonctions disponibles pendant le parcours sont les suivantes : Syntaxe : Insre(<Nom de la liste>, AvantElmentCourant, <Valeur>)

NbThreadAttente

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 :
POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <File> ... FIN

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. Ajoute Dsrialise Insre Srialise Supprime SupprimeTout Ajoute un lment la fin de la liste. Dsrialise une liste. Insre un lment dans la liste. Srialise une liste. Supprime un lment de la liste Supprime tous les lments de la liste.

Attention : l'lment sera parcouru par l'itration suivante si la boucle est descendante. Syntaxe : Insre(<Nom de la liste>, AprsElmentCourant, <Valeur>)

Occurence Vide

Attention : l'lment sera parcouru par l'itration suivante si la boucle est ascendante. Syntaxe : Supprime(<Nom de la liste>, ElmentCourant)

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>

Remarques : Le contenu de la liste peut tre affich sous le dbogueur. Une liste peut tre utilise pour typer un paramtre de procdure. Une liste peut tre copie avec l'oprande liste. Une liste peut tre initialise par une liste d'lments.

Fonctions WLangage de gestion des piles. Les fonctions suivantes peuvent tre utilises pour manipuler une variable de type pile. Dpile Dsrialise Empile Srialise Rcupre l'lment du dbut de la pile. Dsrialise une pile. Ajoute un lment dans une pile. Srialise une pile.

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la file pendant un parcours, les lments parcourus seront ceux prsents lors de l'initialisation du parcours : si des lments sont enfils aprs l'initialisation 62 Partie 2 : Syntaxe de base du WLangage

2.5.18 Pile
Une pile est un type structur qui permet de regrouper une srie d'lments du mme type. Les lments sont ajouts la fin de la pile et sont rcuprs du plus rcent au plus ancien.

Partie 2 : Syntaxe de base du WLangage

63

SupprimeTout Supprime tous les lments d'une pile. Les piles et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonctions 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 :
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

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la pile pendant un parcours, les lments parcourus seront ceux prsents 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 affich dans l'ordre de dpilement. Une pile peut tre utilise pour typer un paramtre 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'lments dans l'ordre d'empilage

Les variables globales dclares dans une fentre fille ne peuvent pas tre utilises dans sa fentre mre. Lorsque la fentre / page dans laquelle la variable 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 lapplication 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 traitement 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 peuvent 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>
GLOBAL // Toutes les dclarations qui // suivent sont des variables // globales Indice est un entier NomClient est une chane

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 :

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 dclare. Variable globale : utilisable dans tous les traitements 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 globale et une variable locale). des procdures locales associes). Disponibilit des variables sous WebDev en code Navigateur : Les variables globales serveur du projet sont disponibles dans les codes Navigateur 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 globales une fentre ou page Les variables globales dclares dans le traitement 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.

2.6.2 Variables locales


Les variables locales peuvent tre utilises uniquement dans les traitements dans lesquels elles sont dclares. En dehors de ces traitements, les variables locales sont inconnues. Ces variables ne pourront 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>
LOCAL // Toutes les dclarations qui // suivent sont des variables // locales I est un entier PrnomClient est une chane

2.6.1 Variables globales


Variables globales un projet Les variables globales dclares dans le traitement d'initialisation d'un projet peuvent tre utilises dans tous les traitements : du projet. des fentres / des pages (traitement de la fentre / page, de ses champs et des procdures locales associes). des tats (traitement de l'tat, de ses champs et

64

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

65

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 variable "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 utilise 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 utilise dans le reste du projet. Exception : La rgle de porte des variables ne s'applique pas sur les constantes.

3. OPRATEURS
3.1 Prsentation
Les diffrents oprateurs sont les suivants : Oprateurs logiques : Exemples : ET, OU, PAS Oprateurs arithmtiques : Exemples : "+", "-", "*", "/", "++", "--", "+=", "-=" Oprateurs binaires : Exemples : ETBinaire, OUBinaire, 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 conditions.
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

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 :
SI NumTest ALORS ... SI NumTest <> 0 ALORS ...

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 :
SI (A = 2 ET B > 3) OU ... (A = 2 ET B < 0) ALORS ...

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

Exceptions : Dans les filtres SQL et les requtes SQL, l'oprateur ET est prioritaire sur l'oprateur OU.

66

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

67

Par exemple :
Condition1 ET Condition2 OU Condition3

sera valu ainsi :


(Condition1 ET Condition2) OU Condition3

de l'oprande : Oprande Entier sur 4 Rsultat Entier sur 4 Entier sur 8 Entier sur 8

Autre

Entier sur 8

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 renvoie 0. Exemples :
// 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

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). "--" : 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 :
n est un entier = 10 Trace(n+=1)

Entier sur 8 Autre

3.4.2 Oprateurs de dcalage


Dcalage vers la gauche :
<Valeur 1> bitDcaleGauche <Valeur 2> bitDcaleGauche(<Valeur1>, <Valeur 2>)

Dcalage vers la droite :


<Valeur 1> bitDcaleDroite <Valeur 2> bitDcaleDroite(<Valeur1>, <Valeur 2>)

Pour afficher le rsultat, effectuez les modifications suivantes :


n est un entier = 10 n += 1 Trace(n)

3.3.2 Rgles de calcul


Les diffrents calculs se font sans perte de prcision ou tronquage. Les vrifications de dbordement 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 rsultat du calcul utilisant les oprateurs suivants : "++" : Incrmentation.

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 habituelles.

Notes Les bits de <Valeur 1> sont dcals de <Valeur 2> bits vers la droite ou vers la gauche. Par exemple :
bitDcaleGauche(4,1) // Renvoie 8

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 dcimal. Autre exemple :
bitDcaleDroite(4,2) // Renvoie 1

3.4 Oprateurs binaires


Les oprations sur des valeurs binaires sont uniquement 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. Le type de rsultat peut tre diffrent selon le type des oprandes : Valeur 2 Entier sur 4 Entier sur 8 Autre Valeur 1 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

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 dcimal. Les bits qui dpassent la taille de <Valeur 1> sont ignors. Par exemple :
bitDcaleGauche(4,30) // Renvoie 0 bitDcaleGauche(4,4) // Renvoie 0

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> : Valeur 1 wlEntier_1 wlEntier_2 wlEntier_4 Entier sur 4 1 4 12 1 Entier sur 8 1 8 14 12 Si la valeur de <n> est incorrecte, l'opration renvoie 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.

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 :
bitDcaleGauche(4,35) // Renvoie 0

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 de l'oprande : Oprande Valeur 1 Entier sur 4 Entier sur 8 Rsultat Entier sur 4 Entier sur 8

Non binaire La syntaxe est la suivante : ~ <Valeur> Le type de rsultat peut tre diffrent selon le type

68

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

69

3.5 Oprateurs de comparaison


3.5.1 Prsentation
Les oprateurs de comparaison peuvent tre diviss en plusieurs catgories : galit stricte : = Egalit
galit souple : ~= galit trs souple : ~~ Commence par : [=

Exemple : 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

Il est possible de comparer des instances de structures dynamiques (ou des instances de classes dynamiques) grce l'oprateur "=". Exemple :
// 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 ...

Comparaison Diffrent : <>

Infrieur ou gal : <= Suprieur ou gal : >= Strictement infrieur : < Strictement suprieur : > Commence par : [=

Intervalle de Strictement compris entre : Valeur1< x< Valeur2 comparaison


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

Comparaison d'instances de structures et d'instances de classes Les structures dynamiques sont instancies uniquement lors de leur allocation.

La mme opration peut tre ralise sur les instances de classes.

Les oprateurs de comparaison peuvent tre utiliss 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 ponctuations l'intrieur des chanes (galit trs souple uniquement) quivalence HyperFileSQL : Pour retrouver l'quivalence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes HyperFileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans

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 rfrence. 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.
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

3.6 Oprateurs sur chanes de caractres


Les chanes de caractres peuvent tre manipules 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 crochets fermant) : Oprateur d'extraction d'une sous-chane. "=" : Egalit stricte "~=" : Egalit souple (non disponible sous WebDev code navigateur) "[=" : Commence par
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)

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 ponctuations l'intrieur des chanes (galit trs souple uniquement). quivalence HyperFileSQL : Pour retrouver l'quivalence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes HyperFileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans l'analyse :

Intervalles de comparaison Les intervalles de comparaison permettent de simplifier l'criture de comparaisons complexes. Ainsi, la ligne
SI x>5 et x<10 ALORS ...

peut tre remplace par


SI 5<x<10 ALORS...

La ligne :
SI x>=5 et x<=10 ALORS ...

peut tre remplace par


SI X=5 A 10 ALORS...

70

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

71

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>. sur CHAINEAEXTRAIRE[[<Dbut> <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 manipulant les chanes avec les oprateurs [[ ]], mfiezvous 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.
Procdure P(sChane) SI sChane alors sChane="5" //Appel de la procdure par la // ligne : // p(sVar[[3 ]])

3.6.3 Oprateurs sur les chanes de caractres et UNICODE


Les oprateurs disponibles sont : "+" : Pour concatner des chanes. "[[" et "]]" (double crochets ouvrant et double crochets fermant) : Oprateur d'extraction d'une sous-chane. Oprateur "+" Il est possible de concatner deux chanes UNICODE. 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 inversement). Cependant, une erreur WLangage apparatra en excution. Oprateur "[[" et "]]" Toutes les syntaxes de l'oprateur [[ ]] sont disponibles 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 format 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.7 Oprateur sur adresse


L'oprateur & retourne l'adresse d'une variable sous la forme d'un entier.
i z t s est un entier est une chane ASCIIZ sur 50 est un tableau de 10 rels 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

Syntaxe
<Rsultat> = &<Nom de la variable>

Remarques L'oprateur & permet de connatre l'adresse de toutes les formes de variables (simples et composes). 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 lments, 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 utilise.

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
{"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

Indirection dans une procdure


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

Pour viter toute modification de la chane initiale, il est ncessaire de passer le paramtre par valeur : soit en utilisant des parenthses autour du paramtre dans l'appel de la procdure soit en utilisant le mot-cl Local dans l'en-tte de la procdure

3.6.4 Position dans une chane de caractres


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.

Indirection avec variable


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}

72

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

73

Indirection avec une classe


// 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)

<Type> : Constante permettant de prciser le type de l'lment recherch :


indChamp indConnexion indEtat indFentre indFichier indGPW indLiaison indPage indParamtreRequte IndVariable Elment recherch parmi les champs Elment recherch parmi les connexions Elment recherch parmi les tats Elment recherch parmi les fentres Elment recherch parmi les fichiers de donnes Elment recherch parmi les lments du groupware utilisateur Elment recherch parmi les liaisons Elment recherch parmi les pages Elment recherch parmi les paramtres des requtes Elment recherch parmi les variables

d'indiquer les diffrents paramtres d'une fonction du WLangage. Par exemple :


dCopieImage(Image1, image2)

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

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 :
Ascenseur..Bormax = 200 FraisDePort..Titre = ... "Fentre des frais de port" MonEtat..MargeBasse = 20 MaPolice..Nom = "Arial"

Syntaxe Indirection simple


{<Expression>}

3.9.8 Triple point


L'oprateur "..." (triple point) permet de continuer une ligne logique sur la ligne physique suivante. Par exemple :
SI (CodeFamille="LV") ET ... (CodeFamille="MO") ALORS Traitement FIN Libell = "Veuillez saisir le "+ ... "nom du client."

<Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expression 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 : {":NomDuMembre"} Si cette expression correspond une chane vide (""), une erreur du WLangage est gnre. Indirection en spcifiant le type de llment (optimise la vitesse dexcution)
{<Expression>, <Type>}

IndRubrique Elment recherch parmi les rubriques

Quand utiliser l'indirection ? L'indirection peut tre utilise par exemple : pour accder la valeur d'un lment (champ, variable, rubrique, ...)
{s_NomChamp} = 10 ValeurChamp = {s_NomChamp}

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 :
MonExemple1, MonExemple2 ... sont des chanes

pour utiliser une proprit


{s_NomChamp}..Hauteur = 10

<Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expression correspond une chane vide (""), une erreur du WLangage est gnre.

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 dclench le trigger en cours.

les diffrents paramtres d'une fonction du WLangage. Par exemple :


dCopieImage(Image1, image2)

3.9.4 Le point virgule


Le point virgule permet de sparer diffrentes instructions crites sur la mme ligne. Par exemple :
I est un entier;M est une chane

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 arithmtiques et logiques.
// Oprateurs arithmtiques // (+, -, /, *) et logiques (ET, OU) n est un entier = 5 + 6

3.9.5 Deux points


Les deux points permettent d'accder aux membres 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 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 74 Partie 2 : Syntaxe de base du WLangage "..." : Le triple point "//" : La double barre

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 :
// Recherche dans une chane Machane est une chane = ... "WinDev est formidable" SI Position(Machane, "W")<>0 ALORS Info("trouv") //Rsultat FIN

3.9.1 Les parenthses


Les parenthses permettent : de regrouper les diffrents lments d'une opration tout en indiquant l'ordre de priorit. Par exemple :
Si (A-B)*5 ALORS ....

3.9.6 Le point
Le point permet d'accder un sous lment. Quelques exemples : accs un champ d'une fentre / page : MaFentre.ChampSaisieDate accs une variable globale d'une fentre /

Partie 2 : Syntaxe de base du WLangage

75

4. LES INSTRUCTIONS DU WLANGAGE


4.1 Instructions composes
Plusieurs types dinstructions composes sont disponibles 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 fonction d'une condition Instruction de branchement : GOTO : Branchement une tiquette donne
A FAIRE TANTQUE <Condition>

4.1.2 Instruction GOTO


L'instruction GOTO permet d'excuter un code identifi par une tiquette donne. Important : L'tiquette doit obligatoirement tre dfinie dans le mme traitement que l'instruction GOTO.
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

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'instructions. Le bloc d'instructions est alors excut pour chacune 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.
POUR Indice = 1 A 10 Tableau[Indice] = MaVariable + 10 FIN

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 traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement. 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 ... SI <Condition> ALORS CONTINUER // Retour au mot-cl BOUCLE ... FIN

Syntaxe
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ... FIN

Syntaxe
... GOTO <Nom de l'tiquette> ... <Nom de l'tiquette> : <Code de l'tiquette>

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 susceptible 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 traitement appelant. Sortie de la boucle POUR et sortie 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 instructions RETOUR et RENVOYER dans un mme traitement. Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction Continuer :
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ...

4.1.1 Instruction BOUCLE


Le bloc d'instructions est rpt l'infini. Le nombre d'itrations du bloc d'instructions n'est pas contrl, il n'y a pas d'expression valuer.
BOUCLE //lecture d'une ligne du fichier //texte UneLigne = fLitLigne(NumFic) SI UneLigne = EOT ALORS SORTIR TraiteLigne(UneLigne) FIN

Code de l'tiquette Aprs excution du code de l'tiquette, le programme excute les lignes de code suivant directement 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 instruction GOTO, un warning apparat lors de la compilation du projet. tiquette et instructions POUR et POUR TOUT L'instruction GOTO ne permet pas d'accder directement dans le bloc d'instructions d'un POUR ou d'un POUR TOUT. Ainsi, ce code provoque une erreur la compilation du projet :
POUR Indice = 1 A 10 EtiqReprise : Res ++ FIN GOTO EtiqReprise

Syntaxe Syntaxe 1 : Boucle avec sortie selon une condition "SI"


BOUCLE ... SI <Condition> ALORS SORTIR ... FIN

Syntaxe 2 : Boucle avec sortie selon une condition"TANTQUE"


BOUCLE ...

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 warning.

76

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

77

SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR ... FIN

Dans ce cas, la variable de contrle est automatiquement incrmente.

4.1.4 Instruction POUR TOUT / POUR TOUS, parcours de fichiers de donnes


L'instruction POUR TOUT permet d'effectuer diffrents 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
POUR TOUT Client // 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 <Fichier> AVEC ... <Valeur Minimale> <= <Rubrique cl> <= ... <Valeur Max> [<Sens>] ... FIN
// 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

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 :
"NomClient > 'Dupont' et ... CodePos = 34 ou AgeClient >= 32"

Les oprateurs accepts sont variables en fonction du type des rubriques utilises dans la condition : <> > Diffrent Plus grand Valable pour tous les types Valable pour tous les types

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
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

>= Plus grand ou Valable pour tous les types gal < Plus petit Valable pour tous les types <= Plus petit ou Valable pour tous les types gal = Strictement gal Valable pour tous les types Valable pour les types "chane" uniquement Valable pour les types "chane" uniquement ~= Environ gal ] ]= Contient

Commence par Valable pour les types "chane" uniquement

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
POUR TOUT Client SUR NumClient // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) 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

Parcours avec recherche gnrique "Commence par"


POUR TOUT <Fichier> AVEC <Rubrique cl> [= ... <Dbut de la valeur recherche> [<Sens>] ... FIN
POUR TOUT Client AVEC ... NomClient [= "Du" // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN

Parcours avec filtre


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

2. Filtre de comparaison par rapport un intervalle de valeurs


POUR TOUT <Fichier> AVEC <Rubrique cl> = ... <Valeur Minimale> A <Valeur Maximale> [<Sens>] ... FIN

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 souligns ("_"). 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 fonction 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 rubrique>. Si une <Valeur de la rubrique> contient une simple quote (ou une double quote), il faut faire prcder cette simple quote (ou double quote) par un anti-slash. Partie 2 : Syntaxe de base du WLangage 79

ou 78 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 sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 excution 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 instructions RETOUR et RENVOYER dans un mme traitement. 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 automatiquement ou si la sortie est effectue par les instructions SORTIR, RETOUR, Ferme, Si le parcours se termine automatiquement : la position du fichier de donnes avant le parcours est restaure. l'ventuel filtre ncessaire au parcours est dsactiv. Si le parcours est interrompu (instructions SORTIR, RETOUR, RENVOYER, Ferme, ) : la position du fichier de donnes avant le parcours 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 :
POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR TOUT // Passage l'enregistrement // suivant ... FIN

4.1.5 Instruction POUR TOUT / POUR TOUS, parcours de chanes


L'instruction POUR TOUT permet d'effectuer diffrents 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 sparateur
POUR TOUTE CHANE <Sous-chane> DE ... <Chane initiale> ... [SEPAREE PAR <Sparateur>] [<Sens>] ... 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

// 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

<Sparateur> et <Recherche> peuvent tous correspondre : soit des chanes ANSI. soit des chanes UNICODE. Cependant, il n'est pas possible d'utiliser des chanes 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 diffrents 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
// Pour chaque utilisateur list // dans la liste ListeUtilisateur POUR TOUTE LIGNE DE ListeUtilisateur // Envoi d'un email //EnvoieMessage(ColNom, ColEdmail) FIN

Cette syntaxe permet de parcourir toutes les positions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est renseigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane initiale ou la chane recherche est modifie lors du parcours. 2. Avec option
POUR TOUTE POSITION <Position> DE <Recherche>... DANS <Chane initiale> AVEC <Options> ... FIN

Cette syntaxe permet de parcourir toutes les souschanes 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 initiale 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> correspond au dernier lment extrait. Parcours des occurrences dune chane dans une autre chane 1. Sans option
POUR TOUTE POSITION <Position> DE <Recherche>... DANS <Chane initiale> [<Sens>] ... FIN

Cette syntaxe parcourt toutes les positions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est renseigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane initiale 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>,

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 toutes 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 boucle de parcours. Remarque : Lors du parcours des lignes d'une table, l'affichage de cette table est bloqu. La fonction MultitcheRepeint n'est pas prise en compte.

80

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

81

Parcours des lments slectionns dans un champ


POUR TOUTE LIGNE SELECTIONNEE DE <Champ> ... FIN
// Pour chaque utilisateur // slectionn dans la table // TableUtilisateur POUR TOUTE LIGNE SELECTIONNEE DE ... TableUtilisateur // Envoi d'un email EnvoieMessage(ColNom, ColEdmail) FIN

nes et/ou la ligne en cours (fonction TableSelectMoins, TableSelectPlus, ...). dans le cas d'une table fichier, dans la boucle de parcours, l'enregistrement en cours est l'enregistrement trait par le parcours.

Parcours des valeurs des lments dun tableau


POUR TOUT ELEMENT (<Valeur>) DE <Tableau> [<Sens>] ... FIN

POUR TOUT ELEMENT nIdentifiant ... DE taIDParClient ... Trace(nIdentifiant) FIN

4.1.7 Instruction POUR TOUT / POUR TOUS, parcours de tableaux


L'instruction POUR TOUT permet d'effectuer diffrents 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
// 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

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 toutes 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 boucle de parcours. Parcours des indices des lments slectionns
POUR TOUTE LIGNE SELECTIONNEE <Indice> ... DE <Champ> ... 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 : automatiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours.

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. 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

4.1.8 Instruction POUR TOUT / POUR TOUS, parcours de tableaux associatifs


L'instruction POUR TOUT permet deffectuer diffrents 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 associatif. 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
// 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

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 boucle 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 slection82 Partie 2 : Syntaxe de base du WLangage

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 uniquement 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

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. 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 : automatiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours.

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. 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'lments parcourus peut tre 0 ou N. Partie 2 : Syntaxe de base du WLangage 83

Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de parcours). 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

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

4.1.10 Instruction SI
L'instruction conditionnelle SI permet de choisir d'excuter une action ou une autre en fonction d'une condition.
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

Syntaxe Syntaxe 1
SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse> ] FIN

<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 expressions sont vrifies. <Valeur> _DANS_ (<Expression 1>, <Expression 2>, ... , <Expression N>) Remarque : Dans ce cas-l, ds quune expression 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.
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

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 uniquement 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'lments parcourus peut tre 0 ou N. Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de parcours). 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.

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>]

Les conditions composes de ET et OU sont values 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 composes, 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'instruction conditionnelle SI correspondante.

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

4.1.9 Instruction SELON


L'instruction conditionnelle SELON permet de choisir d'excuter une action ou une autre en fonction de la valeur d'une expression.
SELON Quantit CAS 1 : Comment = "Promotions" CAS 2 : Comment = "Vous en "+... "achetez deux "+... "et nen payez qu'un seul" AUTRE CAS : Comment = "" 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 traitement en cours.

Condition Le paramtre <Condition> peut tre de la forme : <Valeur> = <Expression> <Valeur> < <Expression> <Valeur> <= <Expression> <Valeur> > <Expression> <Valeur> >= <Expression>

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 traitement boucle.

84

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

85

Il y a sortie du bloc d'instructions lorsque l'expression de condition est fausse.


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

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 :
TANTQUE <Condition> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl TANTQUE ... FIN

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 initiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS CONTINUER ... FIN

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.

Syntaxe
TANTQUE <Condition> <Action si condition vraie> FIN

Condition compose Les mots-cls ET et OU permettent d'effectuer des oprations logiques et de construire des conditions composes. Par exemple :
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

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> ([<Paramtre>]) SI <Condition> ALORS RETOUR ... 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 traitement appelant. Sortie de la boucle TANTQUE et sortie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle TANTQUE et excution 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 instructions RETOUR et RENVOYER dans un mme traitement. Boucle sans fin Lors de la compilation du projet, une instruction TANTQUE sans fin vidente (absence des instruc-

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

Les conditions composes de ET et OU sont values 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 composes, 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.

Instruction POUR
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] SI <Condition> ALORS RETOUR 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 automatique. Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS CONTINUER ... FIN

Instruction POUR TOUT


POUR TOUT <Fichier> SUR <Rubrique cl> SI <Condition> ALORS RETOUR FIN

4.2 Instructions simples


Les diffrentes instructions simples sont les suivantes : CONTINUER : Retour direct au dbut de la prochaine itration sans terminer le code de l'itration en cours RENVOYER : Sortie du traitement (ou de la procdure) 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 excution de la suite du traitement en cours

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS RETOUR ... 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> ALORS RETOUR ... FIN

86

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

87

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 boucle ou d'une procdure Plusieurs instructions sont possibles : RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement.

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS RENVOYER <Valeur renvoyer> ... FIN

Syntaxe Instruction POUR


POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

Instruction TANTQUE
TANTQUE <Condition> ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

Instruction TANTQUE
TANTQUE <Condition 1> ... SI <Condition> ALORS RENVOYER <Valeur> ... FIN

Instruction POUR TOUT


POUR TOUT <Fichier> SUR <Rubrique cl> ... 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 boucle Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle et sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement.

4.2.3 Instruction RENVOYER


L'instruction RENVOYER permet de sortir du traitement (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> ([<Paramtre>]) SI <Condition> ALORS RENVOYER <Valeur renvoyer> SINON RENVOYER <Valeur renvoyer> FIN

Dans tous les cas, si la <Condition> est vrifie, les oprations effectues sont : Renvoi d'un compte rendu au traitement appelant. Sortie du bloc d'instructions. Sortie du traitement (ou de la procdure) en cours. Autres instructions permettant de sortir d'une boucle ou d'une procdure Plusieurs instructions sont possibles : RETOUR : 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 ou la page en cours. Attention : Il n'est pas possible d'utiliser les instructions RETOUR et RENVOYER dans un mme traitement.

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

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.

Instruction POUR
POUR <Variable de contrle> = <Valeur initiale> 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

88

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

89

5. MOTS RSERVS
Plusieurs mots du WLangage sont des mots rservs, permettant deffectuer des actions spcifiques : Externe MaFentre MaPage MaSource Modulo MoiMme MonChampPopup MonEtat MonFichier MonParent STOP

5.2 MaFentre
Le mot-cl MaFentre permet de manipuler la fentre 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.
// Rcupration du titre de la // fentre en cours TitreFentre = MaFentre..Titre

Passage en paramtre :
AppelProcedure(MaFentre)

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 procdure 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 fonctions du WLangage acceptant un nom de fentre en paramtre, utilisez : soit une chane vide. soit directement le mot-cl MaFentre.

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.
// Intgration du fichier // "WinConst.wl" // Constantes standard de Windows EXTERNE "WinConst.wl"

Syntaxe
EXTERNE <Nom du fichier>

Plusieurs fichiers dfinissant des constantes sont fournis en standard avec WinDev / WebDev : WinConst.wl : Constantes standard de Windows. Limites.wl : Constantes correspondant aux limites 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 relche" en utilisant la variable _EVE.wParam. Utilisation 2 : Dclarer un objet externe Le mot-cl EXTERNE permet de dclarer une variable 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 prsente dans une bibliothque externe (charge avec la fonction ChargeWDL).
EXTERNE MaFentre ChargeWDL("User1.WDL") Ouvre(MaFentre)

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
MaFentre..Titre = ... "Saisissez vos donnes" TitreEnCours = MaFentre..Titre

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.
// Rcupration du titre de la page // en cours TitrePage = MaPage..Titre

Passage en paramtre :
AppelProcedure(MaPage)

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 chemin 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 projets ou utilises par le systme d'exploitation. Utilisez le mot-cl EXTERNE pour inclure dans le code un fichier contenant des constantes communes.

Syntaxe
EXTERNE <Nom de l'objet externe>

Syntaxe
MaPage

<Nom de lobjet externe> correspond au nom de l'objet externe (fichier, variable, constante, ...) dclarer.

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
MaPage..Titre = ... "Saisissez vos donnes" TitreEnCours = MaPage..Titre

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'utiliser le mot-cl MaPage dans un tat. Utilisation de MaPage dans une procdure Le mot-cl MaPage peut tre utilis dans une procdure (locale ou globale) uniquement si la procdure 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 paramtre, utilisez : soit une chane vide. soit directement le mot-cl MaPage. Partie 2 : Syntaxe de base du WLangage 91

90

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 donnes en cours. accder la valeur d'une rubrique de l'enregistrement en cours dans la source de donnes en cours. rcuprer le nom de la source de donnes pour effectuer un traitement HyperFileSQL.
// 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

Modification de la valeur du champ en cours :


MoiMme = "Dupond"

Utilisation d'une proprit (proprit Libell par exemple) :


MoiMme..Libell = "Nom des clients" LibellChamp = MoiMme..Libell

Passage en paramtre :
AppelProcedure(MoiMme)

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 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 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.

Syntaxe
MaSource

Limite Le mot-cl MaSource est utilisable uniquement dans les traitements associs : un tat. une table fichier.

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 procdure (locale ou globale) uniquement si la proc-

5.7 MonChampPopup
Le mot-cl MonChampPopup permet de manipuler le champ qui a ouvert une fentre popup. En excution, le mot-cl MonChampPopup est remplac par : le champ qui a ouvert la fentre popup (c'est-dire le champ depuis lequel la fonction OuvrePopup ou OuvrePopupPosition a t appele) le champ prcis dans la fonction OuvrePopupPosition 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 MomChampPopup 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

Passage en paramtre
AppelProcedure(MonChampPopup)

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 WLangage.
// Rcupration du reste de // la division // ResteDivision = Modulo(21,4) // ResteDivision vaut 1 // quivalent : ResteDivision = 21 Modulo 4

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 (procdure globale, classe, ...) indpendant du champ en cours.
-- 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

Syntaxe
MoiMme

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 :
SI MonChampPopup..Type = ... TypBouton ALORS MonChampPopup..Libell = ... "Slection en cours" FIN

Le mot-cl MonChampPopup peut tre utilis uniquement dans les traitements manipulant la fentre 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 procdure 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 traitement de la fentre popup. Le mot-cl MonChampPopup 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.

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 :
ValeurChamp = MoiMme

92

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

93

5.8 MonEtat
Le mot-cl MonEtat permet de manipuler l'tat courant. Lors de l'excution du projet, le mot-cl MonEtat 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 (procdure globale, classe, ...) indpendant de l'tat en cours.
// Rcupration du nom de l'tat // en cours MonEtat = MonEtat..Nom

Basse par exemple) :


MonEtat..MargeBasse = 15 ResMarge = MonEtat..MargeBasse

Manipulation du superchamp en cours Le mot-cl MonParent est toujours remplac par le superchamp en cours. Par exemple, passage en paramtre :
AppelProcedure(Monparent)

Passage en paramtre :
AppelProcedure(MonEtat)

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 procdure (locale ou globale) uniquement si la procdure 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.

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 superchamp 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.
// Ouverture fentre Ouvre(FentreSaisie) STOP // Lancement du dbogueur

Syntaxe
MonEtat

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 excutable n'a aucune action.

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-

Syntaxe Lancement du dbogueur


STOP

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 automatiquement 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 manipuler le fichier de donnes, ses proprits ou encore ses rubriques.

Lancement du dbogueur avec condition


STOP SI <Condition>

Mode de lancement du dbogueur Pour lancer le dbogueur lors d'un test, il est possible d'utiliser : le mot-cl STOP dans l'diteur de code.

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 motcl MonParent est remplac par le superchamp et non par le nom du superchamp. Le mot-cl MonParent s'utilise alors comme un superchamp. Intrt : Le mot-cl MonParent permet de rendre le code des champs du superchamp (champ, bouton, ...) ou des fonctions associes au superchamp 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.
// 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

Syntaxe
MonParent

94

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

95

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 retourner 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 procdure 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 procdures et les fonctions. Pour plus de dtails, consultez-la Dclarer une procdure / une fonction, page 99. La syntaxe d'appel est la mme pour les procdures et les fonctions. Pour plus de dtails, consultez Appeler une procdure / une fonction, page 100. Il est possible de crer des procdures multisyntaxes. 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 paragraphe suivant.

Javascript. Cette collection de procdures Javascript est enregistre dans le rpertoire "<Nom Projet>_WEB" sous le nom "<Nom Projet>.JS". Limite : Les procdures globales serveur ne peuvent pas appeler des procdures globales navigateur 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 procdure .. Crer une procdure globale vide" du menu contextuel. En WebDev : Si le code en cours est un code serveur, la procdure globale est cre dans la collection de procdures 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 "Procdures", 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 (navigateur)". 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 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 ncessaires. 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 globale et validez. Remarque : Il est possible d'afficher la liste des procdures globales dans lexplorateur de projet double-cliquant sur le dossier "Procdures" (raccourci clavier [Ctrl] [F8]) de l'diteur de code. Suppression dune procdure globale 1. Depuis lditeur de code Pour supprimer une procdure globale depuis l'diteur de code : 1. Cliquez sur le bandeau de la procdure dans l'diteur de code. 2. Dans le menu contextuel, slectionnez "Supprimer". 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 procdure. 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'explorateur 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.

6.2 Procdure / fonction globale et locale


6.2.1 Dfinition
Les procdures peuvent tre de deux types : Procdure globale : utilisable dans tous les traitements du projet. Cette procdure globale est mmorise dans le projet. Procdure locale : utilisable dans tous les traitements 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 globale 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 procdures sont les mmes pour les fonctions. 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 navigateur En WebDev, un projet correspondant un site dynamique contient au moins deux collections de procdures (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 projet>_Navigateur" (fichier ".WWN") Remarque : une collection de procdures globale Navigateur est convertie en collection de procdure

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 traitement d'initialisation d'un projet peuvent tre appe-

96

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

97

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 "Prive". Dans ce cas, la procdure globale et accessible 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, slectionnez 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 fentre fille ne peuvent pas tre utilises dans sa fentre mre. Procdures locales un tat Les procdures locales dclares dans un tat peuvent 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", droulez "Nouveau" et slectionnez loption "Nouvelle procdure locale (Serveur)". - Pour crer une procdure locale navigateur, sous le volet "Code", dans le groupe "Procdures", droulez loption "Nouveau" et slectionnez l'option "Nouvelle procdure locale (Navigateur)". Mthode 2 : Slectionnez l'option "Crer une procdure .. Crer une procdure locale vide" du menu contextuel. En WebDev : - Pour crer une procdure locale serveur, slectionnez 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 procdure 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 ncessaires. Remarque en WebDev : Si le code slectionn est un code serveur, la procdure cre sera une procdure 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 slectionnez l'option "Procdures locales" de l'lment. 3. Affichez le menu contextuel et slectionnez l'option "Nouvelle procdure locale".

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 globale. 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 procdures


Pour crer une collection de procdures : 1. Dans le volet "Explorateur de projet", slectionnez loption "Procdures". 2. Dans le menu contextuel (clic droit de la souris), slectionnez l'option "Nouvelle collection de procdures".

6.3.3 Importation d'une collection de procdures


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 "Procdures", slectionnez l'option "Importer une collection 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 procdure locale. Important : Il ne faut pas dclarer deux procdures avec le mme nom (notamment une procdure globale et une procdure locale). Dclarer une procdure avec paramtres
PROCEDURE <Nom de la procdure>(<Paramtres>) <Code de la procdure> <Code de la procdure>

Remarque : Pour des raisons de lisibilit des programmes, le mot-cl PROCEDURE peut tre remplac 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 traitements suivant le mot-cl Retour ne sont pas excuts. Par exemple :
PROCEDURE Calcul(Dividende)... SI Dividende = 0 ALORS ... Erreur("Division par 0 ... "impossible") Retour SINON ... FIN

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>([<paramtres>,]*)

98

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

99

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.

SINON Renvoyer Faux FIN

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> )

6.4.3 Renvoi d'un rsultat


Pour retourner le rsultat d'une procdure au traitement appelant, utilisez le mot-cl Renvoyer. Par exemple :
PROCEDURE Trouve(Fichier,Cl,Valeur) HLitRecherche(Fichier,Cl,Valeur) SI HTrouve=Vrai ALORS Renvoyer Vrai

Conseil : Pour les procdures qui retournent un rsultat, il est conseill d'utiliser le mot-cl FONCTION au lieu de PROCEDURE pour faciliter la lecture du code. Important : Il ne faut pas forcer la sortie d'une procdure 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.

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>))

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 procdures sont les mmes pour les fonctions. Dans le cas dune procdure multisyntaxe, lappel de la bonne syntaxe est rsolu lexcution. Pour plus de dtails, consultez Surcharger une fonction WLangage, page 102. Syntaxe : Appeler une procdure
[<Valeur retourne> = ] <Nom de la procdure>([<Paramtres>])
// 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

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.
Indice est un entier = 7 // Appel de la procdure MaProc MaProc(Indice) -- Dclaration de la procdure MaProc PROCEDURE MaProc(Indice est un rel) ...

Par exemple :
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

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 ExcuteTraitement.

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 procdure, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom de la variable passe en paramtre>)

Solution 2 : Utilisation de paramtres "local" dans la procdure Lors de la dclaration d'une procdure, les variables passes en paramtre peuvent devenir locales cette procdure. Pour cela, il suffit de faire prcder 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>)

6.6 Paramtre d'une procdure / une fonction


Il est possible de passer des paramtres une procdure. 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 procdures 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 obligatoire. Par dfaut, le type de la variable passe en paramtre lors de l'appel de la procdure est utilis dans la procdure. Par exemple :
Indice est un entier // Appel de la procdure MaProc MaProc(Indice) -- Dclaration procdure MaProc PROCEDURE MaProc(Compteur) // Compteur est de type entier Compteur += 1

Par exemple :
// Appel procdure ChampVisible ChampVisible(ChampAdresse) -- Dclaration de la procdure PROCEDURE ChampVisible(ChampAdresse) ChampAdresse..Visible = Faux

Par exemple :
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

Remarques : MoiMme permet de manipuler le champ en cours. MaFentre permet de manipuler la fentre en cours. Partie 2 : Syntaxe de base du WLangage 101

100

Partie 2 : Syntaxe de base du WLangage

MaPage permet de manipuler la page en cours MonEtat permet de manipuler l'tat en cours.

-- Traitement d'appel de la procdure Dessin(10,15,*,iVertClair)

6.8 Surcharge de prototype


6.8.1 Prsentation
Les procdures et les mthodes de classes peuvent 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'excution, le moteur dtermine automatiquement la syntaxe appeler en fonction du nombre et du type des paramtres passs. Cette technologie est souvent prsente sous diffrentes 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 Constructeurs. 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. 3. Une nouvelle syntaxe est automatiquement cre dans l'diteur de code. Remarques : La cration d'une procdure de mme nom propose 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 projet ( 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.6.3 Paramtre optionnel


Certains paramtres passs une procdure peuvent 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>,...)

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 procdure de pouvoir manipuler les diffrents paramtres 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.
// Procdure de dcalage de champs PROCEDURE DcaleChamp(*) POUR I = 1 A ... MesParamtres..Occurrence MesParamtres[I]..X +=10 FIN

Par exemple :
-- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, CoulTrait = ... iJauneClair) ... -- appel de la procdure Dessin(10,15)

Pour conserver la valeur par dfaut d'un paramtre optionnel, utilisez le caractre "*" lors de l'appel de la procdure. Par exemple :
-- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, ... CoulTrait = iJauneClair) ...

L'indexation des paramtres commence toujours 1 quel que soit le nombre de paramtres obligatoires 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.8.3 Gestion du multisyntaxe en excution


Mcanisme de base Le mcanisme de base est le suivant : dtermination 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 minimal. Si deux syntaxes sont quivalentes, c'est la premire dans l'ordre de l'diteur de code qui est excute. 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

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 procdure personnelle nomme Info. A chaque fois que la fonction Info sera utilise, ce sera la fonction personnelle qui sera excute. 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 personnalise sera utilise la place de la fonction WLangage.

6.8.2 Comment le faire ?


Ajouter des syntaxes une procdure Pour ajouter une syntaxe une procdure existante : 1. Dans l'explorateur de projet, slectionnez la procdure. 2. Affichez le menu contextuel de la procdure et choisissez l'option "Ajouter une syntaxe".

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>

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 surcharger. le mme nombre de paramtres que la fonction WLangage surcharger. Ces paramtres doivent galement tre du mme type que ceux de la 102 Partie 2 : Syntaxe de base du WLangage

Par exemple, pour surcharger la fonction Trace du WLangage, il est possible d'utiliser le code suivant :
PROCEDURE Trace(Information1) Message("Lancement d'une trace") WL.Trace(Information1)

Partie 2 : Syntaxe de base du WLangage

103

"ClasseDrive2" qui hritent de "ClasseBase".


// 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

2me aspect : une syntaxe supplmentaire dans la mthode de la classe drive :


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 syntaxe 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

7. GESTION DES EXCEPTIONS


7.1 Prsentation
En cas d'erreur de programmation dans une application / 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 diverses solutions : l'affichage d'un message d'erreur personnalis (non disponible en WebDev). le mcanisme des exceptions. Il est alors possible de personnaliser la gestion de l'erreur. Attention : ces solutions permettent uniquement de grer des erreurs de programmation. Ces solutions ne permettent pas de grer des erreurs d'excution (du type criture impossible dans un fichier en lecture seule). 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 traitement des exceptions : les exceptions gnrales : le traitement d'exception est valable pour l'ensemble d'un objet (projet, fentre, page, tat, ...) les exceptions spcifiques : le traitement d'exception est valable uniquement sur une portion de code dtermine. les exceptions automatises : la gestion des exceptions se met en place directement depuis l'interface de WinDev, WebDev et WinDev Mobile.

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 :
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 ClasseBase oDrive.meth(1) // appelle la 1re syntaxe dans la classe ClasseDrive

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 :
ClasseBase PROCEDURE meth(s est une chane) ClasseDrive PROCEDURE meth(n est un entier)

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 programmation d'afficher un message du type : "Problme dans l'application XXX : Notez le texte de

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 : .
PROCEDURE mthode(...) <redfinition>

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 utilisable 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 dclaration des globales dune page ou code douverture 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 traitement d'exception ne sera plus valide une fois le traitement termin. Ainsi, un traitement d'exception dclar dans un code de clic d'un bouton ne sera valide que dans ce traitement et dans toutes les procdures appeles partir de ce traitement.

Pour provoquer une multisyntaxe, il faut ajouter l'attribut d'extension <multisyntaxe> la mthode de la classe drive.
PROCEDURE mthode(...) <multisyntaxe>

104

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

105

7.2.2 Syntaxes de dclaration


Traitement de l'exception sur une ligne
QUAND EXCEPTION <Traitement exception sur 1 ligne> <Suite du code>

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 traitement d'exception. Exemple :
// 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

Traitement de l'exception sur plusieurs lignes


QUAND EXCEPTION <Code du traitement de l'exception> FIN <Suite du code>

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 qualit du code dans les traitements d'exception car toute erreur provoquera l'affichage de la fentre / page standard du mcanisme de scurit du WLangage. 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

7.2.3 Dclaration de plusieurs traitements d'exceptions gnrales


Dclaration des traitements d'exceptions gnrales dans un mme traitement Le second traitement d'exception remplacera le premier traitement d'exception partir de la dclaration 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 fentre 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
PROCEDURE Exemple() <Code 1> QUAND EXCEPTION <Traitement exception 1> FIN <Code 2> QUAND EXCEPTION <Traitement exception 2> FIN <Code 3>

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 rendre la main l'utilisateur. soit dutiliser la fonction FinProgramme pour fermer 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'exception sera dclenche si une erreur de programmation 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 prioritaire 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>

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 survient, le traitement d'exception ne sera pas excut. Si un traitement d'exception d'un niveau suprieur existe, ce traitement d'exception sera excut. Pour r-activer un traitement d'exception aprs utilisation, utilisez la fonction ExceptionActive. Attention, 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.

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>

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 traitement d'exception principal pendant la dure de vie de cet objet. Exemple, si les deux traitements d'exception suivants sont dclars : traitement d'exception A dclar dans le code d'initialisation d'un projet

7.4 Mcanisme des exceptions automatises


La gestion des exceptions peut tre personnalise par traitement. Vous pouvez choisir d'utiliser un traitement automatique d'exception, ou opter pour une gestion avance grce diffrentes fonctions WLangage. Partie 2 : Syntaxe de base du WLangage 107

106

Partie 2 : Syntaxe de base du WLangage

Important : La gestion automatique des erreurs et des exceptions fonctionne uniquement pour le traitement pour lequel elle est dfinie.

7.4.3 Excuter une procdure de traitement d'exception


Si cette option est slectionne, lorsqu'une exception sera rencontre dans le traitement en cours (ou dans les traitements appels par le traitement en cours), la procdure indique sera automatiquement 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 cidessous. En fonction de la constante renvoye, WinDev/WebDev effectuera le traitement correspondant. OpAnnuler OpFinTraitement OpFinProgramme Relance l'exception La fonction ayant dclench l'erreur renvoie une erreur et le traitement en cours s'arrte. quivalent RepriseSaisie La fonction ayant dclench l'erreur renvoie une erreur et le programme s'arrte. quivalent FinProgramme

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 ensembles d'objets. Chaque objet reprsente une instance 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 dclarer les classes, les mthodes et les objets en WLangage. Ce chapitre donne les syntaxes de la POO en WLangage et le principe de la cration d'un programme orient objet en WLangage. Le lecteur est suppos connatre les classes, les objets, les hritages, ... Si vous ne connaissez pas la POO, nous vous conseillons de lire des manuels spcialiss sur la POO avant de lire la suite de ce chapitre.

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 EXCEPTION:" dans le code) Excuter une procdure de traitement d'exception.

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 tiquette 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.

8.2 Concepts de la POO


8.2.1 Classe
Une classe rassemble la description d'une structure 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.

OpRelancePro- Termine l'application et relance gramme automatiquement l'application.

7.5 Fonctions de gestion des exceptions


Les fonctions suivantes permettent de grer les exceptions : R-active le traitement d'exception en cours si l'exception a pu tre corrige. Affiche la fentre standard des exceptions avec le contenu de l'exception courante. Paramtre le comportement automatique adopter en cas d'exception dans le traitement en cours. 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- Rtablit le traitement d'exception d'un traitement. Ce traitement d'exception a t mtre modifi dans le traitement en cours par un appel la fonction ExceptionChangeParamtre. Ces fonctions sont dtailles dans laide en ligne. 108 Partie 2 : Syntaxe de base du WLangage ExceptionActive ExceptionAffiche ExceptionChangeParamtre ExceptionDclenche

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 communes 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.

Partie 2 : Syntaxe de base du WLangage

109

8.2.3 Constructeur et destructeur


La notion de Constructeur et Destructeur est importante 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 dclaration d'un objet de la classe. Cela permet de s'assurer 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.

connu, dans le but de lui ajouter des fonctionnalits, 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 Hritage de classe, page 115.

8.3.2 Dclaration des membres


[<Accs>] [CONSTANT] [GLOBAL] <Nom du membre> est un <Type du membre>
ClasseSystme est une classe Nom est une chane Priv Taille est un entier FIN

ou
CONSTANT <Nom constante> = <Valeur de la constante> <Nom constante> = <Valeur de la constante> FIN
CONSTANT K=5 CONSTANT K=5 J=10 FIN

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 projet. 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 uniquement lue depuis un autre code de l'application. 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 disponibles du WLangage.

Les paramtres importants de cette syntaxe sont les suivants : <Nom de la constante> Nom de la constante. Une constante est publique. <Valeur de la constante> Valeur associe la constante. Cette valeur ne variera pas au cours du programme.

8.2.5 Encapsulation de donnes


L'encapsulation des donnes est sans aucun doute la notion la plus importante de la POO. Cette technique 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 membres dont l'accs est interdit sont appels membres privs. Il n'est possible d'y accder qu' partir des mthodes prvues cet effet dans la classe.

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

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>]])
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

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 plusieurs objets. Tous les objets d'une classe donne sont identiques par leur forme et leur comportement, mais leurs membres contiennent des donnes 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 110 Partie 2 : Syntaxe de base du WLangage TailleFichier() pour connatre la taille du fichier de l'objet Fichier

Membre Mthode

8.3.1 Dclaration de la classe


<NomClasse> est une classe <Dclaration des membres> FIN
ClasseSystme est une classe Nom est une chane FIN

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 uniquement depuis un code de la classe Protg : la mthode peut tre appele uniquement 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 Partie 2 : Syntaxe de base du WLangage 111

8.3.3 Dclaration des constantes


CONSTANT <Nom constante> = ... <Valeur de la constante>

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, prive 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 projet" (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 variable ou un membre (rcupration directe de la valeur, affectation par le symbole '=', ...). Lors de l'excution : Toute opration ncessitant la lecture de la proprit 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 diffrentes 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 traitement permet de donner une valeur la proprit. Cette valeur est passe en paramtre. Ce traitement 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 compilation apparatra sous l'diteur et une erreur se produira 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 doivent l'tre sinon une erreur de compilation est affiche. Pour plus de dtails, consultez laide en ligne.

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 peuvent pas contenir les fonctions Evnement, Timer, Multitache, DnDEvnement, DDEEvnement, AppelDLL32, ...

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 paramtres 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>)

8.4.1 Constructeur de la classe


Dclaration du constructeur Syntaxe :
PROCEDURE [<Accs>] Constructeur([<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>)

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 uniquement dans la classe. <Paramtres> Paramtres optionnels du constructeur.

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

112

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

113

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 fonction ou une procdure. Remarque : Il est possible d'instancier dynamiquement 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"... 1. Appeler une mthode appartenant un objet diffrent de l'objet en cours
<Nom Objet> : <Nom Mthode> ([<Paramtres>])

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).
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

8.6.1 Dclaration d'un objet dynamique


<NomObjet> est [un][objet] <NomClasse> dynamique

La mthode est recherche parmi les mthodes de la classe de l'objet. Si la mthode n'est pas trouve, 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>])

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.

3. Appeler une mthode d'une classe anctre qui a t redfinie


<Nom Objet> : <Nom Classe> :: <Nom Mthode> ([<Paramtres>])

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 constructeur.

4. Appeler une mthode de classe gnrale


<Nom Classe>::<Nom Mthode>([<Paramtres>])
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

8.5.1 Dclaration d'un objet


<NomObjet> est [un] [objet] <NomClasse> ([<Paramtres>])
FichierSource est un objet Fichier FichierSource est un Fichier

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 cration de la classe sous l'diteur de code. <Paramtres> Paramtres optionnels du constructeur.

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 caractristiques de la classe B sans qu'il soit ncessaire de dupliquer les programmes dans l'objet de la sousclasse A. Ainsi le nombre de lignes de code diminue. 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 faisaient 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. Partie 2 : Syntaxe de base du WLangage 115

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.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 dclaration 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'initialisation d'un projet sera dtruit la fermeture du projet.

8.5.3 Les mthodes d'un objet


Les mthodes d'un objet sont des fonctionnalits associes l'objet. Un objet possde ncessairement toutes les mthodes dcrites dans la classe. Ces mthodes peuvent tre appeles de diffrentes faons selon le lieu de l'appel. 114 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
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

l'hritage est public. <NomClasseAnctre> : Nom de la classe anctre. <Nom Membre classe Drive> : Nom du membre de la classe drive. Ce membre sera utilisable 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 ventuellement 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.

PARTIE 3 Gestion des champs, des fentres et des pages

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,

116

Partie 2 : Syntaxe de base du WLangage

1. GESTION DES FENTRES


1.1 Prsentation
Les fentres constituent l'interface principale d'une application WinDev. En effet, c'est grce aux fentres que les utilisateurs vont pouvoir consulter et manipuler des informations. Ces informations peuvent tre dynamiques et provenir par exemple de fichiers de donnes, de requtes ou tre statiques, saisies directement dans les champs de la fentre.

WD WDMobile

WinDev et WinDev Mobile proposent plusieurs fonctions 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 : Abandonne ChangeFentreSource ChangeGabarit DlaiAvantFermeture DsactiveFAA EnumreElment EnumreSousElment ExcuteFAA Ferme la fentre en cours en excutant ventuellement le code du bouton de type "ABANDON" Change dynamiquement la fentre affiche dans un champ fentre interne Change le gabarit d'une fentre. Limite le temps d'affichage d'une fentre (lorsque le temps spcifi est coul, le code d'un bouton de la fentre est excut) Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ, sur une fentre ou sur l'application en cours. Enumre les fentres d'un projet Enumre les groupes ou les menus d'une fentre.

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- Modifie le type et la dure des animations utilises lors de la fermeture des fentres meture de l'application FenAnimationOuver- Modifie le type et la dure des animations utilises lors de louverture des fentres de ture l'application FenAnimationSui- Modifie le type et la dure de la prochaine animation de fentre vante 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 graphiques limites ou pour le mode TSE si la bande passant est limite. FenDonneHauteurA- Renvoie la hauteur d'une fentre, adapte au contenu des champs. dapte Partie 3 : Gestion des fentres, des pages et des champs 119

FenDonneLargeurAdapte FenEffetInactif FenEnCours FenEnExcution FenEtat FenExtHaut FenExtLarg FenExtPosX

Renvoie la largeur d'une fentre, adapte au contenu des champs.

StyleDessin TitreEnCours TitreSuivant Utilise

Active ou dsactive le GFI Identifie la fentre en cours de saisie Identifie la fentre contenant le code du WLangage en cours d'excution Identifie ou modifie l'tat d'une fentre Renvoie la hauteur totale d'une fentre Renvoie la largeur totale d'une fentre 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 fentre n'est pas inaccessible. FenHauteurBarreI- Renvoie ou modifie la hauteur actuelle de la zone "Barre d'icnes" de la fentre mre cone 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 graphique FenTaille Renvoie ou modifie le mode d'affichage d'une fentre, modifie la hauteur et/ou la largeur 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 graphique 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

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. Modifie le titre de la fentre en cours et la barre de titre Modifie le titre de la prochaine fentre ouvrir 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.

1.3 Fonctions MDI


Les fonctions permettant de grer les fentres MDI sont les suivantes : MDIActive MDIEnumreFille MDIMenuFentre MDIMre MDIOuvre Identifie ou active une fentre fille MDI en avant-plan Renvoie l'alias de la fentre fille MDI spcifie Modifie l'agencement des fentres filles MDI Identifie le nom de la fentre mre MDI Ouvre une fentre fille MDI

Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.

1.4 Fonctions de gestion des menus


WinDev et WinDev Mobile proposent plusieurs fonctions du WLangage spcifiques aux options de menu : ChampContextuel EnumreMenu EnumreSousElment grMenu MenuAjoute MenuAjouteMenu MenuAjouteOption MenuAjouteOptionURL Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom de la nime option de menu Utilise dans une boucle, cette fonction permet d'numrer les menus droulants ou les menus contextuels d'une fentre ou d'un champ. Active ou dsactive le menu contextuel d'un graphe. Ajoute un menu contextuel dans un menu Ajoute un nouveau menu dans une fentre. Ce menu pourra contenir d'autres menus, des options de menu, des sparateurs, Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. 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. Ajoute un nouveau sparateur dans un menu. Clone un menu ou une option de menu ainsi que le code associ. Enlve la marque devant l'option de menu Identifie l'tat d'une option de menu : active, inactive ou invisible Indique si une option de menu existe dans un menu.

MenuAjouteSparateur MenuClone MenuDmarque MenuEtat MenuExiste

120

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

121

MenuInsreMenu MenuInsreOption MenuInsreSparateur MenuInvisible MenuLibell MenuMarquage MenuMarque MenuSelectMoins MenuSelectPlus MenuSupprime OuvreMenuContextuel PiloteMenu

Insre un menu avant un autre menu dans une fentre. Le menu insr pourra contenir d'autres menus, des options de menus, des sparateurs, Insre une nouvelle option une position spcifique. Cette option de menu excute une procdure passe en paramtre. Insre un sparateur dans un menu. Rend une option de menu invisible Identifie ou modifie le libell d'une option de menu Permet de savoir si la marque Positionne la marque est prsente devant l'option de menu devant l'option de menu

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

WB

varient en fonction des demandes des internautes. statiques. Ces informations sont fixes et ne changent pas.

Dsactive (grise) une option de menu Active une option de menu Supprime un menu ou une option de menu Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours Pilote le prochain menu qui sera ouvert, puis excute automatiquement une option de ce menu indique en paramtre.

2.2 Fonctions de gestion des pages


Les fonctions permettant de grer les pages sont les suivantes : AnnuleContexteAWP Supprime du contexte AWP une variable ajoute par la fonction DclareContexteAWP. CelluleAfficheDialogue Affiche une cellule dans la page avec un effet de GFI (Grisage des Fentres Inaccessibles). 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'excution 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 contexte 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

Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.

122

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

123

PageFermeDialogue

Ferme la page courante. Cette page a t ouverte avec la fonction PageAfficheDialogue. 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'initialisation 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 PageSemiDynamiAffiche une page semi-dynamique dans le navigateur de l'internaute partir d'une queAffiche 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 contextes 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 Inaccessibles). 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 Navigateur), consultez laide en ligne.

3. GRER LE BOUTON "PRCDENT" DANS


UNE PAGE
3.1 Prsentation
Le bouton "Prcdent" ou "Back" du navigateur permet 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 effectue 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. reli au fichier de donnes ITEM et un lien "Suivant". 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 premiers 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 enregistrements suivants de ITEM et renvoie au navigateur 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 enregistrements suivants de ITEM (donc de M R). Le navigateur se synchronise avec le serveur et affiche les mmes lments : linternaute a l'impression que certaines informations ne sont pas affiches. Ce dysfonctionnement peut avoir des consquences inattendues lors dune modification dun enregistrement 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

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 (solution par dfaut) Pour chaque action effectue dans une page depuis le navigateur, un test de synchronisation entre la page HTML et son contexte est automatiquement 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.

2.3 Fonctions de gestion des menus


WebDev propose plusieurs fonctions du WLangage spcifiques aux options de menu : ChampContextuel EnumreMenu MenuAjouteMenu MenuAjouteOption MenuAjouteOptionURL Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom de la nime option de menu Ajoute un nouveau menu dans une fentre. Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. 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. Ajoute un nouveau sparateur dans un menu. Insre un sparateur dans un menu. Supprime un menu ou une option de menu

MenuAjouteSparateur MenuInsreSparateur MenuSupprime

3.1.2 Exemple de dsynchronisation


Voici un exemple de site : Une page du navigateur contient une table fichier

Pour plus de dtails sur ces fonctions, consultez laide en ligne. 124 Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

125

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.2 Mise en place


Pour dsactiver le bouton "Prcdent" du navigateur pour une page prcise : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez loption "Empcher le retour sur cette page depuis le bouton "Prcdent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du navigateur pour un frameset : 1. Affichez l'onglet "Dtail" de la fentre de description du frameset (option "Description" du menu contextuel de la frame). 2. Cochez loption "Empcher le retour sur ce frameset depuis le bouton "Prcdent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du navigateur pour toutes les pages du projet : 1. Affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 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.

incluse dans l'historique des pages du navigateur : il sera possible de revenir sur cette page par la touche "Prcdent" du navigateur. Pour mettre en place la gestion de la synchronisation 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 automatiquement incluses dans l'historique des pages du navigateur : il sera possible de revenir sur ces pages par la touche "Prcdent" du navigateur.

3.2.1 Fonctionnement
La dsactivation de la fonction "Page prcdente" du navigateur entrane l'insertion du code Javascript suivant dans la page HTML gnre :
<SCRIPT LANGUAGE="JavaScript"> history.forward() </SCRIPT>

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 "Fermer" par exemple) il est possible de dbrancher le mcanisme de synchronisation : il suffit de cocher l'option "Dsactiver le mcanisme de synchronisation des pages pour ce champ" dans longlet "Avanc" de la description du champ. Le message d'avertissement peut tre personnalis (voir le paragraphe suivant).

Lors de l'excution de la page sous un navigateur, il sera impossible de revenir sur cette page par la touche "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.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 bouton 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 suffit 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 personnalise de la synchronisation dans le code de synchronisation 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 WLangage permettant d'afficher ou de rafficher une page est utilise dans le code de synchronisation de la page. Pour personnaliser le message de dsynchronisation, il suffit de saisir dans le code de synchronisation de la page : 1. le message personnalis. 2. le raffichage de la page en cours sur le serveur (avec la fonction PageActualise par exemple). Pour raliser une synchronisation partir des informations prsentes sur le poste de l'internaute, 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.

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 automatiquement ralise. Cette vrification consiste vrifier si la page affiche sur le navigateur correspond bien au contexte de page prsent sur le serveur. Deux modes de gestion de la synchronisation sont disponibles : 1. Gestion de la synchronisation par dfaut. 2. Gestion de la synchronisation par programmation, 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 mcanisme de synchronisation des pages" est slectionne pour la page. En cas de dsynchronisation, un message davertissement informe l'internaute que laction demande 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 synchronisation dans une page : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez l'option "Utiliser le mcanisme de synchronisation des pages". 3. Validez. Cette page sera automatiquement

126

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

127

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 standard (composes dune image, dun texte et de plusieurs 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.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 fentres permettent de grer : l'interrogation directive : l'utilisateur rpond une question grce des boutons contenant le texte de l'action effectuer.

WD
soit de crer un nouveau message grce une fentre trs simple. Lorsque les diffrentes caractristiques du message sont saisies, le code correspondant est automatiquement gnr. Remarque : Le code gnr utilise la fonction Dialogue.

4.3.3 Saisie immdiate


Dans une application, il est souvent long et fastidieux 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 manipulation. La fentre cre avec cette fonction permet de saisir une donne (champ de saisie ou case cocher) et de valider ou d'annuler la saisie.

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'utilisateur / 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 correspondant au message destin l'utilisateur/linternaute. 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).

la saisie immdiate, en proposant l'utilisateur de saisir directement dans la bote de dialogue la valeur voulue.

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", droulez "Options" puis slectionnez "Options gnrales de WinDev". 2. Dans longlet "Rpertoires", modifiez le rpertoire 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 slectionnez loption "Interrogation directive". 3. Dans la fentre qui saffiche, slectionnez le message supprimer et cliquez sur licne "-".

Les botes de confirmation (fonction Confirmer du WLangage).

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 suppression en cours ?" avec les boutons "Oui" ou "Non". Pour simplifier l'criture de ces messages, chaque utilisation d'une fonction de dialogue avec l'utilisateur, WinDev propose : soit de slectionner un message dj existant

Par dfaut, les botes de dialogue sont fermes uniquement lors de l'action de l'utilisateur / linternaute sur un des boutons de la bote. Si aucun bouton n'est enfonc, l'application / le site est bloqu(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.

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 application ? WinDev permet d'intgrer facilement la fentre "WinDevMessageBox" dans vos applications. Cette fentre est une fentre d'information systme (une 128 Partie 3 : Gestion des fentres, des pages et des champs

WD

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, OuiNon, Confirmer et Erreur affichent automatiquement la fentre "WinDevMessageBox".

Partie 3 : Gestion des fentres, des pages et des champs

129

Rappel : Par dfaut, les botes de dialogue affiches sont des botes de dialogue standard et possdent 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 (images, libell des boutons, ...). Par dfaut, cette fentre 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 dialogues multilingues".

Ne supprimez pas de champs. Si vous ajoutez des champs aux fentres "WinDevMessageBox" 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 modifications.

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 inactive est assombrie, et ainsi les pages actives sont plus visibles par l'internaute.

WB
PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI.

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 dialogue. un bouton permettant de valider la bote de dialogue. 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 :
CelluleFermeDialogue("MaCellule")

4.4.2 Ne plus personnaliser les fentres dinformation systme


Pour ne plus personnaliser les fentres d'information systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 2. Dans l'onglet "Style", dcochez l'option "Appliquer le thme de gabarit sur les fentres d'information 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 correspondant aux fentres "WinDevMessageBox" et "WinDevDialogBox" du rpertoire de votre projet).

4.6.2 Les fonctions WLangage disponibles


WebDev met votre disposition plusieurs fonctions permettant de dialoguer avec linternaute : CelluleAfficheDialo- Affiche une cellule dans la gue page avec un effet de GFI (Grisage des Fentres Inaccessibles). Permet de simuler simplement une bote de dialogue en code navigateur. CelluleFermeDialo- Masque une cellule affiche gue 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- Affiche une page de manire gue 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- Ferme la page courante. gue Cette page a t ouverte avec la fonction PageAfficheDialogue. Une valeur de retour peut tre renvoye la page appelante. Toutes ces fonctions permettent de dialoguer avec l'utilisateur et prennent en compte les paramtres du GFI dfinis par les fonctions suivantes : PageActiveGFI Active ou dsactive le GFI (Grisage des pages inaccessibles).

4.4.1 Personnaliser les fentres dinformation systme


Pour personnaliser les fentres d'information systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 2. Dans longlet "Style", cochez l'option "Appliquer le thme de gabarit sur les fentres d'information systme" et validez. Les fentres "WinDevMessageBox" et "WinDevDialogBox" sont automatiquement intgres dans votre application. Le gabarit de votre projet est appliqu sur ces fentres. La fentre "WinDevMessageBox" remplace la fentre 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 "WinDevMessageBox"et "WinDevDialogBox", ni le code de leurs champs.

4.4.3 Botes de dialogues multilingues


Pour obtenir des botes de dialogues multilingues : 1. Personnalisez les fentres d'information systme (voir le paragraphe prcdent). 2. Saisissez les libells multilingues des diffrents boutons (option "Description" du menu contextuel). 3. Slectionnez les images multilingues des diffrents 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, ...

La fonction CelluleFermeDialogue permet de rendre invisible la cellule prcdemment affiche. 5. Pour dialoguer avec l'internaute depuis la page (par exemple partir d'un bouton de la page) il suffit d'utiliser la fonction CelluleAfficheDialogue, en prcisant le nom de la cellule utiliser pour le dialogue.

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 conseille 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 dialogue. 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 naviga131

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 dialogue 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 bloque.

WD WDMobile

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.

130

Partie 3 : Gestion des fentres, des pages et des champs

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 :
PageFermeDialogue()

La fonction PageFermeDialogue permet de renvoyer 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 PageAfficheDialogue, 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'internaute. 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 doivent tre enregistres dans votre projet avec le nom propos par dfaut. 2. Utiliser les fonctions OuiNon et OKAnnuler dans le code de l'application.

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 dplaces entre plusieurs champs d'une mme application 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.

4.7 Fonctions de gestion des botes de dialogue


Les fonctions permettant de grer les messages et les botes de dialogue sont les suivantes : Avertissement BulleActive Confirmer Affiche un message personnalis dans une fentre d'avertissement systme Active ou non l'affichage des bulles d'aide 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.

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 ncessaire. 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. 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 (conversions automatiques). Dans ce cas, il est conseill d'utiliser le Drag and Drop programm.

5.2.1 WinDev : Champs concerns par le Drag and Drop automatique


En WinDev, le Drag and Drop automatique est disponible sur les champs suivants : les champs de saisie, les listes, les listes image,

5.2.2 WebDev : Champs concerns par le Drag and Drop automatique


En WebDev, le Drag and Drop automatique est disponible sur les champs suivants : Champ Upload, Champ Libell, 133

132

Partie 3 : Gestion des fentres, des pages et des champs

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" permet de dfinir le champ comme "source" du "Glisser/Dplacer". L'utilisateur pourra slectionner le contenu 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.

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'explorateur 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. lit de faire du "Drag and Drop" depuis lexplorateur 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.
ExplorerAccepte(Vrai, "") Evnement("RecupFichiers", ... "*.", 563)

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 saisie, liste, liste image, arbre, table, image et codebarres. 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, effectuez 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'vnement DndSurvol). Dfinissez la procdure excute lors du "Lcher" sur le champ (fonction DndEvnement pour l'vnement DndLcher). 3. Dans chacune des procdures WLangage appeles, dfinissez l'action excuter grce aux fonctions "Drag and Drop" du WLangage.

5.4.1 Principe
Pour permettre un "Drag and Drop" depuis l'explorateur vers une application WinDev, les diffrentes tapes sont les suivantes : 1. Activez la possibilit de raliser un "Drag and Drop" depuis l'explorateur (fonction ExplorerAccepte). 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 caractristiques des fichiers "dropps" grce la fonction ExplorerRcupre.

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.
// 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

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.

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-

134

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

135

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/dplacer 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 Windows 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.

6. GESTION DES CHAMPS


6.1 Prsentation
WinDev, WebDev et WinDev proposent de nombreux 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 exemple, les fonctions prfixes par le mot "Arbre" permettent de grer les champs "Arbre", le prfixe "Table" est utilis pour grer les champs Table, ... Ce chapitre prsente toutes les fonctions WLangage 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 gnrales, pouvant tre utilises avec tout type de champs. ActiveXEvnement AjouteLien AscenseurAffiche BulleActive BulleCouleur BulleDlai ChampActif ChampAlias ChampCauseEntreSortie ChampClone ChampContextuel ChampEnCours ChampErreur ChampExiste ChampGris ChampInvisible ChampPrcdent ChampPremier 136 Partie 3 : Gestion des fentres, des pages et des champs Associe une procdure crite en WLangage un vnement d'un contrle ActiveX Ajoute un lien sur une portion de texte dans un champ de saisie Affiche ou non un ascenseur dans un champ (champ de saisie ou liste) Active ou dsactive le mcanisme d'affichage des bulles d'aide sur les champs Modifie les couleurs des bulles d'aide pour la fentre en cours Permet de modifier le dlai attendre avant l'affichage des bulles d'aide et la dure d'affichage des bulles d'aide des champs Dgrise un champ ou un groupe de champs d'une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Identifie, modifie ou restaure la liaison fichier d'un champ ou d'un ensemble de champs Indique l'origine de la modification du champ en cours de saisie Cre un nouveau champ (ce nouveau champ est une copie d'un champ existant dans la fentre en cours) Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom du champ en cours de saisie Personnalise le message d'erreur affich dans les champs, en cas d'impossibilit d'afficher la valeur Teste l'existence d'un champ dans une fentre / une page Grise un champ ou un groupe de champs. Pendant cette opration, une animation sur les champs peut tre effectue. Rend invisible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Renvoie le nom du champ prcdemment en cours de saisie dans la fentre en cours Renvoie le nom du premier champ en saisie dans la fentre spcifie Partie 3 : Gestion des fentres, des pages et des champs 137

ChampSansEspace ChampSuivant ChampSupprime ChampSurvol ChampVisible ChangeStyle ChargeParamtre ColonneEnCours CouleurSlection DonneFocus EcranPremier EnumreChamp HTMLNavigue IndiceEnCours IndiceSuivant InitParamtre Occurrence OngletDuChamp OuvreMenuContextuel ParamtreOrthographe ParentObjet RAZ RepriseSaisie RTFAjoute RTFCharge RTFInsre RTFRecherche RTFRemplace RTFSlection RTFVersTexte SaisieAssisteAjoute

Indique si les espaces droite de la valeur prsente dans le champ sont supprims Identifie le champ suivant en saisie Supprime dfinitivement un champ ou une colonne de table Identifie le champ survol par le curseur de la souris Rend visible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Modifie dynamiquement le style dun champ Lit une valeur persistante. La valeur persistante a t sauvegarde grce la fonction SauveParamtre dans le fichier spcifi avec la fonction InitParamtre Connatre l'indice de la colonne indice en cours dans une table fichier ou une table mmoire Change les caractristiques du bandeau de slection dans une table, une combo ou une liste Donne le focus au champ spcifi Dfinit le prochain champ qui sera en saisie dans la fentre en cours numre les champs d'une fentre, dune page, d'un groupe, d'un onglet ou d'un superchamp Lance une opration de navigation dans un champ HTML Obtenir l'indice du champ en cours Renvoie le numro de la ligne suivante affiche dans la table en cours. Initialise la gestion des valeurs persistantes dans la base de registres Obtenir le nombre d'occurrences d'un champ dans une fentre / une page Renvoie le nom du champ Onglet qui contient le champ spcifi Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours Permet de configurer la gestion du correcteur orthographique Open Office pour tous les champs de saisie de lapplication Identifie le "Parent" d'un objet graphique : champ, colonne, fentre, page, etc. R-initialise tous les champs de la fentre / page en cours Permet de reprendre la saisie sur le champ ou la fentre / page spcifie Ajoute une chane de caractres (au format RTF ou non) la fin du contenu dun champ de saisie RTF Charge un fichier au format RTF dans un champ de saisie RTF Insre une chane de caractres au format RTF dans le contenu dun champ de saisie RTF Recherche une chane de caractres dans un champ de saisie de type RTF Remplace ou insre une chane de caractres dans un champ de saisie de type RTF Change ou liste les attributs du texte actuellement slectionn dans un champ de saisie de type RTF Renvoie le texte prsent dans un champ de saisie au format RTF sans les caractristiques de formatage propres au RTF Ajoute une ligne dans la liste des valeurs disponibles pour la saisie assiste dun champ de saisie. Ferme la liste des valeurs proposes par la saisie assiste dun champ de saisie. Ouvre la liste des valeurs proposes pour la saisie assiste dun champ de saisie. Vide la liste des valeurs proposes pour la saisie assiste dun champ de saisie.

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

TexteHauteur

SaisieAssisteFerme SaisieAssisteOuvre SaisieAssisteSupprimeTout SauveParamtre Sauve une valeur persistante dans la base de registres (ou dans un autre fichier spcifi avec la fonction InitParamtre) SupprimeParamtre Supprime un paramtre ou une srie de paramtres sauvs prcdemment.

138

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

139

7. PROPRITS DES FENTRES, DES PAGES ET


DES CHAMPS
Les proprits sappliquant aux fentres, aux pages et leurs champs sont les suivantes : Adresse Affichage AffichageActif Alias Altitude Ancrage AngleObservateur AngleTitre Animation AnimationInitiale AvanceRapide AvecSaisie AxeXMax AxeXMin AxeYMax AxeYMin BandeauVisible BarreDeMessage BorneMax BorneMin BoutonCalculatrice BoutonCalendrier Bulle 140 Permet de connecter le flux avec un correspondant et de connatre l'adresse de la dernire demande de connexion Permet de connatre et de modifier la vido actuellement affiche par le champ Confrence 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 WinDev : Permet de connatre et de modifier l'alias d'une fentre WebDev : Renvoie le nom interne HTML/Javascript dun champ ou dune page Permet de connatre et de modifier l'altitude d'un champ Permet de connatre l'ancrage actuel d'un champ et de modifier les caractristiques d'ancrage d'un champ Permet de connatre et de modifier l'angle secondaire d'un champ carrousel. Permet de faire "pivoter" le champ. 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%). 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 Permet de connatre l'tat initial de l'animation dans un champ image ou dans un champ libell Permet de connatre et de modifier la valeur de l'avance rapide d'un ascenseur Permet de savoir si un champ Combo est avec ou sans saisie et permet de modifier cet tat. Permet de connatre la borne maximale des abscisses (axe X) d'un champ de type graphe. Permet de connatre la borne minimale des abscisses (axe X) d'un champ de type graphe. Permet de connatre la borne maximale des ordonnes (axe Y) d'un champ de type graphe. Permet de connatre la borne minimale des ordonnes (axe Y) d'un champ de type graphe. Permet de savoir si le bandeau est visible sur une colonne de table (ou table hirarchique) et permet de rendre visible ou invisible le bandeau de slection sur une colonne de table. 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 Permet de connatre et de modifier la borne maximale d'un champ Permet de connatre et de modifier la borne minimale d'un champ Permet de savoir et d'indiquer si un champ de saisie numrique ou montaire propose un bouton pour afficher une calculatrice en popup. Permet de savoir et d'indiquer si un champ de saisie de type Date propose un bouton pour afficher un calendrier en popup. Permet de connatre/modifier le texte affich dans la bulle d'aide associe un champ

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- Permet de savoir si les barres d'outils de la fentre sont compactes et de compacter ou tils 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- Permet de savoir si la fentre est dplaable par le fond et de rendre ou non la fentre Fond 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 prsent dans une fentre.

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

141

DureNonRponse Permet de connatre et de modifier dlai partir duquel la tentative de connexion sera considre comme "ayant chou" EffacementAuto- Permet de grer le mode "Effacement automatique" d'un champ de saisie. matique 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- Permet de connatre et de modifier la taille de la grille pour le dplacement des rendezcement 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 redimensionnement 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) 142 Partie 3 : Gestion des fentres, des pages et des champs

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- Permet de connatre et de modifier la hauteur des ruptures entre les jours dans un Jour champ Planning avec les jours en ligne et les ressources en colonne. HeureOuvrableD- Permet de connatre et de modifier l'heure de dbut des heures ouvrables utilises par but 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 associe 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 associe 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- Permet de connatre et de modifier le mode d'interprtation du caractre '& mercial 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 multicolonnes 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. Partie 3 : Gestion des fentres, des pages et des champs 143

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- permet de connatre et de modifier le nombre maximum d'lments en ligne dans un gne 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 classique 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. ModificationDuPermet de savoir et d'indiquer si lutilisateur peut modifier la dure dun rendez-vous reRDV 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

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 multicolonnes NombrePage Permet de connatre le nombre de pages prsentes dans un fichier image de type "multipages" NomComplet Permet de connatre le nom complet d'un champ, d'un groupe de champs ou d'une fentre NomFichierNaviga- Permet de connatre le nom original du fichier uploader prsent sur le poste de l'interteur 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 TableInsreLigne Num1erJourDeLaS Permet de connatre et de modifier le 1er jour de la semaine affich dans un champ emaine 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 OrientationElPermet de connatre et modifier l'orientation dun champ Organigramme. ment OrientationVerti- Permet de connatre et de modifier lorientation dun champ liste image cale 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 condenser 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

144

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

145

Ressource RessourceSlectionne RetraitGauche RichEdit RubriqueAffiche RubriqueAfficheImage RubriqueMmorise RubriqueParcourue SaisieDirecteRDV SaisieManuscrite ScrollAuDoigt ScuritHTML Slectionne SlectionPriode SensEcriture SousLibell StyleFond Taille TauxAncrageBas TauxAncrageDroite

TauxAncrageHauteur TauxAncrageLar- Permet de connatre et de modifier le taux d'ancrage en agrandissement d'un champ geur 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 146 Partie 3 : Gestion des fentres, des pages et des champs

Permet de connatre les ressources visibles dans un champ Planning et permet deconnatre la ressource du champ Planning correspondant l'indice spcifi Renvoie le nom de la ressource correspondant la slection de lutilisateur dans un champ Planning Permet de connatre et de modifier l'espace laiss gauche du texte dans les colonnes de table Permet de savoir si un champ d'une fentre est de type RTF (Rich Text Format) Permet de connatre ou de modifier la rubrique affiche dans une table, une zone rpte, une liste ou une combo Permet de connatre ou de modifier la rubrique correspondant l'image affiche dans une liste image Permet de connatre ou de modifier la rubrique mmorise d'une table, dune zone rpte, d'une liste ou d'une combo Permet de connatre et de modifier la rubrique utilise pour le parcours automatique des tables, des zones rptes, des listes ou des combos Permet de savoir et d'indiquer si lutilisateur peut modifier directement le titre dun rendez-vous dans un champ Planning ou dans un champ Agenda. Permet de connatre et de modifier le mode de saisie manuscrite dans les champs de saisie RTF. 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 Permet de connatre et de modifier l'tat du mcanisme de scurit des champs de saisie au format HTML Permet de savoir si une ligne dune liste ou dune table est slectionne et de slectionner une ligne dune liste ou dune table Permet de savoir et d'indiquer si l'utilisateur peut slectionner une priode dans un champ Planning ou dans un champ Agenda. 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). Permet de connatre et de modifier le libell secondaire d'une option de slecteur. Permet de modifier le style d'affichage du fond des cellules de tables et / ou de tables hirarchiques. Permet de connatre et de modifier le nombre maximum de caractres contenus dans un champ d'une fentre ou dune page Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe vertical Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe horizontal Permet de connatre et de modifier le taux d'ancrage en hauteur d'un champ

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.

Partie 3 : Gestion des fentres, des pages et des champs

147

PARTIE 4 Fonctions standard

148

Partie 3 : Gestion des fentres, des pages et des champs

1. MANIPULER LES NUMRIQUES


1.1 Prsentation
De nombreuses fonctions de programmation permettent 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 permettant de simplifier et de rsoudre de nombreux problmes. Les calculs sur les matrices sont utiliss dans de nombreux domaines : conomie, physique, etc. Dans ces domaines, les problmes rencontrs peuvent souvent se mettre sous la forme d'un systme d'quations. Le rsultat de ce systme d'quations peut tre calcul grce aux matrices. 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 dynamiquement. 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.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 lments de la matrice. Chaque lment est identifi par sa ligne et sa colonne. Une valeur est associe chaque lment.

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, inversion, compression, suppression), initialiser les lments des matrices, lire la valeur des lments des matrices, effectuer divers calculs sur les matrices (addition, multiplication, transpose, dterminant, etc.), obtenir diverses informations sur les matrices (nombre de lignes, nombre de colonnes, etc.). Exemple Pour effectuer des calculs financiers, votre programme cre plusieurs matrices. Les lments des matrices peuvent tre initialiss. Plusieurs calculs sont possibles sur ces matrices.

Dans cette matrice, n = 2 lignes et p = 4 colonnes. La valeur de l'lment (ligne 2 , colonne 3) est 7.

Partie 4 : Fonctions standard

151

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 statistiques 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 prises 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 plusieurs mthodes, calculer lcart-type, etc.

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.

1.5.2 Fonctions Binaire


Les fonctions de gestion des valeurs binaires sont les suivantes : ETBinaire NONBinaire OUBinaire OUExclusifBinaire Renvoie le rsultat du ET logique (bit bit) entre deux valeurs Renvoie le rsultat du NON logique (bit bit) d'une valeur Renvoie le rsultat du OU logique (bit bit) entre deux valeurs Renvoie le rsultat du OU Exclusif logique (bit bit) entre deux valeurs

1.5 Fonction de gestion des numriques


1.5.1 Fonctions diverses
Les fonctions de gestion des valeurs numriques sont les suivantes : Abs ArcCosinus ArcSinus ArcTang ArcTang2 Arrondi ArrondiInfrieur ArrondiSuprieur Conversion Cosinus CoTang EstImpair EstPair Exp Factorielle Hasard 152 Calcule la valeur absolue d'une expression numrique (entire ou relle) Calcule l'arc cosinus d'une valeur numrique (entire ou relle) Calcule l'arc sinus d'une valeur numrique (entire ou relle) Calcule l'arc tangente d'une valeur numrique (entire ou relle) Renvoie l'arc tangente 2 des valeurs passes en paramtre Calcule la valeur arrondie d'une valeur numrique selon le nombre de dcimales prcis Renvoie la valeur arrondie d'une valeur numrique l'entier infrieur le plus proche Renvoie la valeur arrondie d'une valeur numrique l'entier suprieur le plus proche Convertit une valeur d'une unit dans une autre Calcule le cosinus d'un angle Calcule la co-tangente d'un angle Identifie un nombre impair Identifie un nombre pair Calcule lexponentielle dune valeur numrique Renvoie la factorielle d'un nombre entier Renvoie un nombre alatoire

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.

1.5.3 Fonctions Matrice


Les fonctions de gestion des matrices sont les suivantes : MatAdditionne MatCompresse MatCopie MatCre MatDterminant MatEcrit MatErreur MatExiste MatInverse MatLit MatLitColonne MatLitLigne MatMultiplie MatNbColonne MatNbLigne MatRelAdditionne MatRelMultiplie MatRemplit MatSupprime MatTranspose Additionne deux matrices de mme dimension Compresse la place mmoire occupe par une matrice Cre la copie d'une matrice Cre une matrice Calcule le dterminant d'une matrice carre crit un lment dans une matrice Identifie le type de la dernire erreur due une fonction de gestion de matrices Teste l'existence d'une matrice en mmoire Inverse une matrice carre Lit la valeur d'un lment d'une matrice Lit la valeur de tous les lments d'une colonne d'une matrice Lit la valeur de tous les lments d'une ligne d'une matrice Multiplie deux matrices Renvoie le nombre de colonnes d'une matrice Renvoie le nombre de lignes d'une matrice Additionne une valeur chaque lment d'une matrice Multiplie chaque lment d'une matrice par une valeur Initialise tous les lments d'une matrice d'une taille donne Supprime une matrice existante Calcule la transpose d'une matrice Partie 4 : Fonctions standard 153

Partie 4 : Fonctions standard

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.

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.

1.5.4 Fonctions Financires


Les fonctions financires sont les suivantes : 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 investissement 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.

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 (fonction Position ou Remplace par exemple). Certaines fonctionnalits proposes par les fonctions 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 chanes 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 phontique (fonction Phontique). Remarque : Pour toutes les conversions de type Chane/Date ou Chane/Heure, consultez le chapitre Manipuler des dates et des heures, page 159. Pour plus de dtails, consultez le paragraphe Oprateurs 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 utilise. L'UNICODE peut prendre en compte tous les systmes d'criture de la plante. 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).

1.5.5 Fonctions Statistiques


Les fonctions statistiques sont les suivantes : StatCorrlation StatCovariance StatEcartMoyen StatEcartType StatEcartTypeP StatErreur StatMax StatMin StatMoyenne StatSomme StatVariance StatVarianceP Calcule le coefficient de corrlation entre deux sries de valeurs Calcule la covariance entre deux sries de valeurs Calcule la moyenne des carts absolus des valeurs par rapport leur moyenne arithmtique Calcule l'cart type d'une srie de valeurs Calcule l'cart type d'une srie complte de valeurs Calcule le numro de la dernire erreur due une fonction statistique Calcule la valeur maximale d'une srie de valeurs Calcule la valeur minimale d'une srie de valeurs Calcule la moyenne arithmtique, gomtrique ou harmonique d'une srie de valeurs Calcule le cumul d'une srie de valeurs Calcule la variance d'une srie de valeurs Calcule la variance d'une srie complte de valeurs

2.2.2 WinDev et l'unicode


Pour grer l'UNICODE, WinDev propose : le type Chane UNICODE deux fonctions de conversion : AnsiVersUnicode Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format UNICODE. UnicodeVersAnsi Convertit une chane de caractres au format Unicode en une chane de caractres au format ANSI (Windows).

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. 154 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

155

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 Windows 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 caractres au format UNICODE. Chane de caractres Dans la plupart des cas, la manipulation des chanes 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 chanes de caractres au format UNICODE. Cette conversion est effectue mme si l'ouverture de ce fichier au format ANSI est explicitement demande. Cette conversion est totalement transparente.

Crypte DcomplteRep Dcompresse

2.4 Fonctions de gestion des chanes de caractres


Les fonctions permettant de grer les chanes de caractres sont les suivantes : AnsiVersOem AnsiVersUnicode Asc BufferVersHexa Caract CaractOccurrenceType CaractType CaractUnicode ChaneCommencePar ChaneCompare ChaneConstruit ChaneFinitPar Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format OEM (DOS) Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format UNICODE Calcule le code ASCII du caractre spcifi (le code ASCII utilis correspond la norme ANSI utilise par Windows) Convertit un buffer en une chane hexadcimale affichable (par exemple : "4A 5B 00"). Renvoie le caractre correspondant au code ASCII spcifi (le code ASCII utilis correspond la norme ANSI utilise par Windows) Renvoie le nombre de caractres vrifiant les informations de type donnes.

Renvoie des informations sur le type d'un caractre. Renvoie le caractre Unicode correspondant au code ASCII spcifi Vrifie si une chane de caractres commence par une chane de caractres spcifique ou par une des chanes de caractres prsentes dans une liste. Compare deux chanes de caractres Construit une chane de caractres en fonction d'un format et de paramtres 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. 156 Partie 4 : Fonctions standard

Crypte une chane de caractres sous forme binaire ou sous forme ASCII Enlve si ncessaire le caractre "\" ou "/" la fin d'une chane de caractres 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- Transforme un numrique (entier, rel ou montaire) en une chane de caractres Chane 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 phontique franaise) Position Recherche la position d'une chane de caractres dans une autre chane de caractres PositionOccurRecherche la X me position d'une chane de caractres dans une autre chane de rence 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 kilooctets, mga-octets ou tera-octets TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres au format XML Partie 4 : Fonctions standard 157

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- Vrifie si une chane de caractres correspond un format spcifique, et rcupre les Rgulire diffrentes sous-chanes constituant le format XMLVersTexte Convertit une chane de caractres au format 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.

3. MANIPULER DES DATES ET DES HEURES


3.1 Prsentation
De nombreux moyens vous permettent de manipuler 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'utiliser 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 (conversion 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 AnneEnCours ChaneVersDate ChaneVersDure ChronoDbut ChronoFin ChronoPause ChronoReprend ChronoValeur DateDiffrence 158 Partie 4 : Fonctions standard Renvoie lge partir dune de naissance Renvoie l'anne en cours sous forme d'entier Transforme une date sous forme de chane de caractres en une date au format AAAAMMJJ Transforme une dure sous forme de chane de caractres en une dure utilisable par une variable de type Dure Dmarre un chronomtre afin de mesurer la dure d'un traitement (en millisecondes) et permet de remettre zro un chronomtre existant Arrte un chronomtre et renvoie le temps coul (en millisecondes) depuis le dbut du chronomtrage (appel de la fonction ChronoDbut). Interrompt un chronomtre afin de mesurer la dure dun traitement. Redmarre un chronomtre prcdemment arrt Indique le temps coul depuis l'appel la fonction ChronoDbut Calcule la diffrence de jours entre deux dates Partie 4 : Fonctions standard 159

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 DateHeure DateHeureSys Renvoie ou modifie la date systme (date et heure du jour dfinies pour le poste en cours) DateHeureUTCVersLo- Convertit une date et une heure exprime en date et heure UTC (temps universel) cale 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 DateVersNumroDeSeRenvoie le numro de la semaine dans l'anne correspondant la date spcifie maine 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- Renvoie le numro de la semaine dans l'anne correspondant la date Semaine 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- Renvoie le nom du jour de la semaine en fonction de son numro. tre NumroDeMoisVersLe- Renvoie le nom du mois en fonction de son numro. trre 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 PremierJourDeLaSeRenvoie la date du premier jour de la semaine (c'est--dire le Lundi). maine PremierJourDuMois Renvoie le premier jour du mois 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. 160 Partie 4 : Fonctions standard

4. MANIPULER LES GRAPHES


4.1 Prsentation
WinDev / WebDev / WinDev Mobile mettent votre disposition un champ graphe (utilisable dans l'diteur 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-

WD WM WebDev

phes permettent une visualisation rapide et concrte 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.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 comparaisons entre des lments. Les catgories sont organises horizontalement et les valeurs verticalement afin de mettre en vidence leur variation dans le temps.

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. Libell des donnes. 2. Titre de l'axe vertical. 3. Graduation. 4. Titre du graphe. 5. Lgende. 6. tiquette de srie. 7. Couleur de srie. 8. Libell de catgorie. 9 Espacement. 10. Relief. 11. Quadrillage.

1. Angle de dpart. 2. Titre du graphe. 3. Lgende. 4. tiquette de secteur. 5. Couleur de secteur. 6. Relief. 7. Libell de secteur.

Partie 4 : Fonctions standard

161

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.

4.2.5 Les graphes de type "Boursier"


Les graphes de type bousier permettent de reprsenter les variations du cours d'une action. Trois types de graphes boursiers sont disponibles : Chandelier

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 Graphe. Il suffit d'indiquer le nom du champ Graphe dans les diffrentes fonctions.

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 automatiquement 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 (paramtrable avec la fonction grCouleurSrie). Les couleurs sont dgrades (paramtrable avec la fonction grDgrad). Taille fichier WinDev (paramtrable avec la fonction grFenTaille). Taille fentre WinDev (paramtrable avec la fonction grFenTaille). Taille image WebDev (paramtrable avec la fonction grTailleImage). Pas d'tiquette pour les sries (paramtrable avec la fonction grEtiquetteSrie). Pas de libell pour les lments (paramtrable avec les fonctions grEtiquetteCatgorie et grLibell). 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 fonction grAjouteDonne). Pas de destination (paramtrable avec les fonctions grDestinationChamp, grDestinationFen et grDestinationWMF). Pas d'affichage du graphe (pour dessiner le graphe, utilisez la fonction grDessine). Partie 4 : Fonctions standard 163

Barcharts 1. Titre du graphe. 2. Titre de l'axe vertical. 3. Graduation. 4. Lgende. 5. tiquette de srie. 6. Couleur 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.3.2 Crer des graphes par programmation


Une cinquantaine de fonctions WLangage permettent de manipuler les graphes. Ces fonctions permettent 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 grDestinationWMF pour enregistrer directement le graphe dans des fichiers respectivement au format BMP, EMF ou WMF. 4. Dessinez le graphe avec la fonction grDessine. De nombreuses fonctions permettent de paramtrer et de modifier l'apparence du graphe. Il est ainsi possible d'afficher une lgende, le titre des axes, etc.

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 donnes. 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 irrguliers, ils permettent aussi de grouper les donnes. Les graphes "nuage de points" sont couramment utiliss pour reprsenter des donnes scientifiques. Minmax

4.2.6 Les graphes en 3 dimensions


Tous les types de graphes peuvent tre affichs en 3 dimensions.

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. 162 Partie 4 : Fonctions standard

Pas de relief (paramtrable avec la fonction grRelief). 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 fonctions grNuageReliePoint et grNuageTaillePoint).

4.4 Exemples livrs avec WinDev


WinDev est livr en standard avec plusieurs exemples 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.

grLibell grLissage grMAJAutomatiqueEtiquetteCatgorie grMAJAutomatiqueSrie grMasque grMenu grNuageAjouteDonnesXY grNuageCouleurSrie grNuageEtiquetteSrie

Indique divers paramtres de lgende complmentaire dans un graphe Lisse un graphe par la mthode des splines cubiques Identifie ou dfinit si les tiquettes de catgorie est mise jour chaque dessin du graphe Lit et dfinit si une srie est mise jour chaque dessin du graphe Dfinit un masque daffichage des valeurs de la lgende complmentaire Active ou dsactive le menu contextuel d'un graphe Ajoute une donne dans un graphe de type "Nuage de points"

4.5 Fonctions de gestion des graphes


Les fonctions de gestion des graphes sont les suivantes : grAjouteDonne grBourseAjouteDonne grBulle grChargeParamtre grCouleur grCouleurSrie grCre grCrePolice grDgrad grDessine grDestinationBMP grDestinationChamp grDestinationEMF grDestinationFen grDestinationWMF grDonutPourcentageTrou grEffaceDessin grEpaisseurTrait grEtiquetteCatgorie grEtiquetteSrie grExiste grFenTaille grGraduation grHistoEspacement grImprime grIncrmenteDonne grInfoPoint grInfoXY grLgende 164 Ajoute une donne dans un graphe Ajoute une donne dans un graphe boursier Affiche et met en forme la bulle d'aide associe un graphe Restaure les paramtres de dessin d'un graphe. Renvoie et initialise la couleur de diffrents lments du graphe. Initialise la couleur d'une srie ou d'une part de secteur Cr un graphe d'un type spcifi Cre une police pour les graphes Affiche les couleurs en mode dgrad ou non Dessine un graphe selon l'ensemble des paramtres fournis Dfinit un fichier au format BMP comme destination du graphe Dfinit un champ image comme destination d'un graphe Dfinit un fichier au format EMF comme destination du graphe Dfinit une fentre comme destination d'un graphe Dfinit un mta fichier comme destination d'un graphe Modifie le pourcentage correspondant au rayon du trou d'un graphe de type beignet (ou donut). Efface le dessin d'un graphe Change la valeur de lpaisseur du trait dans un graphe de type courbe Initialise l'tiquette d'une catgorie de donnes (ou d'un secteur) d'un graphe Initialise l'tiquette d'une srie de donnes d'un graphe Teste l'existence d'un graphe en mmoire Dfinit la taille de la fentre contenant le graphe Indique la frquence des graduations sur l'axe vertical/horizontal d'un graphe Indique l'espacement entre chaque catgorie de donnes dans un histogramme Imprime un graphe Ajoute une valeur une donne dans un graphe Renvoie les coordonnes l'cran d'un point ou d'une valeur prsent dans un graphe. Renvoie des informations sur la srie prsente en un point du graphe Indique la prsence et la position de la lgende dans un graphe

Initialise la couleur d'une srie pour un graphe de type "Nuage de points" 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 Spatiale 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.

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

165

5. MANIPULER LES ZONES MMOIRE


Les fonctions permettant de grer les zones mmoire sont les suivantes : MemAjoute MemCre MemDernier MemEnCours MemEnDehors MemExiste MemModifie MemOccurrence MemPositionne MemPrcdent MemPremier MemRecherche MemRcupre MemSuivant

WD WebDev

6. MANIPULER DES FICHIERS EXTERNES


6.1 Prsentation
De nombreuses fonctions WLangage vous permettent de grer des fichiers externes. Un fichier externe est un fichier accs direct, appel galement "fichier texte" par abus de langage. Les fichiers externes peuvent tre de tout type (".TXT", ".INI", etc.). Les fichiers externes peuvent contenir : des caractres lisibles (sous forme de chane de caractres), des caractres non lisibles (sous forme binaire). Attention : Il ne faut pas confondre fichiers externes et fichiers HyperFileSQL. Les fichiers HyperFileSQL 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).

MemSupprime MemSupprimeTout 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.

Ajoute un lment dans une zone mmoire Cre une zone mmoire Positionne sur le dernier lment d'une zone mmoire et renvoie la valeur de retour de cet lment Renvoie l'indice de l'lment en cours Permet de savoir si le parcours effectu sur la zone de mmoire est en dehors de la zone de mmoire Teste l'existence d'une zone de mmoire Modifie un lment dans une zone mmoire Renvoie le nombre d'lments prsents dans une zone de mmoire Positionne la zone mmoire sur un lment Positionne sur l'lment prcdent d'une zone mmoire et renvoie la valeur de retour de cet lment Positionne sur le premier lment d'une zone mmoire et renvoie la valeur de retour de cet lment Recherche un lment dans une zone mmoire Rcupre la valeur de retour d'un lment dans une zone mmoire Positionne sur l'lment suivant d'une zone mmoire et renvoie la valeur de retour de cet lment Supprime un lment dans une zone mmoire Vide et supprime une zone mmoire

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 portion 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 importante contenant des informations confidentielles. Cryptez et compressez ces fichiers avant de les transfrer sur votre rseau. Effectuez une recherche sur vos fichiers et excutez une procdure spcifique sur les fichiers trouvs.

166

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

167

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.

fEcrit fEcritLigne fEstUneImage

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'incertitude 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- Copie un fichier image depuis le rpertoire des donnes de l'application (ou un de reWeb ses sous-rpertoires) vers le rpertoire "_WEB" de l'application (ou un de ses sousrpertoires). 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 modification 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- Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil vible 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 168 Partie 4 : Fonctions standard

crit une chane de caractres ou une portion de mmoire dans un fichier externe crit une ligne dans un fichier externe Permet de savoir si un fichier prsent sur disque ou un fichier contenu dans un buffer correspond un format d'image reconnu fExtraitChemin Renvoie les diffrents lments d'un chemin : disque, rpertoire(s), nom et extension 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 modification 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 nombre 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- Lit une ligne dun fichier externe et rcupre dans des variables les morceaux de Rgulire 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 temporaire 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 courante. 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 partags fRepExe Renvoie le chemin complet du rpertoire dexcution du projet

Partie 4 : Fonctions standard

169

fRepGlobalCommun

Renvoie un chemin de rpertoire pour les donnes globales de l'application courante (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 courante (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 compact ou dcompact n'est pas cr fSupprime Supprime un fichier accessible depuis le poste en cours fSupprimeFichierR- Supprime un fichier image du rpertoire "_WEB" de l'application (ou de un de ses pertoireWeb 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.

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 mcanisme de communication entre plusieurs applications 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 facilitent l'interoprabilit entre les applications WinDev/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 provoquera 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.
// 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)

Par exemple, une application permettant de paramtrer 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 partage particulire. Si la zone n'existe pas, l'application 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.
// 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

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'criture des fichiers externes pour transmettre les lments. Cette solution est conseille pour la transmission par exemple de classes dont les membres correspondent aux lments transmettre

7.2.2 Savoir si une zone de mmoire partage existe dj


Dans certains cas, il est ncessaire de savoir si une zone de mmoire partage existe dj.

170

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

171

7.2.4 Fonctions WLangage


Les fonctions de gestion des fichiers externes utilisables avec les zones de mmoire partages sont les suivantes : fEcrit fEcritligne fLit crit une chane de caractres dans un fichier externe et dans une portion de mmoire. crit une ligne dans un fichier texte (au format ANSI ou UNICODE). 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. Lit une ligne dans un fichier externe (au format ANSI ou UNICODE). Renvoie et modifie la position en cours dans un fichier externe.

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 smaphores 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.

fLitLigne fPositionne

7.4 Nommage des zones de mmoire partages


Les zones de mmoires partages sont identifies par leur nom. geUtilisateur. Des applications situes dans des sessions diffrentes peuvent partager une zone de mmoire partage cre avec la constantepartageGlobal.

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.

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 fonction fMemOuvre est effectif si le service de changement rapide d'utilisateur est actif, sinon il est ignor. Windows Vista et postrieur : le paramtre <Partage> de la fonction fMemOuvre est gr. Les services sont dans un espace diffrent des utilisateurs. Pour partager une zone mmoire entre un service et une application dans la session 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-

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 fonctions de callback) la synchronisation manuelle au moyen de smaphore
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.")

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).
// Code en WLangage // IdZone est un entier IdZone = fMemOuvre("mazone",1024... partageGlobal);
.

7.3.1 Notification automatique des modifications


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 WLangage en dernier paramtre de la fonction fMemOuvre. Cette procdure sera appele automatiquement chaque modification du contenu de la zone de mmoire partage. Pour attendre que les autres applications aient fini de traiter la notification (avant d'effectuer une nouvelle modification de la zone mmoire par exemple), il faut utiliser la fonction fMemAttend.
// Ouverture zone mmoire // dans l'application 1 IdZone est un entier IdZone = fMemOuvre... ("ZonePartage",200,... partageGlobal,"ModifMemoire") -- Procdure utilise pour callback (application 1)

// 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);

7.5 Fonctions de gestion des zones mmoires partages


Les fonctions permettant de grer les zones mmoires sont les suivantes : fMemAttend fMemExiste fMemOuvre Attend la fin du traitement des notifications de modification d'une zone de mmoire partage Teste l'existence d'une zone de mmoire partage Ouvre une zone de mmoire partage entre plusieurs applications

7.3.2 Synchronisation manuelle


La synchronisation peut tre ralise de faon manuelle selon le principe suivant : Les applications ouvrent la zone de mmoire partage et le smaphore de dialogue. La premire application "prend" le smaphore (fonction SmaphoreDbut). La premire application crit ses donnes dans la zone de 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. Partie 4 : Fonctions standard 173

172

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 imprims (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'diteur d'tats ne permet pas de crer les tats souhaits. Dans ce cas, il faut utiliser les fonctions d'impression du WLangage. De plus, pour des impressions trs simples (de textes ou d'images), il n'est pas ncessaire de passer par l'diteur d'tats. Remarques : Les fonctions d'impression ne sont pas disponibles en langage externe. Ce chapitre dcrit uniquement le principe des impressions en WLangage.

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 configuration 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 imprimantes 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 fonctions doivent tre les premires fonctions d'impression appeles. Toutes les fonctions d'impression appeles avant ces deux fonctions ne seront pas prises en compte.

Police d'impression Les polices d'impression sont cres avec la fonction 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'utiliser la fonction iPolice. Police dimprimante Les constructeurs d'imprimante installent des polices 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 tlcharges. Dans les listes des polices, les polices imprimantes sont identifies par une icne "imprimante" prsente 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 polices ne sont interprtes que par l'imprimante. Lors de l'aperu avant impression, l'affichage des polices est gr par Windows. Ne sachant pas grer ces polices spcifiques, Windows utilise la police cran la plus proche.

WB Important : L'utilisation des fonctions

d'impression du WLangage ncessite une configuration particulire de votre serveur. Pour plus de dtails, consultez laide en ligne.

8.2 Principe de l'impression en WLangage


Les tapes pour imprimer en WLangage sont : Etape 1 (optionnelle) : Configuration des paramtres 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. 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 format 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 programme en cours) ou dfinitive (modification de l'imprimante par dfaut dans le panneau de configuration 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 (diffrentes selon l'imprimante) seront utilises.

8.2.2 Etape 2 : Cration des polices d'impression


Cette tape permet de dfinir et de choisir les diffrentes polices qui seront utilises dans le document imprim. Il est possible de choisir et de dfinir : des polices spcifiques l'impression : ces polices 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 dessins, 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

8.2.1 Etape 1 : Configuration des paramtres d'impression


Cette tape permet de choisir selon le cas : Les paramtres d'impression du document (qualit 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 (paramtres dfinis dans le panneau de configuration de Windows) ne conviennent pas pour l'impression 174 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

175

8.2.3 Etape 3 : Impression


Cette tape consiste "envoyer l'impression" les diffrents lments imprimer : texte, images, dessins, 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 permettant 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 imprimer en millimtres, en fonction de la police spcifie. 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 considre comme transparente ou non lors des prochaines 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 diffrentes formes grce aux fonctions suivantes : iCadre : Imprime un cadre aux coordonnes spcifies. 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 considre comme transparente ou non lors des prochaines 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 spcifies. iTraitH : Imprime un trait horizontal aux coordonnes spcifies. iTraitV : Imprime un trait vertical aux coordonnes spcifies.

Autres fonctions Le WLangage propose diverses fonctions permettant d'optimiser les impressions ralises en WLangage. 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 imprimer 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 dfinies. iHauteurRestantePage : Calcule la hauteur disponible 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 limpression du document en cours (WinDev uniquement). iImpressionDemande : Permet de savoir si lutilisateur a demand limpression du document depuis laperu avant impression (WinDev uniquement). iLargeurPage : Calcule la largeur de la page imprimable en tenant compte des marges dfinies. 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 iAperu iCadre iCadreArrondi IChangeSousEtatSource iConfigure iConfigureEtat iCrePolice iDernierFichier Ajoute un signet dans laperu avant impression ou lors de l'export en PDF. Paramtre la destination de l'impression Imprime un cadre aux coordonnes spcifies Imprime un cadre avec des bords arrondis aux coordonnes spcifies Modifie par programmation l'tat associ un sous-tat dans un tat composite Configure l'imprimante Configure l'imprimante en ouvrant directement la fentre de configuration Cre une nouvelle police d'impression 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- Imprime ou non les hauts et bas de page de l'tat imbriqu qu iHauteurImage Calcule la hauteur de l'image imprimer (en millimtres)

176

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

177

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- Permet de savoir si l'utilisateur a demand l'abandon de l'impression du docune ment en cours iImpressionDemanPermet de savoir si l'utilisateur a demand l'impression du document depuis de 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- Force l'impression d'un bloc de complment de corps en spcifiant la hauteur du Corps 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- Initialise la requte lie l'tat (cas d'une requte base sur une connexion spcinexion 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 spcifie 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

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 (notamment 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 prendre en compte la mise en forme actuelle (couleur et police) ou non. iPicaVersMM Convertit les coordonnes d'un point (exprimes en coordonnes systme) en millimtres 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'impression 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.

8.4 Fonctions PDF


WinDev permet dimprimer des fichiers PDF grce aux fonctions dimpression. Ces fichiers PDF peuPDFEstProtg PDFFusionne PDFFusionneAvecMotdePasse PDFNombreDePages PDFVersTexte vent tre manipuls par programmation grce aux fonctions PDF :

Vrifie si le fichier PDF ncessite un mot de passe pour tre lu. Fusionne plusieurs fichiers PDF existant en un seul fichier PDF Fusionne plusieurs fichiers PDF existants et protgs par un mot de passe d'ouverture en un seul fichier PDF Renvoie le nombre total de pages d'un fichier PDF. 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.

178

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

179

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.

PressePapierRTF PressePapierUnicode TableVersPressePapier TwainVersPressePapier VersPressePapier VersPressePapierRTF

Rcupre une chane RTF dans le presse-papiers. Retourne le texte contenu dans le presse-papiers au format UNICODE. Copie dans le presse-papiers le contenu d'une table. Permet soit de copier le document provenant du priphrique Twain dans le presse-papiers, soit de visualiser le document provenant du priphrique Twain. crit des informations de type texte dans le presse-papiers de Windows 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.

9.4 Fonctions de gestion de la corbeille


Les fonctions permettant de grer la corbeille sont les suivantes : CorbeilleListeFichier CorbeilleRestaure CorbeilleSupprime CorbeilleVide Liste les fichiers prsents dans la corbeille Restaure un fichier prsent dans la corbeille Supprime un fichier prsent dans la corbeille Vide la corbeille.

WD

9.2 Fonctions de gestion de la base de registres


Les fonctions permettant de grer la base de registres sont les suivantes : RegistreCherche RegistreClSuivante RegistreCopiecl RegistreCreCl RegistreEcrit RegistreExiste RegistreListeCl RegistreListeValeur RegistreLit RegistrePremireSousCl RegistreRenomme RegistreSupprimeCl RegistreSupprimeValeur RegistreTypeValeur Cherche une chane de caractres dans la base de registres Identifie la cl suivant la cl spcifie dans la base de registres de Windows Copie une cl de registre avec toutes ses sous-cls et ses valeurs Cre une cl dans la base de registres de Windows crit une valeur dans un registre de la base de registres de Windows Teste l'existence d'une cl de la base de registres de Windows Liste les sous-cls d'une cl de la base de registres. Renvoie le nom et le type des valeurs d'une cl de la base de registres. Lit la valeur d'un registre dans la base de registres de Windows Identifie le chemin de la premire sous-cl de la cl spcifie dans la base de registres de Windows Renomme une cl de la base de registres. Supprime une cl dans la base de registres de Windows Supprime une valeur dans la base de registres de Windows 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.

9.5 Fonctions de gestion de la souris


Les fonctions permettant de grer la souris sont les suivantes : ChampSurvol CurseurAffiche CurseurCapture CurseurPos Sablier SourisPosX SourisPosY

WD WDMobile

Identifie le champ survol par le curseur de la souris. Affiche ou masque le curseur de la souris Dirige tous les vnements associs la souris vers une fentre spcifique ou un champ Renvoie et modifie la position du curseur de souris Transforme le curseur souris en sablier et inversement Renvoie la position horizontale (X) du curseur de souris par rapport au champ 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.

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.

9.6 Fonctions de vrification de l'orthographe


Les fonctions permettant de grer la correction orthographique sont les suivantes : OrthoAjouteDictionnaire OrthoDisponible OrthoSuggre OrthoVrifie Ajoute un mot au dictionnaire orthographique de OpenOffice pour l'instance de l'application en cours. Indique si un dictionnaire OpenOffice est disponible pour la vrification orthographique. Renvoie la liste des mots possibles prsents dans le dictionnaire de OpenOffice.. Indique si un mot est correctement orthographi.

9.3 Fonctions de gestion du presse-papiers


Les fonctions permettant de grer le presse-papiers sont les suivantes : PressePapier PressePapierFormat PressePapierHauteur PressePapierLargeur 180

WD WDMobile

Rcupre le texte ou l'image contenu dans le presse-papiers de Windows Identifie le format des informations contenues dans le presse-papiers Calcule la hauteur de l'image (au format Bitmap) contenue dans le presse-papiers Calcule la largeur de l'image (au format Bitmap) contenue dans le presse-papiers

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

181

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.

TwainListeSource TwainSelectSource TwainSourceEnCours TwainVersBMP

9.7 Fonctions Reconnaissance vocale


Les fonctions permettant de grer la reconnaissance vocale sont les suivantes : ReconnaissanceVocaleAjouteCommande ReconnaissanceVocaleDclenche ReconnaissanceVocaleSupprimeCommande

Liste les drivers des priphriques Twain connects au poste en cours. Affiche la liste des priphriques Twain disponibles sur le poste en cours et permet de choisir le priphrique Twain utilis par dfaut. Permet de connatre et de changer le priphrique Twain utilis par dfaut. 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 utilisateur du priphrique.

WD WDMobile

Ajoute une commande vocale dans la fentre en cours. Dclenche le service de reconnaissance vocale de lappareil. Supprime une commande vocale ajoute par AjouteCommandeVocale

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 utilisateur 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 utilisateur du priphrique.

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.

9.8 Fonctions de gestion des ports srie et parallle


sCalculeCrc16 sCalculeCrc32 sDansFileEntre sDansFileSortie sEchap sEcrit sEvenement sFerme sFinEvnement sFixeParamtre sLit sOuvre

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 utilisateur du priphrique.

WD WDMobile

Les fonctions permettant de grer les ports srie et les ports parallle sont les suivantes : Contrle une chane de caractres avant et aprs transmission entre applications WinDev Contrle une chane de caractres avant et aprs transmission entre application WinDev Rcupre le nombre d'octets en attente dans le buffer d'entre du port srie spcifi Rcupre le nombre d'octets en attente de transfert dans le buffer de sortie du port srie ou du port parallle spcifi Lance diverses fonctions agissant directement sur les bits du port srie et du port parallle, indpendamment du protocole de communication crit une chane de caractres dans le buffer de sortie du port srie ou du port parallle spcifi Branche un vnement sur un port srie. Ferme le port srie ou le port parallle spcifi Dbranche la dtection d'un vnement sur un port srie. Fixe ou modifie les paramtres de configuration du port srie ou du port parallle spcifi Lit une chane de caractres dans le buffer d'entre du port srie spcifi Ouvre et initialise le port srie (ou le port parallle) spcifi TwainVersPressePapier TwainZoneScan

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 utilisateur du priphrique.

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.

9.10 Fonctions USB


Les fonctions permettant de grer les priphriques USB sont les suivantes : USBDeconnecte USBDtecteStockageAmovible USBListePriphrique USBProprit USBRecherche

WD

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.

Dconnecte ou jecte un priphrique USB Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil photo USB, ) a t ajoute ou enleve Liste les priphriques USB actuellement branchs sur le poste en cours Rcupre la valeur d'une proprit d'un priphrique USB Recherche un priphrique USB d'aprs certains mots-cls

9.9 Fonctions de gestion des priphriques Twain


Les fonctions permettant de grer les priphriques Twain sont les suivantes : TwainEtat TwainHauteurSource TwainLargeurSource 182 Renvoie l'tat de la source en cours. Renvoie la hauteur de la zone scanner. Renvoie la largeur de la zone scanner.

WD

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.

9.11 Fonctions MCI


Les fonctions permettant de grer le MCI (Media Control Interface) sont les suivantes : MCIArrt Arrte lexcution dun fichier multimdia

WD

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

183

MCIDbut MCIErr MCIEtat MCIExcute MCIFerme MCIFin MCIFormatPosition MCIHauteur MCIJoue MCILargeur MCIMsgErr MCINombrePiste MCIOuvre MCIPause MCIPiste MCIPosition MCIRcupre MCITaille MCITailleFentre MCIVolume

Permet de se positionner au dbut dun fichier multimdia Renvoie le numro de la dernire erreur survenue sur une fonction MCI Permet dobtenir ltat dun fichier multimdia Excute une commande MCI Ferme un fichier multimdia Permet de se positionner la fin dun fichier multimdia Fixe le format de la position dun fichier multimdia Retourne la hauteur dun fichier multimdia (en pixels) Joue un fichier multimdia Retourne la largeur dun fichier multimdia (en pixels) Renvoie le libell de la dernire erreur survenue sur une fonction MCI Renvoie le nombre de pistes du fichier multimdia Ouvre un fichier multimdia Permet de faire une pause dans lexcution dun fichier multimdia Renvoie le numro de la piste en cours Permet de connatre ou de modifier la position dun fichier multimdia Renvoie le dernier rsultat retourn par la fonction MciExcute Permet dobtenir la taille dun fichier multimdia (exprime dans lunit dfinie par MciFormatPosition) Modifie la taille et la position de la fentre daffichage dun fichier multimdia Modifie ou identifie le volume sonore pour les fichiers de type "MID" ou "WAV"

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.

9.13 Fonctions systme


Les fonctions systme sont les suivantes : SysArrte SysChangeEnvironnement SysChangeRsolutionEcran SysCouleur SysCouleurRes SysDocRcentAjoute SysDocRcentListe SysDonneFocus SysEnvironnement SysEspace SysEtatCarteStockage SysFenActive SysFenAffiche SysFenHandle SysFenTitre SysHandleValide SysIconeAjoute SysIconeAjouteImage Arrte le systme ou ferme la session Windows en cours Modifie les variables d'environnement du systme d'exploitation du poste en cours Modifie la rsolution d'un cran. Identifie ou modifie la couleur d'un lment Windows Renvoie la rsolution de l'cran en nombre de couleurs Ajoute un fichier dans la liste des documents rcemment ouverts. Cette liste est gre par le shell de Windows. Renvoie la liste des documents rcemment ouverts. Donne le focus une fentre ou un champ Renvoie les variables d'environnement du systme d'exploitation Renvoie l'espace mmoire total du poste en cours Renvoie l'tat de disponibilit de la carte de stockage de l'appareil.

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.

9.12 Fonctions Service


Les fonctions de gestion des services Windows sont les suivantes : FinService ServiceActualise ServiceArrte ServiceAttendEtat ServiceContrle ServiceDmarre ServiceDsinstalle ServiceEcritEvnementJournal ServiceEtat ServiceExiste ServiceInfo ServiceInstalle ServiceListe ServiceModifie ServicePause ServiceRedmarre ServiceRelance 184 Termine l'excution du service en cours. Demande un service de relire ses informations de configuration. Arrte un service. Attend qu'un service soit dans un tat spcifique. Envoie un message de contrle un service. Dmarre un service. Dsinstalle un service. Ecrit un vnement dans le journal des vnements Windows. Renvoie l'tat actuel d'un service Teste si un service est install. Renvoie les caractristiques d'un service Installe un service grce aux informations donnes dans les membres de la variable Service. Liste les services prsents sur le poste en cours ou sur le poste distant indiqu. Modifie la configuration d'un service grce aux informations donnes dans les membres de la variable Service. Met en pause un service. Redmarre un service prcdemment arrt. Relance un service en pause.

Renvoie le handle de la fentre active ou active une fentre Modifie l'tat d'affichage d'une fentre Renvoie le numro de handle d'une fentre identifie par son titre Renvoie le titre d'une fentre Teste la validit d'un handle de fentre Ajoute une icne dans la barre des tches Ajoute une icne en surimpression de l'icne de l'application dans la barre des tches. Cette icne pourra tre supprime grce la fonction SysIconeSupprimeImage. 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- Supprime l'icne en surimpression de l'icne de l'application dans la barre des mage 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- Renvoie le nom des cartes graphiques connectes au poste en cours. que SysListeEcran Renvoie la liste des crans connects sur une ou plusieurs cartes graphiques. SysListeOrientationE- Permet de connatre les orientations possibles de l'cran d'un Pocket PC. cran SysListeRsolutionE- Renvoie la liste des rsolutions possibles pour un cran. cran SysMtrique Renvoie la rsolution d'un lment spcifique Partie 4 : Fonctions standard 185

Partie 4 : Fonctions standard

SysMiniatureAjouteBouton SysMiniatureModifieBouton SysMiniatureSupprimeBouton SysMiniatureSupprimeTout SysMiseEnVeille

Ajoute un bouton sur la miniature de l'application dans la barre de tches.

Modifie un des boutons prsents sur la miniature de l'application dans la barre des tches. Supprime un des boutons prsents sur la miniature de l'application dans la barre des tches. Supprime tous les boutons associs la miniature de l'application dans la barre des tches. 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- Renvoie le nom de l'cran principal pal 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 SysRepCarteStocRenvoie la liste des cartes de stockages prsentes dans le Pocket PC en cours kage 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.

ConstruitEntier CreRaccourci DchargeDLL EnvoieTouche InstalleIcone Instance Ping PoidsFaible PoidsFort sCalculeCrc16 sCalculeCrc32 SortieStandard

SupprimeRaccourci 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

Construit un entier partir de 2 entiers sur 2 octets Cre un raccourci sur le bureau de Windows, dans le menu "Dmarrer" de Windows ou dans un rpertoire spcifique Dcharge la librairie 32 bits (DLL) qui a t prcdemment charge en mmoire avec la fonction ChargeDLL Simule des manipulations de touches au clavier Cre une icne (associe un programme) dans un groupe de programme de Windows, avec la ligne de commande associe Renvoie le "Handle systme" (HINSTANCE) du programme en cours Teste si une adresse est accessible (quivalent de lutilitaire rseau PING) Renvoie les deux octets de poids faible d'un entier Renvoie les deux octets de poids fort d'un entier Contrle une chane de caractres avant et aprs transmission entre applications WinDev / entre sites WebDev Calcule le code de redondance cyclique (CRC) d'un tampon. crit une information dans le flux de sortie standard "stdout" (galement appel "console") Supprime un raccourci prcdemment cr avec CreRaccourci

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.

9.15 Evnement Windows


Les fonctions permettant de grer les vnements Windows sont les suivantes : 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- Force le parent de la prochaine fentre ouvrir. Cette fonction permet une fentre Winvant 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.

9.14 Fonctions diverses Windows


Les fonctions Windows sont les suivantes : 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- Excute une mthode d'une interface d'un objet COM instanc grce la fonction COMCreInstance. thode COMCreInstance Instancie un objet COM (Component Object Model). COMRcupreInter- Appelle la mthode QueryInterface de l'objet COM spcifi pour obtenir une interface face spcifique de cet objet afin de l'utiliser avec la fonction COMAppelleMthode. ComposantCharge Charge en mmoire le composant spcifi 186 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

187

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.

DsactiveFAA diffApplique diffCre

9.16 Fonctions Java


Les fonctions permettant de grer des applications Java sont les suivantes : JavaCharge

WebDev WD

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.

9.17 Fonctions diverses WinDev / WebDev


Les fonctions diverses sont les suivantes : AnalyseurDbut AnalyseurFin AppliContrle Lance la "collecte d'informations" pour l'analyseur de performances Arrte la "collecte d'informations" pour l'analyseur de performances 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, fentres 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 projet. ComposantInfo Renvoie des informations sur un composant ConnexionOccurRenvoie le nombre d'instances du site WebDev en cours d'excution sur le serveur rence ConstruitVariantAuto- Construit un paramtre de type variant Automation mation 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 188 Partie 4 : Fonctions standard

Dsactive une fonctionnalit automatique de WinDev sur un champ ou une fentre Applique un buffer de diffrences sur un buffer spcifique 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 composant EnModeEmulateuIdentifie si le code est excut dans l'mulateur Android ou non rAndroid EnModeEmulateuIdentifie si le code est excut dans lmulateur iOS (iPhone, iPad) ou non. riOS EnModeEmulaIdentifie si le test est excut grce l'mulateur Windows Phone ou non teurWindowsPhone EnModeEtatsEtRequ- Identifie si le code est excut lors du test d'un tat ou d'une requte sous le logiciel tes 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- Identifie si le code est excut sur un serveur HyperFileSQL ke 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- Identifie si le code est excut dans le simulateur Android ou non droid 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- Identifie si le code est excut dans le simulateur Pocket ou non ket EnModeSimulateurWin- Identifie si le code est excut dans le simulateur Windows Phone ou non dowsPhone EnModeTest Identifie le mode de lancement de l'application ou du site

Partie 4 : Fonctions standard

189

EnModeTestAutomatique EnModeTSE EnModeVGA EnModeWeb EnModeWebservice EnModeWindows EnModeWindowsMobile EnModeWindowsPhone ErreurInfo EstNumrique

Permet de savoir si un test automatique est en cours ou non Identifie si le code est excut depuis un poste en TSE ou depuis un bureau distant. Indique si lapplication sexcute sur un mobile en mode VGA Identifie le mode de lancement du code en cours Permet de savoir si l'excution est en cours dans le moteur AWWS. Identifie si le code est excut en mode Windows ou non Identifie si le code est excut depuis une application Windows Mobile. Identifie si le code est excut en mode Windows Phone ou non.

JSProprit

Rcupre des informations sur la dernire erreur d'une fonction d'une composante 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- Excute une action prdfinie de WinDev nie 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 spcifique 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 fentre. FichierAffiche Renvoie un fichier spcifique sur le navigateur du client FinAutomatismeProc- Arrte l'excution (en cours ou venir) d'une procdure automatique (dfinie par les dure 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- Interrompt le traitement de l'vnement en cours ment 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 190 Partie 4 : Fonctions standard

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 comportant 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'internaute 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'valuation" 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. Partie 4 : Fonctions standard 191

9.18 Fonctions de gestion des excutables


Les fonctions suivantes permettent de manipuler et d'obtenir des renseignements sur les excutables accessibles ou lancs sur le poste en cours : AutoLanceAjoute Permet de lancer automatiquement une application WinDev Mobile lors d'un vnement 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 WinDev 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 consommation 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.

HaspHLEcrit HaspHLInfo HaspHLLit

Ecrit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl Hasp. Rcupre des informations sur la cl lectronique Hasp. 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.

9.20 Fonctions de gestion du DDE


Les fonctions permettant de grer le DDE (Dynamic Data Exchange) sont les suivantes : DDEChane DDEConnecte

WebDev WD

Retourne les informations rcupres par la fonction DDERcupre 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.

9.21 Fonctions de gestion des applications avec "live update"


Les fonctions permettant de grer les applications avec "Live update" sont les suivantes : AppliActiveVersion Active une des versions de l'application disponible dans l'historique des versions sur le serveur d'installation de rfrence. AppliChangeParam- Change une information du mcanisme de mise jour automatique de l'applicatre tion spcifie. AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisateurs 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 versions 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'application spcifie.

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 : 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.

192

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

193

AppliSupprimeVersion

Supprime une version de l'historique des versions prsent sur le serveur d'installation de rfrence.

9.24 Fonctions de gestion des projets


Ces fonctions permettent de manipuler facilement les lments dun projet : 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- Permet d'numrer les sous-lments d'un lment du projet (fentres, tats, ment 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.

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.

9.22 Fonctions de gestion des rseaux


Les fonctions permettant de grer les rseaux sont les suivantes : RseauConnecte RseauDconnecte RseauNomDomaine RseauNomRep RseauUtilisateur Associe un lecteur un rpertoire rseau partag Dconnecte un lecteur rseau Renvoie le nom du domaine auquel est associ le poste en cours Identifie le rpertoire associ un lecteur rseau 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.

9.23 Fonctions de gestion du protocole SNMP


Les fonctions permettant de grer le protocole SNMP sont les suivantes : 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.

9.25 Fonctions de gestion du planificateur


Les fonctions permettant de grer le planificateur Windows sont les suivantes : PlanificateurAjouteHoraire PlanificateurAjouteTche PlanificateurEtatTche

WD

Cre un horaire pour une tche planifie Cre une tche dans le planificateur de tches Windows 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.

194

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

195

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.

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 variables ainsi que des fonctions WLangage. Cette mthode permet de grer les fichiers Excel

WebDev WD

(fichiers XLS ou XLSX) en lecture et en criture. Mthode 2 (conserve par compatibilit) : Utilisation de fonctions WLangage pour grer les fonctions XLS. Cette mthode permet de grer uniquement les fichiers XLS en lecture.

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'instant de la demande. Le client peut alors effectuer une demande d'activation (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. 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'activation 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.

11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX


Pour manipuler les fichiers XLS et XLSX, le WLangage met votre disposition : diffrents types de variables. Ces types de variables 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 xlsDocument). 3. Vous pouvez manipuler les diffrents lments du document Excel : soit avec les fonctions WLangage. soit avec les proprits du type xlsDocument. Exemple :
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

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 initiale (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 proposes par un site WebDev ou un Webservice permettant une activation immdiate en ligne.

10.2.2 Mise en place dans l'application cliente


L'application qu'utilise le client doit prvoir les tapes 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 fournisseur de l'application peut tre effectue par

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. 196 Partie 4 : Fonctions standard

Remarque Si le fichier Excel est ouvert en mode lecture/criture (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'installation du logiciel "Microsoft Excel" sur le poste des utilisateurs. Les fichiers XLS et les fichiers spcifiques Office 2007 (fichiers .xlsx) sont grs.

Partie 4 : Fonctions standard

197

11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par compatibilit)
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 renvoie l'identifiant du fichier XLS manipul. 2. Utilisez les fonctions XLS pour rcuprer les diffrentes informations voulues sur le fichier Excel et ses donnes. Remarques : Les fonctions XLS ne ncessitent pas l'installation 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 classeur est accessible. Nouveau mode de fonctionnement multifeuilles : dans ce mode, il est possible de slectionner la feuille du classeur o les manipulations sont effectues. La fonction permettant de modifier le mode de manipulation des fonctions XLS est la fonction xlsOuvre.

11.5 Fonctions XLS


Les fonctions permettant de grer les fichiers Excel sont les suivantes : xlsAjouteFeuille xlsDonne xlsFerme xlsFeuilleEnCours xlsMsgErreur xlsNbColonne xlsNbFeuille xlsNbLigne xlsOuvre xlsSauve xlsSupprimefeuille xlsTitreColonne xlsTypeColonne xlsVersion Ajoute ou insre une nouvelle feuille dans un document Excel. Rcupre les donnes d'une cellule d'un fichier XLS Ferme un fichier XLS Permet de connatre ou de modifier la feuille courante dun fichier XLS Renvoie le libell de la dernire erreur due une fonction XLS Renvoie le nombre de colonnes d'un fichier XLS Renvoie le nombre de feuilles dun fichier XLS Renvoie le nombre de lignes d'un fichier XLS Ouvre un fichier XLS Sauve un document Excel. Supprime une feuille dans un document Excel. Rcupre l'intitul d'une colonne d'un fichier XLS Renvoie le type des donnes saisies dans une colonne d'un fichier XLS Renvoie la version d'Excel utilise

11.4 Fonctions WLangage


Ces fonctions permettent de : manipuler des fichiers ".XLS" : ouverture et fermeture. 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 diffrentes manipulations sur un fichier ".XLS".

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. Remarque : La fonction TableVersExcel permet de crer un fichier XLS avec les donnes d'une table.

198

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

199

12. LES ARCHIVES


12.1 Prsentation
Des fonctions WLangage permettent de compresser et de regrouper vos fichiers sous forme d'archives. 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 compresss.

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 sauvegarder plusieurs fichiers de taille importante. Votre programme ou votre site peut crer une archive contenant l'ensemble des fichiers sauvegarder. 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 extension. Pour les archives au format WinDev (WDZ), les sous-parties ont pour extension : ".001", ".002", ..., ".NNN". Pour les archives au format ZIP standard, les sousparties 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 (zipAjouteFichier, zipAjouteRpertoire). 3. Dcoupez cette archive en plusieurs sous-archives (zipDcoupe). Les sous-archives sont de taille identique. Vous dcidez de la taille des sous-archives. Vous pouvez stocker les sous-archives sur diffrents supports (disquettes, CD, ....). Les sous-archives peuvent tre regroupes (fonction zipRegroupe) : l'archive redevient mono-partie. Remarque : Toutes ces manipulations peuvent galement tre ralises grce WDZip (pour plus de dtails, consultez laide en ligne). Attention : Certaines fonctions d'archivage sont utilisables uniquement sur des archives mono-partie (ajout de fichiers, suppression de fichiers, cration d'un excutable auto-extractible, etc.). Pour effectuer 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 uniquement possible de : Regrouper les diffrentes parties (zipRegroupe), Obtenir diverses informations sur l'archive et sur les fichiers de l'archive (zipExtraitChemin, zipInfoFichier, zipListeFichier, etc.), Extraire les fichiers (zipExtraitFichier, zipExtraitTout).

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 Internet/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, fermeture), manipuler les fichiers de l'archive (ajout et compression de fichiers (fichiers isols ou ensemble de fichiers d'un rpertoire), extraction et dcompression d'un fichier, suppression des fichiers d'une archive), obtenir diverses informations sur les archives et 200 Partie 4 : Fonctions standard sur les fichiers compresss (taille avant et aprs compression, etc.), dcouper et/ou regrouper des volumes d'archives, crer des excutables auto-extractibles. Exemple Pour sauvegarder la base de donnes de votre client, votre programme cre une archive de sauvegarde. Les fichiers sauvegarder sont alors compresss dans l'archive.

Partie 4 : Fonctions standard

201

12.3.3 Exemples
Votre programme WinDev doit stocker une grande quantit d'informations sur disquette. Votre programme peut crer une archive contenant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plusieurs parties. Ces volumes sont de la taille d'une disquette (1,44 Mo). Il ne reste plus qu' copier ces diffrentes parties sur des disquettes. Votre site WebDev doit proposer en tlchargement un fichier dont la taille est importante. Pour

les Internautes possdant une connexion bas dbit (ligne tlphonique par exemple), il est souvent propos de tlcharger un fichier en plusieurs parties. Votre site peut crer une archive contenant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plusieurs 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.

zipRegroupe zipSupprimeFichier zipSupprimeListeFichier zipSupprimeTout zipTaille zipTailleFichier

Regroupe les diffrentes parties d'une archive pour en faire une archive mono-partie Supprime un fichier d'une archive Supprime un ensemble de fichiers contenu dans une archive Supprime la totalit des fichiers d'une archive Renvoie la taille totale de l'ensemble des fichiers d'une archive (avant ou aprs compression) Renvoie la taille d'un fichier d'une archive (avant ou aprs compression)

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 zipNbPartieNcesRenvoie le nombre de parties d'une taille donne ncessaires pour contenir saire l'archive zipNiveauCompres- Change le niveau de compression utilis dans la cration d'une archive au format sion ZIP zipOuvre Ouvre une archive existante zipOuvreCAB Ouvre une archive CAB existante zipOuvreRAR Ouvre une archive RAR existante 202 Partie 4 : Fonctions standard

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.

Partie 4 : Fonctions standard

203

13. GRAVER UN CD OU UN DVD


13.1 Prsentation
Plusieurs fonctions WLangage sont votre disposition 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-

WebDev WD

13.3 Fonctions de gravure


Les fonctions permettant de grer les archives sont les suivantes : GraveurAjouteFichier GraveurAjouteRpertoire GraveurAnnuleGravure GraveurChemin GraveurEfface GraveurEjecte GraveurEnregistre GraveurEtat GraveurInfoCompilation GraveurInfoMdia GraveurListe GraveurMdiaPrsent GraveurNomVolume GraveurProprit GraveurSlectionne GraveurTypeMdia Ajoute un fichier la compilation Ajoute la totalit des fichiers d'un rpertoire la compilation Annule la gravure en cours de ralisation Renvoie le chemin du graveur en cours Efface les fichiers prsents sur un CD rinscriptible Ouvre ou ferme le tiroir du graveur en cours Grave les fichiers prsents dans la compilation sur le CD Renvoie l'tat actuel du graveur en cours Rcupre les caractristiques de la compilation en cours Rcupre les caractristiques du CD prsent dans le graveur en cours Liste les graveurs installs sur le poste en cours Permet de savoir si le graveur est plein ou vide. Permet de connatre ou de modifier le nom du CD graver Permet de connatre ou de modifier les proprits du graveur en cours Permet de slectionner le graveur utilis par dfaut Permet de connatre ou de modifier le format du CD graver

ble de copier directement un CD ou un DVD. En WinDev, les fonctions de gravure sont disponibles 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 :
GraveurChemin GraveurEtat GraveurListe GraveurProprit Renvoie le chemin du graveur en cours Renvoie l'tat actuel du graveur en cours Liste les graveurs installs sur le poste en cours Permet de connatre ou de modifier les proprits du graveur en cours

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 :
GraveurAjouteFichier Ajoute un fichier la compilation GraveurAjouteRper- Ajoute la totalit des fichiers d'un toire rpertoire la compilation

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.

GraveurSlectionne Permet de slectionner le graveur utilis par dfaut

2. Ouvrez si ncessaire le tiroir du graveur en cours, fonction GraveurEjecte. 3. Spcifiez si ncessaire le type du CD/DVD crer :
GraveurInfoMdia GraveurTypeMdia Rcupre les caractristiques du CD /DVD prsent dans le graveur en cours Permet de connatre ou de modifier le format du CD / DVD graver

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 (fonction GraveurAnnuleGravure).

204

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

205

14. FONCTIONS DACCS AU POCKET PC


Ces fonctions permettent d'accder aux Pockets PC partir d'une application WinDev standard. ceConnecte ceCopieFichier

WD

ceSysRep

Connecte le poste en cours un Pocket PC 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 modification 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- Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC vante 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- Renvoie le nom et ventuellement le type des valeurs d'une cl de la base de regisleur tres du Pocket PC ceRegistreLit Lit la valeur d'un registre dans la base de registres du Pocket PC ceRegistrePremire- Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC SousCl ceRegistreSousCl Identifie le chemin de la Nime sous-cl spcifie dans la base de registres du Pocket PC ceRegistreSuppri- Supprime une sous-cl dans la base de registres du Pocket PC meCl ceRegistreSuppri- Supprime une valeur dans la base de registres du Pocket PC meValeur 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 ceSupprimeRacSupprime un raccourci prcdemment cr avec la fonction ceCreRaccourci courci

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 connect 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.

206

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

207

15. FONCTIONS SPCIFIQUES WINDEV MOBILE


15.1 WinDev Mobile et les cartes SIM
15.1.1 Prsentation
WinDev Mobile permet de manipuler les informations 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. Indispensable pour accder au rseau tlphonique, cette carte puce identifie personnellement le consommateur 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 personnel. Les fonctions SIM du WLangage permettant de grer les informations contenues dans ce rpertoire. Remarque : Le rpertoire personnel prsent sur la carte SIM contient uniquement le nom des personnes et leur numro de tlphone. Seules ces informations peuvent donc tre manipules. et/ou sur un smartphone.

reconnatre automatiquement les diffrents mots crits directement sur l'cran l'aide du stylet (mthode appele "Transcriber"). Par exemple :

Par exemple :

15.1.3 Fonctionnement diffrent en mode GO et en utilisation relle


En mode GO (simulation sur le poste de dveloppement), une erreur WLangage est gnre lors de l'appel d'une fonction de gestion de la carte SIM. WinDev Mobile permet de grer simplement ce clavier grce aux fonctions WLangage. Remarque : D'autres types de clavier peuvent galement tre disponibles.

15.1.4 Fonctions WLangage


Ces fonctions permettent de grer facilement les informations contenues dans le rpertoire personnel prsent sur une carte SIM : 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

reconnatre automatiquement des lettres saisies avec un certain alphabet (mthode appele "Reconnaissance des lettres"). Par exemple :

15.2.2 Fonctions WLangage


Les fonctions permettant de manipuler le clavier dun Pocket PC sont : ClavierListe Renvoie la liste des types de claviers disponibles sur le Pocket PC ClavierMode Permet de connatre et/ou de changer le clavier en cours d'utilisation ClavierVisible Permet de savoir si le clavier en cours est activ et de rendre le clavier actif

15.1.2 Configuration ncessaire


Pour pouvoir utiliser les fonctions SIM, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (type GSM).

15.2 Clavier du Pocket


15.2.1 Prsentation
Pour permettre aux utilisateurs de vos applications de saisir des informations, il est ncessaire d'utiliser 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 informations. Par exemple :

reconnatre automatiquement des blocs de mots saisis avec un certain alphabet (mthode appele "Reconnaissance des blocs").

208

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

209

PARTIE 5 Fonctionnalits spcifiques au Web

210

Partie 4 : Fonctions standard

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'internaute 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 nouveau 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 documents sont slectionns sur le poste de l'internaute 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 automatiquement 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 proprits de type Valeur sur ce champ. Pour obtenir le nom du fichier upload, il est ncessaire d'utiliser la fonction UploadNomFichier. deux fonctions serveur du WLangage : UploadCopieFi- Enregistre un fichier "upload" chier sur le serveur. Lors de cet enregistrement, il est possible de renommer le fichier enregistr sur le serveur. UploadNomFi- Renvoie le nom d'un fichier chier "upload" (nom d'origine du fichier, ou nom du fichier enregistr sur le serveur). un ensemble de fonctions navigateur du WLangage permettant de manipuler le champ Upload : UploadCopieFi- Indique le nom du fichier en chierEnCours cours d'envoi par le champ upload. UploadLance Lance l'envoi des fichiers slectionns dans un champ upload. UploadSupSupprime un fichier de la liste prime des fichiers uploader : le fichier ne sera pas upload sur le serveur. UploadSuppri- Vide la liste des fichiers meTout uploader : aucun fichier ne sera upload sur le serveur. UploadTailleEn- Renvoie la taille (en octets) dj voyeFichieenvoye du fichier en cours rEnCours d'upload via un champ Upload. UploadTailleEn- Renvoie la taille totale (en octets) voye des fichiers dj envoys par l'upload en cours via un champ Upload. UploadTailleFi- Renvoie la taille totale (en octets) chierEnCours 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.

Partie 5 : Fonctionnalits spcifiques au Web

213

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 "Submit". 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 UploadNomFichier(<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 renommer 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 fonctionne 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 navigateur sont machines diffrentes. Le serveur ne voit pas les fichiers du navigateur. Pour obtenir les noms de fichiers manipuler, utilisez UploadNomFichier.

2. Dans le code de la page, ajoutez le code navigateur optionnel "souris dplace" (OnMouseMove)". 3. Saisissez le code suivant dans ce code :
SI SAI_ChampUpLoad <> "" ALORS SI IMG_ChampImage<> SAI_ChampUpLoad ALORS IMG_ChampImage = SAI_ChampUpLoad FIN FIN

2. DOWNLOAD DE FICHIERS
2.1 Prsentation
Le download (ou tlchargement) est l'opration qui consiste enregistrer sur le poste de l'internaute un fichier stock sur le serveur. Le fichier est "download" ou "tlcharg" sur le poste de l'internaute. 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.

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 illimite dans le moteur WebDev. Cette taille peut tre limite : par le serveur Web utilis. Pour plus de dtails, consultez la documentation du serveur Web utilis. 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 centaines 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).

2.2 Mettre en place le tlchargement dun fichier dans un site WebDev


WebDev propose plusieurs mthodes pour effectuer un tlchargement de fichier dans un site : fentre de description du bouton ou lien permettant d'effectuer le tlchargement. programmation en WLangage. 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 directement.

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 directement.

2.2.3 Forcer le tlchargement du 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.2.2 Programmation
Pour proposer le tlchargement d'un fichier par programmation, il suffit d'utiliser la fonction FichierAffiche dans le code de clic serveur du bouton ou du lien permettant de tlcharger le fichier. Exemple :
// Affiche dans le navigateur FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", .. "text/plain")

Pour ouvrir cette bote de dialogue quel que soit le type du fichier tlcharger, saisissez la ligne de code suivante :
FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", ... "application/unknown")

Cependant, le nom du fichier propos en tlchargement ne correspond pas un nom valide. Pour proposer immdiatement le nom du fichier tlcharger, il suffit de rajouter ce nom la suite des paramtres de la fonction FichierAffiche :
FichierAffiche(ComplteRep(fRepWeb()) + "NOTES.TXT",... "application/unknown", "Notes.TXT")

214

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

215

3. COOKIES
3.1 Prsentation
Un cookie est un moyen simple de stocker temporairement une information chez un internaute. Cette information pourra tre rcupre ultrieurement. Lorsque linternaute retourne sur un site quil a dj consult, le site "reconnat" linternaute grce aux cookies. Il est ainsi possible dviter de demander des renseignements dj fournis lors dune prcdente connexion, et de proposer des pages personnalises. Remarque : Un cookie possde une date dexpiration (par dfaut 30 jours aprs la cration du cookie). 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 cookies, pourront tre lues par le site lors de la prochaine 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 connexion, affichage de promotions correspondant aux recherches effectues lors de la dernire visite, ...

3.3.2 Ecrire un cookie sur le poste de linternaute


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 validit. 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 utilise 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 validit. Le cookie est immdiatement cr.

3.3.3 Lire un cookie sur le poste de linternaute (code serveur et code navigateur)
Pour lire un cookie sur le poste de l'internaute, utilisez la fonction CookieLit, en prcisant le nom du cookie. Remarques : Lors de la connexion au site Web, le serveur lit automatiquement tous les cookies associs 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'administrateur WebDev. avec un simple test par un "GO" du projet depuis l'diteur de pages de WebDev.

3.2 Que contient un cookie ?


Un cookie est un fichier texte conserv sur le poste de linternaute (gnralement dans le "cache" Internet 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 spcifique 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.

216

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

217

4. VALIDIT DES PAGES DUN SITE


4.1 Prsentation
Lors de la cration d'une page, il est possible d'indiquer 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 partir d'une date donne. Pour ne pas oublier de le faire : WebDev prviendra le dveloppeur lors de l'ouverture du projet avec une frquence paramtrable. 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.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'application 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 serveur SMTP (pour les serveurs avec authentification). 5. Validez grce au bouton "Appliquer".

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 galement utilise pour afficher une erreur de compilation d'IHM. Cette erreur de compilation indiquera si la date limite de validit de la page a t atteinte. 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 automatiquement. 4. Indiquez : lheure de lancement de la recherche des pages primes. A l'heure indique, le serveur d'application effectuera une recherche des pages primes 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 serveur SMTP (pour les serveurs avec authentification). 5. 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

218

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

219

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 projet 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. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtection de l'encodage est automatique. 6. Validez

5.2.3 Dtection automatique de l'encodage


Si l'encodage est <Non dfini>, une dtection automatique de l'encodage est effectue : cas d'une rfrence Web : le serveur est interrog. 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'interface avec les API Web telles que celles proposes par Google ou Yahoo. L'interaction avec les composants externes proposs par ces sites est simplifie. Il est possible d'allouer des objets Javascript externes en code Navigateur crit en WLangage. L'utilisation d'objets Javascript externes ne ncessite 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 programmation de l'agenda Google. Affichez l'onglet "Avanc" de la description de la page. Dans l'onglet "HTML", ajoutez la ligne de code suivante dans le code HTML de l'en-tte de page : <script type="text/javascript">google.load("gdata", "1");</script>. Ce code est fourni dans la documentation Google. Dans l'onglet "Javascript", cliquez sur le bouton "Ajouter une ressource Web". Saisissez l'adresse permettant d'inclure le service d'agenda : http://

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 dtection 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 dtection 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 programmation) proposs par des services externes (API Web) sur le WEB. Il est alors possible de s'interfacer avec ces services externes en code navigateur. 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 dtection 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.

code personnel). 2. Saisissez le code navigateur permettant de rcuprer la liste des tches.
MonServiceAgenda est ... un objet dynamique MonServiceAgenda = ... allouer un objet ... "google.gdata.calendar.CalendarService" 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

www.google.com/ jsapi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx (le code de la cl correspond votre

220

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

221

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) permet de rafrachir uniquement les donnes modifies dans une page HTML sans rafficher la totalit de la page. Par exemple, si certains lments 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 supporter un plus grand nombre de connexions simultanes. 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 supportent 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 suprieur, ). La fonction AJAXDisponible permet de savoir si le navigateur en cours supporte la technologie 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). Pour utiliser AJAX dans ce site, le traitement serveur "A chaque modification" du champ "Slectionner le pays souhait" est pass en mode AJAX. Un simple clic ! Le code reste le mme.

Pour passer un traitement en mode AJAX automatique, cliquez simplement sur le terme "AJAX" prsent dans le bandeau du traitement :

Traitement n'utilisant pas la technologie AJAX

6.2.2 Traitements permettant dutiliser automatiquement 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. Traitement utilisant la technologie AJAX Remarque : 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.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX


Grce AJAX et sans aucune programmation spcifique, il est possible de modifier les caractristiques des lments suivants : Valeur Couleur de la police Couleur de fond Champ de saisie X X X (Texte saisi) (Couleur du texte (Couleur de fond du saisi) texte saisi) Champ d'affichage X X X format (Texte affich) (Couleur du texte affi- (Couleur de fond du ch) texte affich) Table X X X (Contenu des lignes) (Couleur du contenu (Couleur de fond des des lignes) lignes paires et impaires) Zone rpte X X X (Contenu des (Couleur du contenu (Couleur de fond des champs) des champs) champs) Liste X X X (lments lists et (Couleur des llments slectionments lists) ns) Combo X X X (lments lists et (Couleur des llments slectionments lists) ns)

6.2 AJAX automatique et immdiat


6.2.1 Prsentation
Le schma suivant prsente l'utilisation automatique et immdiate de AJAX dans un site WebDev : Action de l'internaute. Dans notre exemple, slection du pays dans la combo "Slectionner 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. Par exemple, une page d'un site permet de connatre diffrentes caractristiques d'un pays (capitale, devise, drapeau, situation, ). En fonction du pays slectionn par l'internaute, les informations correspondantes sont affiches. Affichage des caractristiques du pays : sans AJAX : toute la page est raffiche. avec AJAX : seuls les champs contenant les caractristiques du pays sont rafrachis.

Visibilit X

222

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

223

Interrupteur

Slecteur Image Image clicable Vignette Graphe Libell Libell HTML Bouton Lien Rglette * Champ cellule Page Arbre

X X (Options slection- (Couleur des options) nes) X X (Option slectionne) (Couleur des options) X (Image) X (Image) X (Image) X (Graphe) X X X X X X (Libell) (Couleur du libell) X X (Libell) (Couleur du libell) X (Contenu)

X X X X X

Remarque : Pour que les clics sur la rglette soient galement en mode AJAX, il suffit : soit de cocher l'option "Mode AJAX" dans la fentre 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 traitement). 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 automatiquement remplacs par une chane vide ("") en mode AJAX. Ces caractres sont les caractres dont le code ASCII est strictement infrieur 32, l'exclusion des caractres 9, 10 et 13 (respectivement TAB et RC). Ces caractres spciaux sont gnralement inutiliss dans les chanes.

X X X X

X X X X

6.3 AJAX Programm


6.3.1 Prsentation
Le schma suivant prsente l'utilisation de "AJAX programm" dans un site WebDev : Affichage des informations modifies. Seuls les champs ncessaires sont rafrachis.

6.3.2 Fonctions de gestion AJAX


X X X X X Pour grer les traitements plus complexes, WebDev propose plusieurs fonctions AJAX (classes ici par ordre d'intrt) : AJAXDisponi- Permet de savoir si la technologie ble AJAX est utilisable dans le navigateur en cours. AJAXExcute Excute une procdure serveur sans rafrachir la page. Cette fonction est bloquante. Tant que le rsultat de la procdure excute n'est pas rcupr, aucun autre traitement n'est excut. AJAXExcuteA- Excute une procdure serveur synchrone 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- Permet de savoir si une procsynchroneEn- dure serveur appele par la foncCours tion AJAXExcuteAsynchrone est en cours d'excution AJAXAnnuleAp- Annule l'excution automatique pelAsynchrone de la procdure navigateur appele par la fonction AJAXExcuteAsynchrone. Partie 5 : Fonctionnalits spcifiques au Web 225

Remarques : Le nombre de caractristiques gres automatiquement 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 paragraphe "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 contenir 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", slectionnez le champ que vous avez ajout et dfinissez sa position.

Excution d'un traitement navigateur (fonction AJAXExcute ou AJAXExcuteAsynchrone). Demande d'excution d'une procdure serveur. Excution de la procdure serveur. Gnration du rsultat. Le rsultat de la procdure 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.

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 automatiquement.

224

Partie 5 : Fonctionnalits spcifiques au Web

Grce ces fonctions, il est possible d'excuter une procdure serveur partir d'un traitement navigateur. Attention : Il est ncessaire d'assurer la cohsion des informations stockes sur le serveur et celles affiches sur le poste des internautes. Par exemple, si des donnes sont modifies, il est ncessaire de modifier ces donnes la fois sur le serveur et la fois sur la page affiche dans le navigateur.

ContexteOuvre

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 procdure par AJAX. Pour permettre l'appel d'une procdure serveur par AJAX, cliquez simplement sur le terme "AJAX" prsent 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 serveur sont utilisables en AJAX. Cependant, les fonctions suivantes n'ont aucun intrt en AJAX. Ces fonctions ne sont donc pas disponibles en AJAX. ChaneAffiche Affiche une chane de caractres (ou un buffer) dans le navigateur Ferme un contexte de page

Ouvre un nouveau contexte de page sans renvoyer les informations vers le navigateur FichierAffiche Affiche un fichier sur le navigateur de l'internaute FramesetActualise Actualise un frameset affich dans le navigateur de l'internaute partir du contexte prsent sur le serveur FramesetAffiche Affiche un frameset WebDev dans le navigateur de l'internaute FramesetUtilise Affiche un frameset WebDev dans le navigateur de l'internaute et ferme tous les contextes de pages et de frameset en cours InitFentre Remet zro (ou non) les champs de la page en cours et lance les traitements d'initialisation des champs PageInitialisation Remet zro (ou non) les champs de la page en cours et lance les traitements d'initialisation des champs PageUtilise Affiche une page WebDev dans le navigateur de l'internaute et ferme tous les contextes 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'internaute UploadNomFichier Connatre le nom d'un fichier "upload" par l'internaute Utilise Affiche une page dans le navigateur de l'internaute 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.

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 respecter 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 optionnelle. 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 dveloppement de votre Gadget Vista. Pour cela, sous le volet "Projet", dans le groupe "Configuration de projet", droulez "Nouvelle configuration" et slectionnez 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 fonctionnent, 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 correspondant 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 Navigation. Le champ image dans une zone rpte en mode gnr ou en mode base de donnes (mmo) n'affiche pas d'image.

ContexteFerme

226

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

227

7.2.2 Gnration du gadget


Pour gnrer un gadget Vista : 1. Affichez si ncessaire la configuration correspondant 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 slectionne. 5. Slectionnez les langues du gadget. 6. Si le gadget Vista utilise des pages AWP, indiquez les caractristiques du serveur (nom du serveur, rpertoire virtuel, ...). 7. Validez. Le gadget est cr dans le sous-rpertoire "EXE" du projet (dans le rpertoire correspondant la configuration de projet). Le gadget est un fichier d'extension ".gadget". Si le poste de dveloppement est un poste sous Windows Vista, vous avez la possibilit d'installer directement le gadget pour le tester.

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 automatiquement un bouton de validation et un bouton d'annulation. 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'dition 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 GadgetChargeParamtre 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 fonctions GadgetAfficheFlyout et GadgetFermeFlyout.

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 diffrents types de pages d'un gadget Vista. des fonctions WLangage spcifiques permettant de grer certaines spcificits des gadgets Vista. 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 bouton concern l'appel la fonction GadgetAfficheFlyout. 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 gadgets. Aprs la fermeture de la fentre de configuration 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

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 traitements 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 228 Partie 5 : Fonctionnalits spcifiques au Web

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 GadgetSauveParamtre. 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.

Partie 5 : Fonctionnalits spcifiques au Web

229

8. UTILISATION DE SITES DCONNECTS


8.1 Prsentation
WebDev permet dindiquer quun site ou un ensemble de pages peuvent fonctionner en mode dconnect (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 permet de savoir si le navigateur est en mode connect ou en mode dconnect et d'adapter le comportement du site. Cette fonctionnalit utilise la gestion des manifestes 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 premire connexion un site. Un fichier manifeste spcifique permet de lister toutes les ressources mettre en cache.

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 permet aux sites Internet d'utiliser une base de donnes 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 connect et dconnect, il est possible d'utiliser la fonction NavigateurEstConnect en code navigateur pour savoir si un code serveur peut tre ou non effectu. En cas de dconnexion, une procdure 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 transmettre au serveur ds que la connexion Internet sera rtablie. Attention : Cette fonctionnalit est disponible uniquement sous certains navigateurs : Chrome, Safari, Opra 11, ... 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 fonction SQLInfoGene est automatiquement excute l'appel de la procdure. Les variables SQL sont donc toutes positionnes. Si une erreur est survenue, 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 enregistrements), 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 crases. Pour connatre les ordres SQL utilisables, consultez la documentation des bases de donnes de type "Web SQL database".

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 automatiquement dans le sous-rpertoire de la langue prsent dans le rpertoire _WEB du projet. Ce fichier va contenir les pages spcifies et toutes leurs dpendances (images, feuilles de styles CSS, fichiers Javascript, ...). 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 uniquement en mode hors connexion). pour grer un site qui perdrait la connexion Internet. 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'utiliser 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, bouton, champ de saisie, libell, image, lien, menu,

8.3.1 Comment grer une base de donnes locale ?


1. Utilisez la fonction SQLConnecte en code navigateur pour vous connecter la base de donnes locale. Par exemple :
// Connexion une base navigateur // nomme "BaseLocale" // La base est cre si elle // n'existe pas SQLConnecte("BaseLocale",... "","","","Web SQL database"))

8.2.2 Configuration du serveur


L'utilisation d'un manifeste ncessite une configuration 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 230 Partie 5 : Fonctionnalits spcifiques au Web

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.

Partie 5 : Fonctionnalits spcifiques au Web

231

8.3.2 Les fonctions SQL

Les fonctions SQL disponibles en code Navigateur sont les suivantes : 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.

ou la base distante (en mode connect). Tous les accs (cration, modification, suppression, ...) la base locale doivent tre effectus 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 navigateur, donc en AJAX, via la fonction AJAXExcute. d'tre sr que le navigateur est connect (fonction NavigateurEstConnect). Par exemple :
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)

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 :
// 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)

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 fonction AjaxExcute. Dans notre exemple, la procdure navigateur __SynchoniseBase est lance :
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

8.3.3 Enregistrer en local les donnes d'un site dconnect


WebDev permet la mise en place de sites dconnects. Si ce type de site doit enregistrer des donnes 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 :
SQLConnecte("","","", ... "RDVClients", "Web SQL database")

Par exemple :
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)

Pour rcuprer des enregistrements de la base distante (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 procdure Serveur.
PROCEDURE RecupereEnreg() POUR TOUT MonFichier sListe += [RC]+ ... MonFichier.Rubrique1 +TAB + ... MonFichier.Rubrique2 +TAB+ ... MonFichier.Rubrique3 FIN RENVOYER sListe

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 excute via la fonction SQLExec.

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)

2. Rcuprer cette liste en code navigateur :


// Rcupre la liste sListe = AJAXExecute(RecupereEnreg)

3. Parcourir la chane et extraire les informations laide de la fonction ExtraitChane. Les enregistre-

Remarque : La mise jour de la base de donnes distante peut tre provoque lors de la re-connexion au serveur. Lors de la reconnexion au serveur, 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 connect". Saisissez le code de mise jour de la base de donnes distante.

232

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

233

9. STOCKAGE LOCAL
9.1 Prsentation
Dans un site Web, le stockage local permet de stocker 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 perdues lors de la fermeture de la fentre du navigateur. 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 disponible par page. Le stockage de paramtres locaux est disponible uniquement sur les navigateurs rcents (supportant 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 FireFox).

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 changes n'est pas certifie. Pour assurer la confidentialit des donnes changes, plusieurs systmes existent. Le plus courant est l'utilisation du protocole SSL (Secure Socket Layer). SSL est un protocole de communication d'informations qui permet d'assurer l'authentification, la confidentialit 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 premiers. 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.

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.

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 (opration 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 paragraphe suivant). Note : "Verisign" dlivre des certificats de test valables 14 jours, qui permettent de tester si la connexion HTTPS est correcte. Ces cls de test permettent de tester le bon fonctionnement des transactions scurises. La procdure complte suivre pour obtenir un certificat SSL est dtaille dans la suite de ce chapitre.

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.

234

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

235

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.verisign.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 "Continue" 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 coordonnes (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.

QQDFANtcjIwXDANBgkqhkiG9w0BAQEFAANLADBIA kEAmqKCTidFBZEwI0Q7WPTBlQzlacQi5nwjNndrW. U2tjGMElrY0IxoduwTgRX+DY42IuptGERQApb5NCx /4/3iBrQIDAQABMA0GCSqGSIb3DQEBBAUAA0 EABT7REV9bLiq3EFiug+a/ irlbYI7aNiuITsdSVO7j34baFtx aa2jTE4JoGrNhrWTQZgBl1GOMpuMef/ MuwXHO1A== -----END CERTIFICATE----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 certificat"). Changez le nom de votre machine (car 2 certificats de tests ne peuvent pas tre dlivrs pour la mme machine = mme nom). Recommencez partir de ltape 1.

10.4 Insrer des transactions scurises par SSL dans un site WebDev
Dans un site Internet / Intranet, toutes les transactions ne contiennent pas obligatoirement des donnes 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 scurise dans un site WebDev suppose que toutes les formalits lies au protocole SSL ont t effectues. 3. Si ncessaire (action non dfinie dans la description 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.1 Principe
La mise en place d'un mode scuris est ralise lors de l'ouverture d'une nouvelle page par un bouton 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'utilisation de la fonction SSLActive dans le code d'un bouton ou dun lien permettant d'ouvrir une nouvelle page.

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 programmation 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 :
SSLActive(Faux)

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 programmation 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 :
SSLActive(Vrai)

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 -----BEGIN CERTIFICATE----MIICBzCCAbECEFi+J6vFjN+EkkfCKLgi6uUwDQYJKoZIhvc NAQEEBQAwgakxFjAUBgNVBAoTDVZlcmlTaWduLCB JbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnk gUmVmLiBMaWFiLiBMVEQuMUYwRAYDVQQLEz1G b3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5 nIG9ubHkuIE5vIGFzc3VyYW 5jZXMgKEMpVlMxOTk3MB4XDTAwMDkwMTAwMD AwMFoXDTAwMDkxNTIzNTk1OVowZDELMAkGA1U EBhMCRlIxEjAQBgNVBAgTCUxBTkdVRURPQzEUMB IGA1UEBxQLTU9OVFBFTExJRVIxDDAKBgNVBAoUA 1BDUzEPMA0GA1UECxQGV0VCREVWMQwwCgYDV

3. Si ncessaire (action non dfinie dans la description 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 exemple) dans la page de dpart (non scurise). 2. Initialisez cette variable avec l'adresse scurise de la page :
adrPage = PageAdresse(... <NomPageDpart>, paScurise)

3. Dans le code voulu, utilisez la fonction :


NavigateurOuvre(AdrPage)

236

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

237

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, interprte 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 informations au format JSON. Il est par exemple possible de crer un site fournisseur de services JSON (par exemple service de suivi de colis).

Exemple : Dans cet exemple, une page AWP est appele et le traitement des donnes est ralis dans la procdure RponseFonction :
JSONExcuteExterne(... "http://MonSite/MonSite_WEB/FR/ PAGE_Objet.awp?id=12",... "JsonCallback",RponseFonction)

11.3 Crer des pages renvoyant des donnes JSON


WebDev offre la possibilit de crer un site fournisseur de services JSON. Les pages permettant d'obtenir les donnes JSON doivent renvoyer une chane de caractres d'un format spcifique. Ces pages peuvent tre des pages AWP ou PHP. L'exemple suivant permet de grer l'appel avec JSONExcute et JSONExcuteExterne. Pour le cas d'un appel externe, il est ncessaire de vrifier la prsence d'un paramtre spcifique prsent sur l'URL. Ce paramtre a t fourni l'utilisateur du service JSON.
sObjet est une chane = [ {id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] } ] // // // SI Gestion d'un appel externe. Vrifie la prsence d'un nom de procdure sur l'URL PageParamtre(... "JsonCallback") <> "" ALORS sObjet = PageParamtre(... "JsonCallback") + "("+ ... sObjet + ");" FIN // ChaneVersUTF8 permet de grer // les accents ChaneAffiche(ChaneVersUTF8(sObjet))

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 format 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. Prenons un exemple simple : les donnes JSON sont renvoyes sous la forme :
{id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] }

11.3.1 Cas d'une page appele par la fonction JSONExcute


Le code suivant permet de renvoyer un identifiant et une liste de valeurs :
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(sObjet))

Il est possible par exemple de : Rcuprer la valeur dun membre de lobjet dynamique. Par exemple :
MesContacts:id

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.
MesContacts est un objet dynamique

Rcuprer les diffrents lments dune liste de valeurs. Par exemple :


POUR i=1 _A_ Dimension(... MesContacts:liste) Listejoute(LISTE_Liste_contacts,... MesContacts:liste[i]:nom+" "+ ... MesContacts:liste[i]:prnom) FIN

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.

2. Appel de la fonction JSONExcute :


MesContacts = JSONExcute(... RpertoireWeb()+ ... "FR/PAGE_Objet.awp?id=12")

11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne


Le principe d'utilisation de la fonction JSONExcuteExterne est le mme que pour la fonction JSONExcute. 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 JSONExcuteExterne permet donc d'indiquer le nom de la procdure excute pour traiter les donnes JSON.

11.3.2 Cas d'une page appele par la fonction 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 procdure est indiqu en paramtre sur l'URL de la page.

Pour que les utilisateurs de sites WebDev puissent utiliser les services JSON, il suffit donc de leur indiquer 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 consulter une documentation spcifique.

3. Traitement des donnes JSON obtenues : Ce traitement est effectu en code navigateur.

238

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

239

PARTIE 6 Communication

240

Partie 5 : Fonctionnalits spcifiques au Web

1. LA COMMUNICATION
1.1 Communication avec WinDev / WebDev
Le WLangage offre de nombreuses possibilits de communication. Moyen de communication emails Lotus Notes Outlook tlphone fax Internet Possibilits offertes par WinDev/WebDev Pour plus de dtails ... Envoi et rception demails. Consultez Communiquez emails, page 245. par

Accs aux diffrentes donnes manipu- Consultez Accder Lotus Notes et Outlook, page 253 les par Lotus Notes. Accs aux diffrentes donnes manipu- Consultez Accder Lotus Notes et les par Outlook. Outlook, page 253 Informatisation de la manipulation du tl- Consultez WinDev et la tlphonie, phone. page 271. Envoi et rception de fax. Consultez page 278. Envoyer des fax,

Rcupration de pages HTML grce aux Consultez Rcuprer des pages fonctions HTTP. HTML, page 281.

transfert de donnes Envoi et rception de donnes grce aux Consultez Gestion de fichiers sur fonctions FTP/RPC WinDev. Internet, page 282. transfert de fichiers sockets Manipulation de fichiers sur un serveur Consultez Communiquer avec un FTP. serveur FTP, page 285. Communication dapplications et de sites Consultez Gestion des sockets, au travers du rseau grce aux fonctions page 287. Socket. Communication entre un PC et un Mobile. Consultez Gestion des cls bluetooth on page 292.

Bluetooh et OBEX

gestion du multit- Excution en parallle de diverses tches Consultez Gestion des threads, che dans une mme application ou dans un page 294. mme site. serveur SOAP Cration dapplications clientes et serveur Consultez SOAP, page 302. SOAP. Webservices XML,

procdures sur un Gestion de l'excution de procdures sur Consultez serveur de services un serveur de services Web .Net. page 306. Web .Net services Web XML fichiers XML assemblages .NET Importation et/ou gnration des services Consultez Web XML de type .Net et J2EE. page 306. Gestion des fichiers au format XML. Cration et utilisation dassemblages Consultez .NET. page 316.

Webservices

XML,

Consultez XML, page 312. Assemblages .NET,

Partie 6 : Communication

243

1.2 Communication avec WinDev Mobile


WinDev Mobile permet de faire communiquer deux Pockets PC entre eux, un Pocket PC avec un Smartphone, un Pocket PC avec un PC, ... Ces "dialogues" se font par infrarouge, par Wi-Fi, par GPRS. Accs distant (RPC sur HyperFileSQL) ActiveSync Carte rseau GPRS Infrarouge Smartphone ou accs tlphonique (type GSM) Wi-Fi X X X X X X X X Email FTP Le tableau ci-dessous prsente les diffrents modes de communication disponibles pour chaque fonctionnalit propose par WinDev Mobile :

2. COMMUNIQUEZ PAR EMAILS


2.1 Prsentation
WinDev et WebDev permettent de grer directement 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 manipuler 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, EmailSessionSMTP, EmailSessionNotes, EmailSessionOutlook et EmailSessionIMAP permettent de grer les connexions aux serveurs de messagerie.

HTTP

Tlphonie

SOAP J2EE .NET X X X

Socket

SMS

X X X

X X X

X X X

X X X X X

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 gestion des emails reconnu par tous les fournisseurs de service. Ce protocole vous permet de dialoguer 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 Microsoft, 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 EmailSessionIMAP.

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'excution 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'excution des diffrents traitements. Pour utiliser le mode asynchrone, il faut : 1. Dcocher l'option "Dsactiver le spooler de mail" dans l'administrateur WebDev (onglet "Configuration). 2. Activer le mode asynchrone l'ouverture de la session SMTP (avec la fonction EmailOuvreSessionSMTP 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 bloquante 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 continue de les envoyer, mais aucun nouveau mail ne sera accept par le spooler. Attention : Le mode asynchrone est utilisable uniquement 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.

244

Partie 6 : Communication

Partie 6 : Communication

245

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 fournisseurs de service. Ces protocoles vous permettent 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 galement tre prise en charge en utilisant le protocole IMAP. Exemple d'ouverture de session en utilisant une variable de type EmailSessionPOP3 :
// Ouverture de la session // de messagerie MaSession est un EmailSessionPOP3 MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession)

Principe d'utilisation et particularits en WinDev

2. Lire les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout, avec une boucle de la forme :
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

Principe pour un site WebDev :

2.4.2 Principe d'utilisation


Envoi de messages en utilisant le protocole SMTP. Pour envoyer des messages en utilisant le protocole SMTP, il faut : 1. Ouvrir une session SMTP : soit en utilisant une variable de type EmailSessionSMTP et la fonction EmailOuvreSession. soit en utilisant la fonction EmailOuvreSessionSMTP. 2. Construire le message envoyer dans une variable de type Email ou dans la structure Email. 3. Envoyer le message avec la fonction EmailEnvoieMessage. 4. Fermer la session SMTP avec la fonction EmailFermeSession. 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 EmailOuvreSession soit en utilisant la fonction EmailOuvreSessionPOP3.

Principe pour une application Mobile :

ou avec une boucle de la forme :


MonMessage est un Email POUR TOUT MonMessage DE MaSession // Placer ici le traitement // du message lu ... FIN

3. Fermer la session POP3 avec la fonction EmailFermeSession. Remarque : Il est possible d'ouvrir simultanment une session POP3 et une session SMTP avec la fonction EmailOuvreSession.

246

Partie 6 : Communication

Partie 6 : Communication

247

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 messagerie supportent la fois le protocole IMAP et le protocole POP3. avec une boucle de la forme :.
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

l'application de gestion des emails (MS Exchange 4 par exemple) grce la fonction EmailOuvreSession. 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.5.2 Utilisation du protocole IMAP


Pour recevoir des emails en utilisant le protocole IMAP : 1. Ouvrez une session IMAP en utilisant une variable de type EmailSessionIMAP et la fonction EmailOuvreSession. Exemple d'ouverture de session en utilisant une variable de type EmailSessionIMAP :.
// Ouverture de la session ... // de messagerie MaSession est un EmailSessionIMAP MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession)

2.6.2 tape 1 : Crer un profil utilisateur


Le profil utilisateur permet de configurer l'application 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 utiliss. Pour utiliser les fonctions "email" du WLangage, 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 Server". 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 ralise grce la fonction EmailOuvreSession. Cette fonction doit tre la premire fonction "email" utilise dans votre application WinDev (ou votre site WebDev). La fonction EmailOuvreSession renvoie l'identifiant de la session. Cet identifiant sera utilis dans toutes les fonctions de gestion des emails du WLangage. 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'identifier l'erreur survenue.
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

ou avec une boucle de la forme (les mots-cls "NON LU" sont optionnels et permettent de parcourir uniquement les messages non lus ou bien tous les messages) :.
MonMessage est un Email POUR TOUT MonMessage NON LU DE ... MaSession // Placer ici le traitement // du message lu ... FIN

2. Lisez les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout,

3. Fermez la session IMAP avec la fonction EmailFermeSession.

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 applications 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 utilisateur". 248 Partie 6 : Communication Grce aux fonctions email du WLangage, une application ou un site peut manipuler directement les emails grs dans une application ou un site utilisant "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 Microsoft de gestion des emails (MS Exchange par exemple). 2. Se connecter depuis l'application ou le site

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'application de gestion des emails (bote d'envoi de MS Exchange 4 par exemple). Partie 6 : Communication 249

EmailMiseAJour : cette fonction permet de synchroniser 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.
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

aux fonctions de lecture des emails (EmailLitPremier, EmailLitSuivant, etc.) : ces fonctions permettent 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 session. Dans cet exemple, les messages reus sont supprims de la bote de rception et du serveur d'emails par la fonction EmailSupprimeMessage.
// 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

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 ralise avec la fonction EmailFermeSession. Cette fonction doit tre la dernire fonction "email" utilise.

Exemple : Le code suivant est une procdure permettant de fermer une session de messagerie. Dans ce code, la variable NumSession correspond l'identifiant de session renvoy par la fonction EmailOuvreSession..
Procedure FermetureSession(... NumSession) // Fermeture de la session EmailFermeSession(NumSession)

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 gnralement). 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 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 "Compte utilisateur". Grce aux fonctions email du WLangage, une application 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 ralises : soit via la structure email (conserve par compatibilit) 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 : 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- Ajoute un fichier en attachement d'un email. ch EmailCherchePremierNo- Recherche un ou plusieurs emails selon des critres spcifis, dans une base tes 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

2.6.5 tape 3bis : Lecture des emails


La lecture d'emails par Simple MAPI est ralise grce : la fonction EmailMiseAJour : cette fonction permet de synchroniser le serveur d'emails et le logiciel 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.

250

Partie 6 : Communication

Partie 6 : Communication

251

EmailFermeSession EmailImporteHTML EmailImporteSource EmailJauge EmailLanceAppli EmailLitDernier EmailLitEntteDernier EmailLitEntteMessage EmailLitEnttePrcdent EmailLitEnttePremier EmailLitEntteSuivant EmailLitMessage EmailLitPrcdent EmailLitPremier EmailLitSuivant EmailLitTimeOut EmailMiseAJour

EmailMsgErreur EmailNbMessage EmailOuvreMessagerie EmailOuvreSession EmailOuvreSessionPOP3 EmailOuvreSessionSMTP EmailRaz EmailSauveFichierAttach 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

Ferme la session POP3 Permet d'envoyer simplement un mail au format HTML avec des images inclues Replit les diffrentes variables de la structure email partir du contenu de la variable Email.Source. Gre une jauge de progression pour l'envoi et la rception d'emails Lance l'application native d'envoi d'emails de l'appareil Android Lit le dernier message en attente sur le serveur Lit len-tte du dernier message en attente sur le serveur (protocole POP3 uniquement) Lit len-tte dun message identifi par son numro (protocole POP3 uniquement) Lit len-tte du message prcdent en attente (protocole POP3 uniquement) Lit len-tte du premier message (protocole POP3 uniquement) Lit len-tte du message suivant (protocole POP3 uniquement) Lit un message identifi par son numro Lit le message prcdent en attente Lit le premier message Lit le message suivant Lit la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et POP3 Envoie les messages vers le serveur d'email Internet et reoit les messages en attente sur le serveur Internet Retourne le message correspondant l'identifiant de l'erreur Permet de connatre le nombre de messages actuellement sur le serveur Ouvre le logiciel de messagerie par dfaut de l'internaute sur le poste navigateur Ouvre une session de gestion des emails Ouvre une session de lecture demails avec le protocole POP3 Ouvre une session denvoi demails avec le protocole SMTP Re-initialise les variables de la structure email Copie les fichiers attachs au mail sur le poste local

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 contenant les contacts et les groupes de contacts. Plusieurs bases de donnes contenant des documents. 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. 4. Changement de la base Lotus Notes utiliser : fonctions NotesFermeBase et NotesOuvreBase. 5. Fermeture de la connexion avec le serveur Domino : fonction FermeSession ou EmailFermeSession.

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.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 indiquant l'identifiant de la connexion et la base locale ou distante Lotus Notes utiliser).

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

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 FermeSession ou EmailFermeSession.

252

Partie 6 : Communication

Partie 6 : Communication

253

3.2.3 Envoi et rception des emails


Pour envoyer et recevoir les emails, il est ncessaire 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 minutes voulu. Envoi et rception manuels : Cliquez sur le bouton "Envoyer / Recevoir".

Attention : Sous Outlook Express, il est possible uniquement d'accder aux emails. Dans ce cas, utilisez 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)

EmailOuvreSessionNotes Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Lotus Notes (emails, contacts, groupes de contacts, tches, rendez-vous). Rinitialise les variables de la structure email. EmailRaz EmailSupprimeMessage Supprime un message. Ferme la session. FermeSession Vrifie la validit d'une adresse email. EmailVrifieAdresse Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.2 Fonctions emails pour Outlook


Ajoute un dossier dans le logiciel de messagerie Outlook Modifie le dossier en cours dans le logiciel de messagerie Outlook Recherche un ou plusieurs emails selon des critres spcifis dans le logiciel de messagerie Outlook Gnre le code source de l'email envoyer partir des variables actuellement EmailConstruitSource prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. Renvoie le nom du dossier en cours dans le logiciel de messagerie Outlook EmailDossierCourant Permet d'envoyer un message EmailEnvoieMessage Ferme la session EmailFermeSession Remplit les diffrentes variables de la structure email partir du contenu de la EmailImporteSource variable Email.Source. Permet d'envoyer simplement un mail au format HTML avec des images inclues EmailImporteHTML Renvoie la liste des dossiers prsents dans le logiciel de messagerie Outlook EmailListeDossier Lit le dernier email reu EmailLitDernier Lit l'en-tte du dernier email reu EmailLitEntteDernier EmailLitEntteMessage Lit l'en-tte d'un email reu EmailLitEnttePrcdent Lit l'en-tte de l'email prcdant l'email en cours Lit l'en-tte du premier email reu EmailLitEnttePremier Lit l'en-tte de l'email suivant l'email en cours EmailLitEntteSuivant Lit un email reu EmailLitMessage Lit l'email prcdent l'email en cours EmailLitPrcdent Lit le premier email reu EmailLitPremier Lit l'email reu suivant l'email en cours EmailLitSuivant Renvoie le nombre de messages reus actuellement prsents EmailNbMessage EmailOuvreSessionOut- Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Outlook look EmailSauveFichierAttach Copie les fichiers attachs au mail sur le poste local Supprime un dossier dans le logiciel de messagerie Outlook EmailSupprimeDossier EmailSupprimeMessage Supprime un message Vrifie la validit d'une adresse email. EmailVrifieAdresse Ferme la session FermeSession Liste les profils Outlook disponibles. OutlookListeProfil EmailAjouteDossier EmailChangeDossier EmailCherchePremier

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 possible d'y accder dans cette version de Outlook.

3.3 Fonctions Lotus Notes et Outlook


3.3.1 Fonctions emails pour Lotus Notes
EmailCherchePremierNo- Recherche un ou plusieurs emails selon des critres spcifis, dans une base locale ou distante Lotus Notes ou Domino. tes Gnre le code source de l'email envoyer partir des variables actuellement EmailConstruitSource prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. Permet d'envoyer un message. EmailEnvoieMessage Ferme la session. EmailFermeSession Remplit les diffrentes variables de la structure email partir du contenu de la EmailImporteSource variable Email.Source. Gre une jauge de progression pour l'envoi et la rception d'emails. EmailJauge Lit le dernier email reu. EmailLitDernier Lit l'en-tte du dernier email reu. EmailLitEntteDernier 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. Lit l'email reu suivant l'email en cours. EmailLitEntteSuivant Lit un email reu. EmailLitMessage Lit l'email prcdent l'email en cours. EmailLitPrcdent Lit le premier message. EmailLitPremier Lit le message suivant. EmailLitSuivant 254 Partie 6 : Communication

Partie 6 : Communication

255

OutlookOuvreSession OutlookProfilDfaut

Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Outlook (emails, contacts, groupes de contacts, tches, rendez-vous et dossiers). Rcupre le profil dfini par dfaut dans Outlook

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 : Ouvre la fiche d'un contact dans l'application native de gestion des contacts de l'appareil (tlphone Android). Ajoute un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactAjoute Recherche un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou OutContactCherche look Affiche la fentre de cration de contact de l'application native de gestion des contacts ContactCre de l'appareil (tlphone Android) Lit le dernier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ContactDernier ou Outlook Ouvre en dition la fiche d'un contact en cours dans l'application native de gestion des ContactEdite contacts de l'appareil (tlphone Android) Lit un contact prcdemment lu, prsent dans le carnet d'adresses d'une messagerie ContactLit Lotus Notes ou Outlook Modifie le contact en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou ContactModifie Outlook ContactPrcdent Lit le contact prcdent le contact en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le premier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ContactPremier ou Outlook Rinitialise la structure Contact ContactRAZ ContactSlectionne Affiche la liste des contacts de l'appareil (tlphone Android) Lit le contact suivant du contact en cours, dans le carnet d'adresses d'une messagerie ContactSuivant Lotus Notes ou Outlook ContactSupprime Supprime le contact en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactAffiche Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.3 Fonctions Tche


Les fonctions de gestion des tches prsentes dans la liste des tches d'une messagerie Lotus Notes ou Outlook sont les suivantes : TcheAjoute TcheDernier TcheLit Ajoute une tche dans la liste des tches d'une messagerie Lotus Notes ou Outlook Lit la dernire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook 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 Outlook 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 Outlook Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

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 : Ajoute un rendez-vous dans l'agenda d'une messagerie Lotus Notes ou Outlook Lit le dernier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook Lit un rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousLit RendezVousModifie Modifie le rendez-vous en cours dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousPrcdent Lit le rendez-vous prcdent le rendez-vous en cours, dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousPremier Lit le premier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook Rinitialise la structure RendezVous RendezVousRAZ 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 Outlook RendezVousAjoute RendezVousDernier Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 256 Partie 6 : Communication

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 : GroupeAjoute GroupeDernier GroupeLit GroupeModifie GroupePrcdent GroupePremier GroupeRAZ Ajoute un groupe de contacts dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le dernier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit un groupe de contacts prcdemment lu, prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Modifie le groupe de contacts en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le groupe de contacts prcdant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le premier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Rinitialise la structure Groupe

Partie 6 : Communication

257

GroupeSuivant GroupeSupprime

Lit le groupe de contacts suivant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Supprime le groupe de contacts en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook

4.GOOGLE
4.1 Gestion des contacts Google
4.1.1 Prsentation
Le service Google Contact permet de grer des contacts sur Internet. WinDev et WebDev permettent par exemple de raliser une application qui synchronise 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. 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.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.7 Fonctions Notes


Les fonctions de gestion des documents Notes prsents dans Lotus Notes sont les suivantes : Indique la vue manipuler dans Lotus Notes Attache un fichier un champ du document en cours dans Lotus Notes Renvoie la valeur des champs du document en cours dans Lotus Notes Dsactive la vue en cours de manipulation dans Lotus Notes Renvoie la dimension d'un champ du document en cours dans Lotus Notes Recherche un document dans Lotus Notes Positionne sur le dernier document prsent dans Lotus Notes Positionne sur le document prcdant le document en cours dans Lotus Notes Positionne sur le premier document prsent dans Lotus Notes Positionne sur le document suivant le document en cours dans Lotus Notes Supprime le document en cours de la base Lotus Notes Permet de savoir s'il y a un document en cours dans Lotus Notes Enregistre le document en cours dans Lotus Notes Extrait un fichier attach un champ du document en cours dans Lotus Notes Ferme la base locale ou distante Lotus Notes ou Domino utilise Renvoie la liste des champs du document en cours dans Lotus Notes Renvoie la liste des fichiers attachs un champ du document en cours dans Lotus Notes Renvoie la liste des vues prsentes dans la base Lotus Notes en cours NotesListeVue Modifie le champ spcifi du document en cours dans Lotus Notes NotesModifieChamp NotesModifieFichierAttach Modifie un fichier attach un champ du document en cours dans Lotus Notes Renvoie le nombre de fichiers attachs un champ du document en cours NotesNbFichierAttach dans Lotus Notes Permet d'accder aux documents grs par Lotus Notes NotesOuvreBase Ouvre une connexion avec une base locale ou distante Lotus Notes ou Domino NotesOuvreConnexion Cre un document vide dans Lotus Notes NotesRAZ Supprime le champ spcifi du document en cours dans Lotus Notes NotesSupprimeChamp NotesSupprimeFichierAtta- Supprime un fichier attach d'un champ du document en cours dans Lotus Notes ch Recherche le dernier document prsent dans la vue en cours dans Lotus NotesVueChercheDernier Notes NotesVueCherchePremier Recherche le premier document prsent dans la vue en cours dans Lotus Notes Liste les colonnes prsentes dans la vue en cours dans Lotus Notes NotesVueListeColonne Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. NotesActiveVue NotesAjouteFichierAttach NotesChamp NotesDsactiveVue NotesDimensionChamp NotesDocumentCherche NotesDocumentDernier NotesDocumentPrcdent NotesDocumentPremier NotesDocumentSuivant NotesDocumentSupprime NotesEnDehors NotesEnregistre NotesExtraitFichierAttach NotesFermeBase NotesListeChamp NotesListeFichierAttach 258 Partie 6 : Communication

4.1.3 Comment rcuprer un contact Google ?


Pour rcuprer un contact Google : 1. Dclarez un tableau de variables de type gglContact. 2. Utilisez la fonction GglListeContact. Cette fonction permet de lister les contacts. Les contacts trouvs sont affects au tableau de variables de type gglContact. Exemple :
// 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

4.1.2 Comment grer les contacts Google ?


Pour grer les contacts Google : 1. Crez si ncessaire un compte Google. La cration 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 contient 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.

4.1.4 Comment modifier ou supprimer des contacts Google ?


Principe : Le principe est simple : Il est ncessaire de rechercher 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.

Partie 6 : Communication

259

Exemple :
// 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

Pour supprimer un contact : 1. Rcuprez la liste des contacts. 2. Recherchez le contact supprimer. 3. Supprimez le contact grce la fonction GglSupprime. Exemple :
// 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

4.2.2 Comment grer un agenda Google ?


Pour grer un agenda Google : 1. Crez si ncessaire un compte Google. La cration 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 contient 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 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.

Exemple :
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

4.1.5 Fonctions de gestion des contacts Google


Les fonctions suivantes permettent de grer des contacts par le service "Google Contacts" : Cre ou met jour un contact ou un groupe de contacts. GglEcrit Rcupre la liste des contacts associs au compte Google spcifi. GglListeContact Rcupre une liste de contacts partir de paramtres personnaliss. GglListeContactParRequte GglListeGroupeContact GglRequte GglSupprime Rcupre la liste des groupes de contacts associs au compte Google spcifi. Effectue une requte de communication (requte HTTP) un service Google. Supprime un contact ou un groupe de contacts.

2me mthode : rcupration d'un agenda spcifique. 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 :
// 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

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

4.2.3 Comment rcuprer un agenda Google et ses lments ?


1re mthode : rcupration de la liste des agendas puis de leurs vnements. Pour rcuprer un agenda Google partir de la liste des agendas : 1. Dclarez un tableau de variables de type gglAgenda (pour rcuprer plusieurs agendas). 2. Utilisez la fonction GglListeAgenda. Cette fonction permet de lister les agendas disponibles. Les agendas trouvs sont affects au tableau de variables de type gglAgenda. 3. Utilisez la fonction GglRemplitAgenda pour rcuprer les vnements. Il est possible de rcuprer les vnements d'un seul ou de plusieurs agendas. Il est possible de filtrer les vnements rcuprer (par exemple entre deux dates).

4.2 Gestion des agendas Google


4.2.1 Prsentation
Le service Agenda Google Calendar est une application Internet fournie par Google qui permet de grer un agenda sur Internet. WinDev et WebDev permettent par exemple de raliser une application de synchronisation de planning 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 traitements 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.

4.2.4 Comment ajouter, modifier ou supprimer des vnements dans un agenda Google ?
Principe : Le principe de la modification des vnements est simple : l'agenda est rcupr en local, les modifications 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 agendas sur le serveur

260

Partie 6 : Communication

Partie 6 : Communication

261

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 :
// 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])

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 Google. 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.
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)

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 :
// 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)

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, utilisez une variable de type gglPhoto pour dcrire les caractristiques de la photo. Il est galement possible de dcrire les tags et les commentaires associs 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

4.2.5 Fonctions de gestion des agendas Google


Les fonctions suivantes permettent de grer des agendas par le service Agenda Google Calendar : Cre ou met jour un agenda. GglEcrit Rcupre la liste des agendas Google associs au compte Google spcifi. GglListeAgenda 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- Remplit un agenda prcdemment rcupr : les vnements correspondant l'agenda sont rcuprs partir d'une requte personnalise. ParRequte GglRequte GglSupprime Effectue une requte de communication (requte HTTP) un service Google. Supprime un agenda.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 262 Partie 6 : Communication

Partie 6 : Communication

263

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

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). Diffrentes 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 GglRemplitPhoto. Diffrentes options permettent de spcifier 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 serveur Google. 4. Pour modifier une photo de l'album : modifiez les caractristiques de la photo dans l'album (grce une variable gglPhoto si ncessaire). 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 format PNG depuis une application WinDev Mobile. Les fonctions Google Picasa utilisent les API fournies par Google. Certaines fonctionnalits peuvent fonctionner sur le service en ligne et tre temporairement bloques via les API par Google.

4.4 Gestion des documents Google


4.4.1 Prsentation
Google Docs et Google Spreadsheet sont respectivement le traitement de texte et le tableur en ligne proposs par Google. WinDev et WebDev permettent de grer directement 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. 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 contient les caractristiques de la connexion votre compte Google. 3. Pour grer les documents prsents sur le serveur Google, utilisez une des fonctions suivantes : GglEnvoieDocument Envoie un document sur le serveur Google. GglListeDocument Rcupre la liste des documents disponibles sur le serveur Google pour l'utilisateur en cours GglRcupreDocu- Tlcharge un document depuis le service Google ment Docs. Supprime un document GglSupprime Google du serveur 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, WinDev Mobile), consultez laide en ligne.

4.3.3 Fonctions de gestion des albums Picasa


Les fonctions suivantes permettent de grer des albums de photos Google Picasa : Cre ou met jour un album ou une photo Google Picasa. GglEcrit Rcupre la liste des albums "Google Picasa" disponibles pour l'utilisateur. GglListealbum GglListeCommentaire Rcupre : la liste des commentaires enregistrs pour le compte client Google. la liste des commentaires associs une photo d'un album Google Picasa. Liste les photos des albums Google Picasa correspondant certains critres. GglListePhoto Rcupre : GglListeTag 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 Rcupre un album Google Picasa. GglRcupreAlbum Rcupre dans un album Google Picasa, les donnes correspondantes aux options GglRemplitAlbum demandes. Rcupre dans un album Google Picasa, les donnes sur les photos correspondanGglRemplitPhoto tes aux options demandes. Supprime un album ou une photo Google Picasa. GglSupprimer Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 264 Partie 6 : Communication

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 cration de ce compte peut tre ralise grce

4.5 Utiliser le service de cartographie Google Maps


4.5.1 Prsentation
Le service de cartographie Google Maps est un logiciel de cartographie Internet propos par Google. Il permet d'afficher un plan en offrant de nombreuses 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 rcupr lors d'un parcours avec un GPS qui enregistre 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. Partie 6 : Communication 265

4.5.2 Comment le faire ?


Rcuprer une carte dans vos applications ou sites Pour intgrer une carte utilisant le service de cartographie 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 modifie 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 voulue. 3. Dans le code permettant de rcuprer la carte, affectez le rsultat de la fonction GglRcupreCarte 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 service 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 format GIF et n'a pas de marqueurs. La langue affiche 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 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. 2. Dans votre projet WinDev ou WebDev, crez un champ Image. Ce champ va afficher la carte voulue. 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 GglRcupreCarte au champ Image. Dans le paramtre <Paramtres avancs>, indiquez le nom de la variable gglParamtreCarte contenant les options voulues. 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 conseill 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.

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 particuliers 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 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.

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 ralise grce la fonction SFConnecte et une variable 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, contact 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.

4.5.3 Autres Services


Le service Google Maps permet galement d'obtenir 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 gglCoordonne.

4.5.4 Fonctions de gestion des cartes Google


Les fonctions suivantes permettent de grer des cartes par le service de cartographie "Google Maps" : GglAdresseVers- Rcupre les coordonnes (couple latitude/longitude) d'une Coordones adresse. GglRcupre- Rcupre la carte d'un lieu prcis par le service de cartographie Carte Google Maps. Effectue une requte de commuGglRequte nication (requte HTTP) un service Google. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

5.2 Fonctions Salesforce


Les fonctions de gestion des bases de donnes Salesforce sont les suivantes : SFAjoute SFAvanceRequte SFConnecte SFConvertitPiste SFDconnecte SFExcuteRequte Cre un enregistrement dans un fichier d'une base de donnes Salesforce. Continue d'excuter une requte SOQL (Salesforce Object Query Language) sur les enregistrements d'une base de donnes Salesforce Permet de s'authentifier auprs de la plate-forme Salesforce. Convertit des pistes (galement appeles LEAD). Ces pistes peuvent tre converties en compte, en contact ou en opportunit. Dconnecte la plate-forme Salesforce, la session Salesforce en cours ou les sessions Salesforce spcifies. Excute une requte SOQL (Salesforce Object Query Language) sur une base de donnes Salesforce.

266

Partie 6 : Communication

Partie 6 : Communication

267

SFExcuteTraiement SFFusionne SFLit SFModifie SFRecherche SFRechercheModifi SFRechercheSupprim SFRestaure SFSupprime SFVideCorbeille

Demande l'excution d'un traitement spcifique. Il est possible de soumettre des enregistrements au processus d'approbation ou d'effectuer une action d'approbation. Fusionne des enregistrements Salesforce (appels galement objets Salesforce). Rcupre des enregistrements Salesforce partir de leurs identifiants. Modifie les enregistrements d'un fichier dfini dans Salesforce. Effectue une recherche parmi les enregistrements d'une base de donnes Salesforce. La recherche est effectue grce au langage SOSL (Salesforce Object Search Language). Recherche et rcupre les enregistrements (objets Salesforce) modifis pendant la priode spcifie. Recherche et rcupre les enregistrements (objets Salesforce) supprims pendant la priode spcifie. Restaure des enregistrements Salesforce prcdemment supprims. Supprime des enregistrements d'une base de donnes Salesforce. Vide les enregistrements spcifis de la corbeille Salesforce.

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 (produire) 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 plusieurs 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 concernant le flux RSS manipuler. 2. Chargez le flux RSS grce la fonction rssInitialise. La variable de type flux RSS est initialise avec le flux spcifi.
MonRSS est un rssFlux MonRSS = rssInitialise(... "http://blogs.webdev.info/ rss.awp?blog=supporttechnique",... depuisURL)

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 informations RSS sans programmation.

3. Vrifiez que le canal du flux est valide et le charger. Par exemple :


SI MonRSS.Canal..Occurrence >= 1 ALORS MonCanal est un rssCanal MonCanal = MonFluxRSS.Canal[1]

... 6.3 Fonctions de gestion des flux RSS


Les fonctions de gestion des flux RSS sont les suivantes : Construit un flux RSS et affiche directement le rsultat sur le navigateur de l'interrssAffiche naute. rssConstruitChane Construit le flux RSS et renvoie le rsultat au format XML dans une chane de caractres. Charge en mmoire un flux RSS. rssInitialise Construit le flux RSS et sauvegarde le flux RSS dans un fichier XML. rssSauve

268

Partie 6 : Communication

Partie 6 : Communication

269

7. SERVEUR LDAP
7.1 Prsentation
Le protocole LDAP (Lightweight Directory Access Protocol) est de plus en plus utilis dans les entreprises. 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. LDAPAjouteAttribut LDAPConnecte LDAPDbutAjout LDAPDbutModification LDAPDconnecte LDAPListeAttribut LDAPListeFils LDAPMode LDAPNbValeur LDAPRAZ LDAPRecherche LDAPRemplaceAttribut LDAPRemplaceValeurAttribut LDAPRenommeAttribut Selon les informations stockes dans lannuaire LDAP, vous pouvez par exemple utiliser un annuaire LDAP pour identifier un utilisateur lors de sa connexion une application, vrifier les droits de lutilisateur sur lapplication, ...Fonctions de gestion dun serveur LDAP Les fonctions LDAP disponibles sont les suivantes :

8. WINDEV ET LA TLPHONIE
8.1 Prsentation
WinDev permet de grer simplement les appels tlphoniques entrants et sortants grce aux fonctions WLangage de tlphonie. Ces fonctions permettent par exemple de grer une bote vocale, un rpondeur, ... directement dans une application WinDev. Configuration ncessaire WinDev Pour pouvoir utiliser les fonctionnalits de la tlphonie, 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 "Notification du numro appelant" (caller Id). le protocole Tapi 2.0. Cette technologie est utilisable sur tous les systmes, cependant, il est ncessaire : si le systme utilis est Windows NT4, d'installer 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

WD WDMobile

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 tlphonie. 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 priphrique TAPI sur lequel la dtection d'appels ou la composition d'appels doit tre effectue. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI

Ajoute un attribut ou ajoute une nouvelle valeur un attribut existant. Permet de se connecter un serveur LDAP Initialise l'ajout d'un nouvel objet dans un serveur LDAP. Initialise la modification d'un objet existant dans un serveur LDAP. Permet de se dconnecter d'un serveur LDAP. Liste les attributs d'un objet d'un serveur LDAP. Liste les fils d'un objet d'un serveur LDAP. Modifie le mode de fonctionnement d'une session LDAP Renvoie le nombre de valeurs d'un attribut. R-initialise la structure LDAPSession utilise par la fonction LDAPConnecte. Lance une recherche dans un serveur LDAP. La recherche effectue est toujours rcursive. Remplace toutes les valeurs d'un attribut par une valeur donne. Remplace une valeur donne d'un attribut par une nouvelle valeur donne.

telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI. Configuration ncessaire WinDev Mobile Pour pouvoir utiliser les fonctions de tlphonie, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (type GSM). et/ou sur un smartphone.

Renomme un attribut. Lors de ce renommage, la valeur des attributs est conserve. 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.

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 excute. C'est dans cette procdure que la gestion de l'appel est ralise. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI

8.2.1 Les diffrentes tapes


Pour grer les appels entrants dans une application WinDev : 1. Dterminez si ncessaire le priphrique TAPI sur lequel la dtection d'appels doit tre effectue.

telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI.

270

Partie 6 : Communication

Partie 6 : Communication

271

2. Dmarrez la dtection d'appels entrants grce la fonction telDmarreDtectionAppel. Cette fonction 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 : telLigneOccupe La ligne est actuellement occupe Numrotation en cours La ligne reoit la tonalit

effectuer des oprations spcifiques : telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonction TelJoue) Enregistre la communication en cours sous forme d'un fichier .WAV. Joue un fichier sonore (.WAV) pour la ligne spcifie. Il est par exemple possible de jouer ainsi le message du rpondeur. Permet de simuler l'utilisation des touches du clavier tlphonique. Rpond un appel entrant (pralablement dtect)

telEnregistre

telJoue

telLigneDcroche La ligne est connecte telLigneNumrote telLigneTonalit telNumrote

telLigneRaccroche Le correspondant a raccroch telLigneAttendRponse telLigneSonnerie telNouvelAppel L'appel est compos : recherche du correspondant Sonnerie en cours chez le correspondant Nouvel appel dtect en attente de rponse ou de rejet.

telRpondAppel

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

Procdure de dtection d'appels : Cette procdure 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 PostMessage). Pour dboguer ce type de traitement, vous devez utiliser la fonction Trace.
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

telToucheEnfonce Permet de connatre l'historique des touches enfonces sur le clavier tlphonique. 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 vnements, ...). 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.

Code d'initialisation de la fentre : ce code permet de dmarrer la procdure de dtection d'appels.


// 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

telInformationAppel Les informations supplmentaires (prsentation du numro) sont disponibles. Ces informations ne sont gnralement disponibles qu'aprs la premire sonnerie. grer compltement l'appel grce aux fonctions suivantes : obtenir les caractristiques de l'appel entrant : telAppelDbut Renvoie la date et heure du dbut d'appel

telAppelEstTermin Permet de savoir si l'appel est termin telAppelFin telDureAppel Renvoie la date et heure de la fin de l'appel Renvoie la dure de l'appel

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 permettant de grer les appels dans le thread principal de l'application.
GLOBAL gnIdEvenement est un entier //Evnement pour grer //les appels entrant en popup

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 effectue. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI. 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 Partie 6 : Communication 273

telNumroAppelant Renvoie le numro de tlphone appelant

272

Partie 6 : Communication

l'appel. Dans cette procdure, il est possible de connatre l'tat de la ligne grce aux variables : telLigneOccupe La ligne est actuellement occupe Numrotation en cours La ligne reoit la tonalit

telAppelEstTermin Permet de savoir si l'appel est termin telAppelEstOccup Permet de savoir si le numro appel est occup telAppelFin telDureAppel telAppelPasDeRponse Renvoie la date et heure de la fin de l'appel Renvoie la dure de l'appel Permet de savoir si une rponse a t donne l'appel

telComposeLigne

telLigneDcroche La ligne est connecte telLigneNumrote telLigneTonalit

telLigneRaccroche Le correspondant a raccroch telLigneAttendRponse telLigneSonnerie L'appel est compos : recherche du correspondant Sonnerie en cours chez le correspondant

telNumroAppelant Renvoie le numro de tlphone appelant telNumroAppel Renvoie le numro de tlphone appel Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue) Enregistre la communication en cours sous forme d'un fichier .WAV. Joue un fichier sonore (.WAV) pour la ligne spcifie. Permet de simuler l'utilisation des touches du clavier tlphonique.

4. Dcrochez le combin du tlphone pour communiquer. 5. Pendant la communication, il est possible d'utiliser les fonctions WLangage permettant de manipuler 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.

effectuer des oprations spcifiques : telArrte

telEnregistre

telJoue telNumrote

Compose un numro de tlphone pour une prise de ligne vocale, en choisissant le priphrique utiliser telDmarreDtectionAppel Dmarre un service de dtection d'appel TelDialerAffiche Ouvre lapplication de tlphonie (dialer) par dfaut et affiche le numro spcifi. 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.

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 : telAppelDbut Renvoie la date et heure du dbut d'appel

telToucheEnfonce Permet de connatre l'historique des touches enfonces sur le clavier tlphonique.

8.4 Fonctions de tlphonie


Ces fonctions permettent de manipuler facilement toutes les fonctions de tlphonie d'un modem depuis une application WinDev : telAppelDbut telAppelEnAttente telAppelEstOccup telAppelEstTermin telAppelFin telAppelPasDeRponse telArrte telCapacit telCompose 274 Renvoie la date et heure du dbut d'appel Permet de savoir si l'appel est en attente Permet de savoir si le numro appel est occup Permet de savoir si l'appel est termin Renvoie la date et heure de la fin de l'appel Permet de savoir si une rponse a t donne l'appel Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue) Permet de connatre les capacits du priphrique TAPI slectionn Compose un numro de tlphone pour une prise de ligne vocale. Partie 6 : Communication 275

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, ...) correspond un message texte (160 caractres maximum) envoy sur un tlphone portable.

WDMobile

9.2.3 Lecture et suppression de SMS sur un Smartphone


Pour lire et/ou supprimer les SMS sur un Smartphone (fonctions SMSNbMessage, SMSPremier, SMSSuivant ou SMSSupprime), l'excutable de l'application WinDev Mobile et son framework (librairies WinDev Mobile) doivent tre signs lectroniquement. Pour raliser cette opration, il est ncessaire d'acqurir un certificat. Remarque : L'utilisation des fonctions SMSEnvoie et SMSRaz ne ncessite aucune signature spcifique.

9.2.4 Diffrents types de numros


Deux types de numros peuvent tre utiliss pour envoyer des SMS : Les numros courts (galement appels "Nationaux"). Ces numros sont accessibles uniquement 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.

Configuration ncessaire Pour pouvoir utiliser les fonctions SMS, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (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.5 Fonctionnement diffrent en mode GO et en utilisation relle


En mode GO (simulation sur le poste de dveloppement), une erreur WLangage est gnre lors de l'utilisation d'une des variables de la structure SMS.

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 variables de la structure SMS, utilisez la fonction SMSRAZ. Numro Chane de caractres contenant le numro du correspondant ou de lexpditeur. Chane de caractres contenant le prfixe national (33 par dfaut correspondant 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 spcifi, utilisez directement un numro au format international. Par exemple, 33612345678. Indique le type de numro utilis : smsNumroInternational (valeur par dfaut) : ces numros sont accessibles de partout et sont de la forme 06.xx.xx.xx.xx. smsNumroNational : numro court, accessible uniquement depuis le territoire national.

9.3 Fonctions WLangage


Ces fonctions permettent d'envoyer facilement des SMS : SMSEnvoie SMSNbMessage SMSPremier SMSRAZ SMSSuivant SMSSupprime Envoie un SMS Renvoie le nombre de SMS reus ou le nombre maximal de SMS pouvant tre reus Positionne sur le premier SMS reu R-initialise toutes les variables de la structure SMS Positionne sur le suivant SMS reu Supprime le SMS spcifi

PrfixeNational

9.2.2 Les diffrentes variables de la structure SMS


La structure est compose des membres suivants : DateRception Date et heure de rception du SMS Remarque : Sur Pocket PC 2002, ce membre contient la date et lheure de lecture du SMS. Boolen (Vrai par dfaut) Indique si le message doit tre rgulirement envoy en cas de non-rception. Entier correspondant lindice du SMS reu. Chane de caractres contenant le message envoyer ou reu (160 caractres maximum). TypeNumro

Pour plus de dtails sur ces fonctions, consultez laide en ligne.

Essai

Indice Message

276

Partie 6 : Communication

Partie 6 : Communication

277

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 Windows 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 doivent tre envoys. 2. Crer l'application ou le site d'envoi de fax.

WD WebDev

10.3 Application ou site d'envoi de fax


10.3.1 Envoyer un fax depuis une application ou un site
suffit de dconnecter l'application ou le site du serveur de fax avec la fonction FaxDconnecte.

3. Configurer si ncessaire par programmation les diffrentes options de configuration du serveur de fax. Remarques : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax. Sous Windows Vista, la gestion des fax est disponible uniquement avec Windows Vista Professionnel 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. 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 cliquez 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 application ou un site. 7. Validez. Remarque : Pour crer un fichier de couverture (.Cov), utilisez l'onglet "Page de garde".

WB Attention : Les manipulations suivan-

tes ne s'appliquent que sur le poste serveur utilis pour envoyer des fax (et non sur les postes des navigateurs).

1. Vrifier la configuration du modem Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de configuration") et slectionnez l'option "Modem et tlphonie". 2. Installer un serveur de fax standard Windows version XP et 2000 est livr avec un serveur 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 Windows est en mode rception.

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 "Couverture"). 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 serveur 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 procdure WLangage. Cette procdure sera appele chaque modification de l'tat du fax dans le serveur 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'diteur d'tats. Dans ce cas, il est possible de donner 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 diffrents 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

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.
// Envoie l'tat "FactureCli" // par fax iDestination(iFax,"0006050402") iImprimeEtat(FactureCli)

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'identifiant de cette connexion. Cet identifiant peut tre utilis avec les fonctions Fax pour suivre l'volution de l'envoi du fax.
// Envoie l'tat "FactureCli" // par fax IdConnect est un entier IdConnect = FaxConnecte() IdConnect = iDestination(... iFax,"0006050402",... "MonFax",IdConnect) ... iImprimeEtat(FactureCli)

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".

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 registres. Il est possible de paramtrer et d'obtenir : des informations concernant l'envoi de fax (Windows 2000). La cl de registre correspondante est HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\Fax Nombre d'essais Retries Nombre de minutes entre Retry Delay deux tentatives Nombre de jours avant Dirty Days suppression des tlcopies non envoyes Archiver les tlcopies ArchiveOutgoingFax sortantes Rpertoire des tlcopies ArchiveDirectory sortantes

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 confi278 Partie 6 : Communication

Partie 6 : Communication

279

Impression de la ban- Branding nire du haut Interdire les pages de ServerCoverPageOnly garde personnel Heure de dbut de la StartCheapTime priode de tarif rduit Heure de fin de la priode StopCheapTime de tarif rduit des informations concernant l'expditeur du fax (Windows 2000) : La cl de registres correspondante est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\F ax\UserInfo : Numro de fax expditeur FaxNumber Adresse Messagerie Socit Titre Nom complet Service Adresse professionnelle Tlphone personnel Tlphone professionnel Mailbox Company Title FullName Department Office HomePhone OfficePhone

Moniteur d'tat toujours AlwaysOnTop Dessus Avertissement sonore Code de facturation SoundNotification BillingCode

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 classique ou sur une URL protge. 2. Rcuprer le rsultat de la requte avec la fonction HTTPDonneRsultat. Grce ces fonctions, il est possible de rcuprer : le contenu complet dune page HTML, des fichiers de donnes, des images, ...

10.4.2 Astuces
Pour raliser un serveur de fax et grer les rexpditions 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 automatiquement car l'option "Pas de re-tentative d'expdition des fax" est vrai).

11.2 Fonctions HTTP


Les fonctions permettant de grer les requtes HTTP sont les suivantes : HTTPAjouteFichier HTTPAjouteParamtre HTTPAnnuleFormulaire HTTPCertificat HTTPCookieEcrit HTTPCookieGre HTTPCookieLit HTTPCookieRAZ Ajoute un fichier dans un formulaire HTTP. Ajoute un paramtre dans un formulaire HTTP. Annule une dclaration de formulaire HTTP et libre toutes ses ressources.

Affiche le moniteur d'tat VisualNotification en envoi ET rception

10.5 Fonctions de gestion des fax


Ces fonctions permettent d'envoyer des fax depuis une application ou un site : FaxBoteEnvoi FaxBoteRception FaxConnecte FaxDeconnecte FaxEnvoie FaxEtat FaxRinitialise FaxReprend FaxSupprime FaxSuspend numre les fax en attente ou en cours d'envoi numre les fax en attente ou en cours de rception Ouvre une connexion un serveur de fax Ferme la connexion un serveur de fax Envoie un fax Renvoie l'tat du fax spcifi Redmarre un fax dans la file d'attente R-active un fax mis en pause dans la file d'attente Supprime un fax de la file d'attente et annule son envoi 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. Remarque : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax. 280 Partie 6 : Communication

Modifie le certificat client utilis par dfaut pour s'identifier sur un serveur. Ajoute ou modifie un cookie. Active/dsactive la gestion des cookies lors des appels de la fonction HTTPRequete Retourne la valeur d'un cookie reu suite une requte HTTP. 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 HTTPRequte. 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) HTTPEnvoieFormuEnvoie un formulaire HTTP. laire 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. Partie 6 : Communication 281

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 ncessitent l'utilisation d'un serveur FTP / RPC spcifique ralis avec WinDev le FTP standard. Ce protocole ncessite l'utilisation 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

WD

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 serveur FTP ou RPC WinDev. Transmettre une chane de caractres un serveur FTP ou RPC WinDev.

12.1.1 Envoyer et recevoir des fichiers par FTP ou RPC WinDev : les rgles suivre
Pour envoyer et recevoir des fichiers, il faut respecter 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

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

12.2.3 tape 3 : Rcupration d'un fichier depuis un serveur FTP WinDev


La fonction NetRcupreFichier permet de rcuprer 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 NetListeRep.
-- 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

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 fonction NetDeconncete. Le code de dconnexion doit se trouver aprs la dernire instruction "Net". La variable "NumConnexion", ncessaire la dconnexion, contient la valeur retourne par NetConnecte. Le code pour se dconnecter d'un serveur RPC WinDev est le suivant :
//Dconnexion un serveur //RPC WinDev //NumConnexion contient la valeur //retourne par NetConnecte NetDeconnecte(NumConnexion)

12.2 Utilisation dtaille du FTP / RPC WinDev


12.2.1 tape 1 : Etablissement d'une connexion avec un serveur RPC / FTP WinDev
Pour transfrer des fichiers, il est ncessaire d'tablir une connexion avec un serveur RPC ou FTP WinDev. L'tablissement de la connexion est ralis avec la fonction NetConnecte. Le code d'tablissement 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 :
Fonction ConnexionRPC (Adresse,... Utilisateur, Motdepasse) //Connexion un serveur RPC NumConnexion est un entier NumConnexion = NetConnecte(... Adresse, ServeurRPC, ... Utilisateur, Motdepasse) Renvoyer NumConnexion

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 progression du transfert.
- - 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 ...

282

Partie 6 : Communication

Partie 6 : Communication

283

12.3 Fonctions Net


Les fonctions permettant de grer les communications FTP/RPC WinDev sont les suivantes : NetAdresseIP NetAdresseMAC NetConnecte Renvoie l'adresse IP (Internet Protocol) d'un poste Renvoie l'adresse MAC de l'une des cartes rseau de la machine. 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) ralis 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 Protocol) 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 Protocol) 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.

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 distant. 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 proposent des logiciels shareware ou freeware, accessibles au public. Des fonctions WLangage vous permettent de grer des fichiers sur un serveur FTP depuis vos applications ou depuis vos sites. 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 manipulation de fichiers sur le serveur. Il est galement possible de : obtenir les caractristiques sur des fichiers prsents 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.

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 Internet 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 "utilisateur 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 nonanonyme et un mot de passe.

3. Fermeture de la connexion avec le serveur (fonction FTPDconnecte).

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 FTPConnecte).

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 considr comme un chemin absolu : il s'agit du chemin 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. Partie 6 : Communication 285

284

Partie 6 : Communication

Ce rpertoire en cours peut-tre connu ou modifi avec la fonction FTPRepEnCours. Lors de la connexion un site FTP, le rpertoire initial (le "home directory" de l'utilisateur) n'est pas forcment la racine du serveur FTP. Il est donc conseill 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 serveur 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, ...).

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 connecte 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'application 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'application WinDev est un serveur, changeant des informations par sockets avec plusieurs postes client quelconques. Pour plus de dtails, consultez le paragraphe Serveur de socket standard, page 289.

13.2 Fonctions FTP


Les fonctions permettant de grer le FTP (File Transfer Protocol) sont les suivantes : FTPAttribut FTPCommande FTPConnecte FTPDate Identifie les attributs d'un fichier prsent sur un serveur FTP (File Transfer Protocol) Envoie une commande FTP spcifique un serveur Connecte le poste en cours un serveur FTP (File Transfer Protocol) 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 Protocol) 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 Protocol) 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.

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. La socket est identifie par son port et par une adresse.

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 fonction permet d'effectuer une demande de connexion au serveur.

Etape 2 : change de donnes Lorsque deux postes ont connect leur socket, un flux 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.

286

Partie 6 : Communication

Partie 6 : Communication

287

Remarque : Pour ne pas bloquer les applications ou les sites, 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 du poste serveur, l'application cliente WinDev ou le site client WebDev doit utiliser les fonctions SocketLit et SocketEcrit.

Remarque : il est galement possible de terminer la communication depuis le poste serveur.

La connexion est tablie au premier succs de la fonction SocketLit sur le serveur.

14.2.2 Mode de transmission des informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. Plusieurs mthodes sont disponibles pour dterminer la longueur du message lors de la communication 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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet de modifier le mode de transmission utilis.

Etape 3 : Fermeture de la socket Pour terminer la communication, le serveur peut fermer la socket avec la fonction SocketFerme.

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.

Etape 2 : change de donnes Lorsque deux postes utilisent la mme socket, un flux 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. 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 SocketEcrit.

Remarque : la socket peut aussi tre ferme par le poste client.

14.3.2 Mode de transmission des informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. WinDev propose plusieurs mthodes pour dterminer la longueur du message lors de la communication 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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet 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 communiquer avec un seul poste client simultanment. Ce type d'application est trs utile lorsque deux applications distantes ont besoin de communiquer. Remarque : WinDev offre galement la possibilit de crer un serveur de sockets plus labor (serveur de sockets standard), grant la connexion de plusieurs postes client simultanment. Pour plus de dtails, consultez le paragraphe Serveur de socket standard, page 289.

WD WDMobile

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 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 (fonction SocketClientInfo), et lui envoie une rponse.

14.3.1 Le serveur simplifi


Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonction 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 socket 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'informations par le poste serveur).

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.

WD 14.4.1 Le serveur de socket standard


Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonction SocketCre. Une socket est associe un port spcifique. Il est possible de crer plusieurs sockets, chaque socket utilisant un numro de port spcifique. A chaque socket est associ un nom (permettant de manipuler la socket par programmation) et un numro de port. Partie 6 : Communication 289

288

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 SocketAttendConnexion dans un thread spcifique. Cette fonction 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 communication spcifique est cr. 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). soit de refuser la connexion (fonction SocketRefuse). 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 ralise dans un thread spcifique. Il y a un thread excut par connexion. Chaque thread utilise la mme fonction de service "ProcdureGestion". Pour autoriser l'excution de la procdure 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).
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

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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet de modifier le mode de transmission utilis.

14.5 Fonctions Socket


Les fonctions permettant de grer les sockets sont les suivantes : SocketAccepte SocketAttendConnexion SocketChangeModeTransmission SocketClientInfo SocketConnecte SocketConnecteBluetooth SocketConnecteInfraRouge SocketConnecteSSL SocketCre SocketCreBluetooth SocketCreInfraRouge SocketCreSSL SocketCreUDP SocketEcrit SocketExiste SocketFerme SocketLit SocketRefuse Accepte la connexion d'un poste client sur le poste serveur Teste si une demande de connexion a t effectue par un poste client Change le mode de transmission utilis sur une socket Permet un poste serveur de rcuprer des informations concernant une socket connecte sur un poste client Permet de se connecter une socket donne Connecte un poste client une socket Bluetooth spcifique. Connecte un poste client une socket donne, via le port infrarouge Connecte un poste client un serveur SSL. Cr une socket Cre une socket Bluetooth. Cre une socket utilisant le port infrarouge Cre une socket SSL. Cre une socket utilisant le protocole UDP Transmet un message entre deux sockets Teste l'existence d'une socket Ferme une socket ou ferme une connexion une socket sur le poste serveur Rcupre un message envoy par une socket Refuse la connexion demande par un poste client

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 SocketEcrit. 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 informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. WinDev propose plusieurs mthodes pour dterminer la longueur du message lors de la communication 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.

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.

290

Partie 6 : Communication

Partie 6 : Communication

291

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 rcuprer 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.4 Les fonctions Bluetooth et OBEX


15.4.1 Fonctions Bluetooth
Les fonctions permettant de grer les appareils Bluetooth 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.

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 permettent de grer les changes de fichiers par le protocole OBEX. Les fonctions SocketConnecteBluetooth et SocketCreBluetooth 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 utilise, utilisez la fonction BTPile. Certaines fonctions WLangage ne peuvent tre utilises qu'avec certains types de piles. Ces informations 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 (Bluetooth 2.0 - USB 2.0), (*) Belkin adaptateur Bluetooth 2.0 - F8T013FR1 - Porte 10 mtres (USB 2.0), 292 Partie 6 : Communication (*) Belkin adaptateur Bluetooth 2.0 - F8T012FR1 - Porte 100 mtres (USB 2.0), TrendNet TBW-104UB - Adaptateur USB Bluetooth 2.0, (*) TrendNet TBW-102UB - Adaptateur Bluetooth Class 2 (Bluetooth 1.1), ... Cette liste non exhaustive sera actualise rgulirement. (*) 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.

15.4.2 Fonctions OBEX


Les fonctions permettant de grer les changes de fichiers par le protocole OBEX sont les suivantes : OBEXConnecte OBEXDconnecte OBEXEnvoieFichier OBEXEnvoieVCard OBEXListeFichier OBEXRcupreFichier OBEXRcupreVCard Permet de se connecter un priphrique supportant le protocole OBEX. Permet de se dconnecter d'un priphrique supportant le protocole OBEX. Envoie un fichier sur un priphrique grant le protocole OBEX. Envoie un fichier VCard (carte de visite virtuelle) un priphrique grant le protocole OBEX. Liste les fichiers partags par un priphrique utilisant le protocole OBEX. Rcupre un fichier sur un priphrique grant le protocole OBEX. 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.

Partie 6 : Communication

293

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 traitements 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 vnement, par exemple, une action de l'utilisateur, la rception d'un email, la rception d'un appel tlphonique, ... 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.2.2 Caractristiques des threads


En WLangage, un thread secondaire peut tre associ : une procdure locale la fentre ou la page en cours, une procdure globale au projet, une mthode de classe, une mthode globale de classe

Exemple : Code Thread 1 a=i a++ i=a

Code Thread 2 b=i b++ i=b

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 synchronisation entre plusieurs threads.

16.2.3 Accs aux lments existants et contexte HyperFileSQL


Lors de la cration d'un thread, toutes les dclarations, 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 uniquement dans le thread o elles sont cres. De mme, lors de la cration d'un thread, le contexte 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 informations. Certaines incohrences peuvent apparatre.

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 traitements 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, consultez 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 procdures, 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.

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 ralisables 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 tlphonique ou d'un email, ... 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.

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 termine, 294 Partie 6 : Communication

Partie 6 : Communication

295

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 utiliss 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. 2. Le thread n1 excute la partie de code protge par le smaphore. 3. Pendant que le thread n1 excute le code protg 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.1 Principe
Le smaphore a t cr avec la fonction SmaphoreCre. 1. Le thread n1 excute la fonction SmaphoreDbut : aucun thread n'est actuellement prsent dans le smaphore.

Un smaphore de mme nom peut tre utilis pour protger plusieurs zones de code diffrentes. 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 SmaphoreFin doivent tre utilises dans le mme traitement (par exemple dans une procdure). Les fonctions de gestion des smaphores Les fonctions du WLangage spcifiques la gestion des smaphores sont les suivantes : 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 SmaphoreFin Dtruit explicitement smaphore un

Exemple : Pour raliser une affectation partage par plusieurs threads, il est ncessaire d'encapsuler dans un smaphore aussi bien l'affectation des variables que la lecture de ces variables.

16.3.3 Un smaphore limit : la section critique


Une section critique est un smaphore limit un seul thread sur une seule portion de code (traitement, 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 : SectionCritiqueD- Signale le dbut d'une section but 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

Autorise un ou plusieurs threads de sortir de la zone protge par le smaphore

16.4 Grer les mutex dans les threads


Les mutex permettent de limiter l'excution simultane d'un code (procdure, ligne de code, ...) un thread un instant donn. Un mutex peut tre partag par plusieurs applications. Remarque : D'autres systmes permettent galement 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'excution 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 protge par le mutex. 3. Pendant que le thread n1 excute le code protg 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 Partie 6 : Communication 297

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 SmaphoreCre. 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 dlimiter la portion de code protger. Les lignes de 296 Partie 6 : Communication

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 concerner uniquement des traitements "critiques".

le mutex. 6. Le thread n2 excute la fonction MutexFin : plus aucun thread n'excute le code du mutex.

situes aprs la fonction MutexFin ne seront plus protges. 4. Destruction du mutex avec la fonction MutexDtruit. Remarques : Les parties de code protges par un mutex doivent 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 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 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).

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 :
SI Droite(Saisie1, 1) = " " ALORS ThreadEnvoieSignal(... "ThreadCorrection") FIN

Code du thread secondaire (ThreadCorrection) :


BOUCLE SI ThreadAttendSignal() = Vrai ALORS LanceCorrection() FIN FIN

Fonctions du WLangage Les fonctions suivantes permettent de raliser une gestion simple des signaux : ThreadAttendSignal ThreadEnvoieSignal Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer

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 portion de code protger. 3. Appel de la fonction MutexFin pour dlimiter la portion de code protger. Les lignes de code

16.4.3 Les fonctions de gestion des mutex


MutexCre MutexDbut MutexDtruit MutexFin Cre explicitement un mutex Bloque le thread courant en attendant que le mutex soit libre Dtruit explicitement un mutex. Signale que le thread libre le mutex

16.5.2 Gestion avance des signaux


Une gestion avance des signaux consiste communiquer 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 avance, 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 : SignalAttend Bloque le thread en cours en attendant que le signal spcifi soit ouvert Cre un signal Dtruit explicitement un signal

SignalCre

16.5 Synchroniser des threads laide de signaux


Les signaux permettent de synchroniser les diffrents 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

SignalDtruit

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 orthographique est automatiquement lanc sur le mot prcdent. Dans ce cas, la correction orthographique est gre dans un thread secondaire.

SignalModifie Modifie l'tat d'un signal

16.6 Grer louverture dune fentre WinDev dans un thread secondaire


Un thread secondaire ne peut pas ouvrir directement 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 tlphonique, lorsqu'un appel entrant est dtect ce thread peut afficher une fentre avec les caractristiques de l'appelant. La solution consiste faire ouvrir la fentre par le thread principal.

298

Partie 6 : Communication

Partie 6 : Communication

299

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 spcifique, correspondant la demande d'ouverture de fentre. Lorsque cet vnement survient, la procdure WLangage lance ouvre la fentre spcifie (avec la fonction Ouvre par exemple) avec si ncessaire les paramtres indiqus.

// Ecoute des requtes de // connexion // et de tests de prsence ThreadExcute("ThreadPresence",... threadNormal,... "EcouteDemandePresence") ThreadExcute("ThreadRequete",... threadNormal,... "EcouteDemandeConnexion")

16.7 Fonctions de gestions des threads


Les fonctions permettant de grer les threads sont les suivantes : ExcuteThreadPrincipal MutexCre MutexDbut MutexDtruit MutexFin SectionCritiqueDbut SectionCritiqueFin SmaphoreCre SmaphoreDbut SmaphoreDtruit SmaphoreFin SignalAttend SignalCre SignalDtruit SignalModifie ThreadArrte ThreadAttend ThreadAttendSignal ThreadCourant ThreadEnvoieSignal ThreadEtat ThreadExcute ThreadMode ThreadPause ThreadPriorit ThreadReprend ThreadSuspend Dclenche l'excution de la procdure spcifie par le thread principal de l'application. Cre explicitement un mutex Bloque le thread courant en attendant que le mutex soit libre Dtruit explicitement un mutex Signale que le thread libre le mutex 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 Signale la fin d'une section critique : un autre thread pourra excuter le code Cre un smaphore 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) Dtruit explicitement un smaphore Autorise un ou plusieurs threads de sortir de la sortie de la zone protge par le smaphore Bloque le thread en cours en attendant que le signal spcifi soit ouvert Cre un signal Dtruit explicitement un signal Modifie l'tat d'un signal Arrte un "thread" secondaire Attend la fin de l'excution du "thread" dsign. Un temps maximum d'attente peut tre prcis Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" Renvoie le nom du thread en cours d'excution Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer Renvoie l'tat actuel d'un thread Lance l'excution d'un "thread" secondaire. Ce "thread" est non bloquant Change le mode de gestion des threads Temporise le thread en cours pour la dure indique Renvoie ou modifie le niveau de priorit d'un thread Relance l'excution d'un "thread" prcdemment suspendu par la fonction ThreadSuspend Suspend temporairement l'excution du "thread" dsign. Le traitement en cours n'est pas bloqu

L'ouverture de la fentre est ralise par exemple dans le code de la procdure EcouteRequteDebutMessage. Cette procdure est excute dans un thread. Le code utilis pour ouvrir la fentre depuis le thread est le suivant :
// Demande d'ouverture de // la fentre de "chat" PostMessage(... Handle(Fentre_Principale),... "DebutChat",CONTACT.IDCONTACT,... CONTACT.IDCONTACT)

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'ouverture de la fentre dans le thread principal. dclencher les threads secondaires.
// 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

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. Lorsque le message survient, la procdure OuvertureChat est automatiquement excute. C'est cette procdure qui ouvre la fentre. Le code de cette procdure est le suivant :
PROCEDURE OuvertureChat(nParam,... nContact) OuvreSoeur(Fentre_Message, ... nContact)

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.

300

Partie 6 : Communication

Partie 6 : Communication

301

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 protocoles HTTP et XML. Il peut galement s'utiliser avec le protocole SMTP. De ce fait, le protocole SOAP est indpendant des systmes d'exploitation et des langages de programmation. Le protocole SOAP permet l'inter-oprabilit. 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.

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 procdure, utilisez la fonction SOAPErreur.

Remarque :Actuellement, les transferts ne sont pas scuriss (pas de cryptage des donnes transfres). Il est recommand de ne pas utiliser le protocole 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 serveur SOAP :

Variable SOAP.NameSpace SOAP.Nom SOAP.ParamXML

Type

Dtail

Chane de caractres Espace de nommage (appel "NameSpace") du paramtre optionnelle Chane de caractres Nom du paramtre Chane de caractres Ensemble sous forme XML des structures d'un paramtre. Si optionnelle ce paramtre est spcifi, les autres paramtres (Valeur, Nom, Type, NameSpace et StyleEncodage) sont ignors.

17.1.1 WinDev / WebDev et le protocole SOAP


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. WinDev et WebDev permettent de crer une application 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.

SOAP.StyleEncodage Chane de caractres Style d'encodage (appel "EncodingStyle") du paramtre optionnelle SOAP.Type SOAP.Valeur Constante Tout type Type du paramtre Valeur du paramtre
SOAP.Type[1] = SOAPTypeChane

Cette structure doit tre utilise pour chaque paramtre. Par exemple :
SOAP.Valeur[1] = 94010 SOAP.Nom[1] = "CodePostal"

Cette structure est quivalente :


SOAP.ParamXML[1] = <CodePostal xsi:type="xsd:string">94010</CodePostal>

17.1.2 Exemple
WinDev est livr en standard avec un exemple utilisant 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. 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 SOAPExcuteXML permet de savoir si la connexion a bien t tablie. Si la connexion n'a pas t tablie, utilisez la fonction ErreurInfo pour connatre les causes de l'erreur.

17.3 Crer et installer une application serveur SOAP WinDev


L'application serveur SOAP est une application contenant toutes les procdures excuter. Ces procdures sont excutes par l'application cliente SOAP.

17.3.1 Principe

17.2.1 Principe d'utilisation


L'ensemble des paramtres ncessaires l'excution d'une procdure SOAP est fourni dans la documentation du serveur SOAP et de ses procdures. Pour excuter une procdure sur un serveur SOAP : 1. Initialisez la structure des paramtres de la procdure 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 302 Partie 6 : Communication

Partie 6 : Communication

303

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 procdure 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 respectivement excuts au chargement et au dchargement 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 transfres). Il est recommand de ne pas utiliser le protocole 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 "Configurer 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 WinDev. 2. Crez la procdure dinstallation de votre application. Sous le volet "Projet", dans le groupe "Gnration", droulez "Procdure dinstallation" et slectionnez "Crer la procdure dinstallation". 3. Les fichiers devant tre slectionns pour l'installation 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 application WinDev (configuration pour Apache, IIS5 ou Netscape iPlanet 4.1). Pour plus de dtails, consultez laide en ligne. 6. Configurez ladministrateur SOAP. Pour plus de dtails, consultez laide en ligne. 7. Pour que le client soap puisse contacter le serveur, l'adresse du serveur utilise dans la fonction SoapExcute doit tre de la forme :
<Adresse IP du serveur>\ ... Serveur.soap

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.

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.

304

Partie 6 : Communication

Partie 6 : Communication

305

18. WEBSERVICES XML


WinDev et WebDev permettent dimporter directement 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.

Proprits d'un Webservice modifiables 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-dposer directement depuis l'explorateur de projet dans l'diteur de code pour insrer le nom du Webservice. Les proprits modifiables par programmation sont : Nom Adresse Effet Cette proprit permet de remplacer l'adresse d'appel du Webservice 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'Application WebDev, il s'agit de l'URL du fichier d'extension "awws". Remarques : La modification de cette proprit remplace toutes les URL dcrites dans le WSDL. Si cette proprit reoit une chane vide, les URL dcrites dans le WSDL seront de nouveaux utilises. Utilisateur Cette chane de caractres sera utilise comme nom d'utilisateur pour raliser l'authentification lors des requtes HTTP au Webservice. Cette chane de caractres sera utilise comme mot de passe pour raliser l'authentification lors des requtes HTTP au Webservice.

18.1.5 Utiliser un Webservice import dans le projet


Pour utiliser la collection de procdures du Webservice, il suffit d'appeler les fonctions gnres automatiquement par l'import. Les types de variables dclars automatiquement lors de l'import du WSDL offrent un certain nombre de proprits : Nom Existe Effet Vrai si le type de variable existe dans la rponse du Webservice. Faux sinon. 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. Nom du type de la variable. Cette proprit est utilise lorsquun Webservice est susceptible de retourner des rponses de diffrents types. Valeur de la variable. Cette proprit est accde par dfaut lorsque seul le nom de la variable est utilis, par exemple :
monWebservice.VariableRequete = SAI_Valeur

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 format XML et utilisent les protocoles SOAP (Simple Object Access Protocol) et HTTP. A partir de la description au format WSDL (Web Services Description Language) de ce service, WinDev, WebDev ou WinDev Mobile va gnrer automatiquement des types et des fonctions WLangage correspondants l'interface de programmation du Webservice. Remarque : Par compatibilit avec les versions prcdentes, il est galement possible de demander la gnration d'une collection de procdures ou d'une classe dont les mthodes correspondent aux oprations du Webservice. Il est nanmoins recommand 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. 3. Validez lassistant, le Webservice est automatiquement ajout dans l'explorateur de projet (dans la branche "Webservices") et prt tre utilis.

Occurrence

18.1.3 Mettre jour la description d'un Webservice


Lorsquun Webservice volue (corrections, nouvelles 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.

Type

Valeur

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 contextuel. 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'diteur et les proprits modifiables par programmation n'ont pas de lien

est quivalent :
monWebservice.VariableRequete..Valeur = SAI_Valeur

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 "Importer 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. 306 Partie 6 : Communication

MotDePasse

Remarque : Si un nom d'utilisateur et un mot de passe sont spcifis, l'authentification des requtes HTTP se fera en utilisant le schma d'authentification "Basic", dans lequel les paramtres sont en clair dans la requte HTTP. Il est prfrable d'utiliser des requtes HTTPS si l'authentification est ncessaire.

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 retournent 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. Partie 6 : Communication 307

SOAPAjouteEntte : Cette fonction permet d'ajouter 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 prsent dans le WSDL) sur une variable de Webservice 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 renvoie un rsultat dans un type non reconnu par WinDev/WebDev/WinDev 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 complexes (dateheure, dure, structures, tableaux de types simples et de structures, structures imbriques, etc.), utiliss dans le Webservice sont automatiquement 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 caractres 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.

Les diffrences entre les anciens services Web XML et les Webservices sont les suivantes : Anciens services Web XML Webservices

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 projet dj existant. 2. Crez des procdures globales. Chaque procdure 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 respectivement excuts au chargement et au dchargement de la bibliothque du Webservice. 4. Sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Gnrer". L'assistant de gnration de Webservice se lance. 5. Slectionnez "Dploiement sur un Serveur d'Application WebDev". Par compatibilit, vous pouvez 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 lments intgrer dans la bibliothque. La bibliothque 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 bibliothque. 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 automatiquement cr. Ce fichier contient toutes les rfrences des lments intgrs la bibliothque. 7. Terminez l'assistant pour gnrer le Webservice. L'assistant de dploiement est automatiquement lanc la suite.

Dploys sur Apache Dploys sur un Serveur ou IIS avec un module d'Application WebDev ISAPI. (compatible avec tous les serveurs Web). Ne peuvent tre Peuvent tre dploys dploys qu'avec une par mdia physique ou installation par mdia distance (par FTP). physique directement sur le serveur. Ne peuvent tre Autorise une monte en dploys qu'avec une charge importante. installation par mdia physique directement sur le serveur. Limits aux versions Fonctionnent sur toutes de Windows 32 bits. les versions de Windows (32 et 64 bits) ainsi que sous Linux. Remarque : Dans le cas de la conversion d'un Serveur SOAP gnr par WinDev 14 (ou une version antrieure) vers le nouveau modle de Webservice, il est ncessaire de remplacer les appels la fonction SOAPExcute gnrs par l'importation du Webservice dans les projets WinDev par des appels la nouvelle convention. Pour plus de dtails, consultez laide en ligne.

18.1.6 Distribuer une application WinDev qui utilise un Webservice


Pour distribuer une application qui utilise un Webservice, il suffit d'intgrer le fichier dcrivant le Webservice (fichier .wdsdl) dans la bibliothque de l'application. Pour que l'application puisse excuter le Webservice, 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 directement des Webservices utilisant la technologie SOAP. Ces Webservices peuvent ensuite tre utiliss dans des projets WinDev, WebDev, WinDev Mobile ou dans n'importe quel autre langage supportant le protocole SOAP. A partir du projet WinDev/WebDev correspondant au Webservice, WinDev/WebDev va crer automatiquement : Une bibliothque (fichier .AWWS). Cette bibliothque 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 description au format WSDL (Web Services Description Language) du Webservice. Ce fichier XML contient la description des mthodes et des structures 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.

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'Application WebDev.

308

Partie 6 : Communication

Partie 6 : Communication

309

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'Application WebDev distant". 3. Saisissez les paramtres de connexion au Serveur 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 Webservice. 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'Application et affiche la liste des fichiers dployer (s'il a dtect une version prcdente du Webservice, il 310 Partie 6 : Communication

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 Webservice 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 dploiement 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 statistiques 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 dveloppement, 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 Serveur 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 Webservice.

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 donnes. 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 supplmentaires ou d'en retirer. 7. Paramtrez la modification automatique des donnes du Webservice. 8. Indiquez les paramtres d'exploitation du Webservice 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 dploiement 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 statistiques 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 Webservice. 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 messages 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 existant. "Crer une installation par mdia physique autonome 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 supplmentaires 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 slectionner l'installeur utiliser. L'installeur par dfaut (WBSetup) est livr avec ses sources et peut tre personnalis. 7. Vous pouvez choisir les rpertoires dans lesquels 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'installation 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.

Partie 6 : Communication

311

19. XML
19.1 Gestion des documents XML
19.1.1 Prsentation
WinDev met votre disposition des fonctions permettant de manipuler du code XML. Le code XML manipul doit tre strictement conforme la norme XML. Pour plus de dtails, consultez une documentation spcifique sur XML. Rappel : XML est la fois une norme et un langage driv du HTML (Pages Web, Internet, ...) qui permet de structurer un document contenant des donnes. 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.5 Utilisation d'une variable de type xmlDocument


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 branche "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 description 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 de la variable> est ... un xmlDocument , description ... = <Nom du document>

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 XMLDocument). Ce document est stock en mmoire et contient l'ensemble du code XML manipuler. 3. Manipulez votre document XML grce aux fonctions WLangage. Il est possible de : Parcourir le code XML (fonctions XMLPremier, XMLSuivant, XMLDernier, XMLPrcdent, XMLParent, XMLFils, XMLRacine). Effectuer des recherches (fonctions XMLRecherche, XMLAnnuleRecherche, XMLExtraitChane). Rcuprer des informations sur les lments (balises ou attributs) du document. (fonctions XMLTypeElment, XMLNomElment, XMLNomParent, XMLDonne). Modifier le document XML (fonctions XMLAjouteAttribut, XMLAjouteFils, XMLInsreDocument, XMLInsreElment, XMLModifie, XMLRenomme, 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 XMLVersTexte). 4. Enregistrez si ncessaire les modifications effectues (fonctions XMLConstruitChane et fSauveTexte). 5. Fermez le document XML (fonction XMLTermine). Remarque : Il est galement possible de crer un document XML : avec les donnes d'une table (fonction TableVersXML). partir d'une partie d'un document XML existant (fonction XMLExtraitDocument).

<Nom du document> peut correspondre au nom du document exemple (avec ou sans son extension) ou au nom du document modle (avec ou sant extension). Remarques : Cette dclaration peut tre obtenue automatiquement en "droppant" le nom du document XML directement depuis l'explorateur de projet. Dans le cas de l'utilisation d'un document exemple, il est galement possible d'utiliser la syntaxe suivante :
<Nom de la variable> est ... un xmlDocument <Nom de la variable> = ... xmlOuvre(<Nom du document>)

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).

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 sauvegarder 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 strictement 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 :
<?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>

19.1.3 Principe dutilisation


Deux mthodes peuvent tre utilises pour manipuler 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 fonctions XML. 2. Utilisation d'une variable de type xmlDocument. Cette mthode permet d'utiliser un fichier de type XSD.

312

Partie 6 : Communication

Partie 6 : Communication

313

Suivi d'un fichier XML valide :


<?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>

19.2.3 Utiliser une description importe dans le projet


Pour utiliser la description du document XML, il suffit d'utiliser les variables gnres automatiquement par l'importation. 1. Dclarez un document XML au format de la description qui a t importe. Par exemple, si la description importe se nomme 'personne':
cMonDoc est un xmlDocument ... <description="personne">

XMLExtraitChane XMLExtraitDocument XMLFils XMLFilsExiste XMLInsreDocument XMLInsreElment XMLLit XMLModifie XMLNameSpace XMLNameSpaceURI XMLNoeudValide XMLNomElment XMLNomParent XMLOuvre XMLParent XMLPosition XMLPrcdent XMLPremier XMLRacine XMLRecherche XMLRenomme XMLRsultat XMLRetourPosition XMLSauve XMLSauvePosition XMLSuivant XMLSupprime XMLTermine XMLTrouve XMLTypeElment XMLVersTexte

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", slectionnez "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 "Description XML"). Il est prt tre utilis.

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.
cMonDoc.personne.nom="DUPONT" cMonDoc.personne.prenom="JEAN"

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.
XMLSauve(cMonDoc, ... "ListePersonnes.xml"

19.3 Fonctions de gestion des documents XML


Les fonctions permettant de grer les documents XML sont les suivantes : TexteVersXML TableVersXML XMLAjouteAttribut XMLAjouteFils XMLAnnuleRecherche XMLChercheNamespaceParNom XMLChercheNamespaceParURI XMLConstruitChane XMLDernier XMLDocument XMLDocumentValide XMLDonne XMLEcrit XMLEnDehors XMLExcuteXPath 314 Convertit une chane de caractres au format ANSI en une chane de caractres au format XML Cre un fichier XML avec les donnes d'une table (table fichier ou table mmoire) Ajoute un attribut dans un document XML Ajoute une balise fille dans un document XML Annule la recherche lance par la fonction XMLRecherche Rechercher un namespace (espace de nommage) XML partir de son nom dans un noeud XML et dans les parents de ce noeud Recherche un namespace (espace de nommage) XML partir de son URI (Universal Resource Identifier) dans un noeud et dans les parents de ce noeud Rcupre et met en forme le contenu dun document XML (cr avec la fonction XMLDocument) et modifi grce aux fonctions XML Se positionne sur le dernier lment du niveau en cours de l'arborescence ou sur la dernire balise de la hirarchie Cre ou dfinit un nouveau document XML Valide un document XML partir dun schma XSD Renvoie la valeur de l'lment en cours ou dune balise Ecrit la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML Permet de savoir si la position courante est valide ou si la balise sur laquelle on veut se positionner est en dehors du fichier Excute une requte XPATH dans un document XML

Extrait des donnes dans un code XML Cre un nouveau document XML partir dune partie dun document XML existant Se positionne sur le premier lment fils de l'lment en cours ou sur la premire balise fille de la balise en cours Indique si la balise courante a des fils correspondant au type recherch (balise, attribut) Insre un document XML dans un autre document XML Insre un lment (balise ou attribut) XML dans un document XML Renvoie la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML. Modifie le contenu de llment courant dans un document XML Renvoie le prfixe de l'espace de nommage utilis pour la balise courante dans un document XML Renvoie l'URI de dfinition de l'espace de nommage utilis pour la balise courante dans un document XML Valide un noeud XML, ses fils et ses attributs partir de sa description dans le schma XSD li au document XML. Renvoie le nom de l'lment ou de la balise en cours Renvoie le nom de l'lment parent de l'lment en cours ou de la balise parente de la balise en cours Charge un document XML partir d'un fichier, d'une URL ou d'une chane dans une variable de type xmlDocument Se positionne sur l'lment parent de l'lment en cours ou sur la balise parente de la balise en cours Renvoie la position en cours dans le document sous la forme XPATH Se positionne sur l'lment prcdent dans le niveau en cours de l'arborescence ou sur la balise prcdente Se positionne sur le premier lment du niveau en cours de l'arborescence ou sur la premire balise rencontre Se positionne sur la balise racine du document XML Lance une recherche dans un document XML Modifie le nom de llment courant (balise ou attribut) dans un document XML Donne le rsultat dune requte XPATH de calcul. Cette requte a t excute avec la fonction XMLExcutePath Restaure le contexte prcdemment sauvegard dun document XML (fonction XMLSauvePosition). Le filtre en cours lors de la sauvegarde de la position peut tre restaur. Sauvegarde un document XML dans un fichier. Mmorise la position en cours dans un document XML. Se positionne sur l'lment suivant dans le niveau en cours de l'arborescence ou sur la balise suivante de mme niveau Supprime llment suivant dans le niveau en cours de larborescence Ferme un document XML cr avec XMLDocument Permet de savoir si un lment a t trouv dans le parcours Renvoie le type de l'lment en cours ou le type de la valeur de la balise en cours 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. Partie 6 : Communication 315

Partie 6 : Communication

20. ASSEMBLAGES .NET


20.1 Prsentation
20.1.1 Dfinition
La technologie .NET correspond la nouvelle plateforme de dveloppement logiciel de Microsoft. Cette plate-forme .NET permet de faciliter normment le dveloppement dapplications objets distribus dont les modules communiquent via Internet. Ce chapitre ne fait que prsenter de manire globale lutilisation de la technologie .NET dans WinDev. Pour plus de dtails sur la technologie .NET, nous vous conseillons de consulter des ouvrages spcifiques. cation WinDev, WinDev Mobile ou dans un site WebDev : dans une nouvelle application : il suffit de spcifier lutilisation des assemblages .NET directement dans lassistant de cration. dans une application existante : il suffit de slectionner 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, consultez laide en ligne (mots-cls : "Assemblage .NET").

Remarque : Pour excuter un programme .NET disponible sur le rseau local, slectionnez licne "Intranet local" et rglez la scurit sur "Confiance totale".

20.2.3 Rendre accessibles les DLLs ncessaires 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 lassemblage .NET.

soit dans le sous-rpertoire "Assembly" du rpertoire dinstallation de Windows. 2. Copiez si ncessaire les librairies WinDev : soit dans le rpertoire de cration de lassemblage .NET. soit dans le PATH. Rappel : Le PATH liste les rpertoires dans lesquels les excutables (fichiers ".EXE") et les librairies (fichiers ".DLL") sont recherchs en priorit.

20.3 Crer un assemblage .NET depuis WinDev


Avant de crer un assemblage .NET, tous les lments ncessaires cet assemblage doivent avoir t dvelopps dans un projet WinDev. Pour crer un assemblage .NET : 1. Ouvrez le projet WinDev partir duquel lassemblage .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 "Gnration", 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 lment de lassemblage .NET. Les fichiers correspondants 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 excut linitialisation de lassemblage .NET. le traitement de terminaison du projet sera excut 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 message derreur par dfaut. 7. Indiquez si ncessaire les informations de lassemblage .NET : description, version, copyright, ... Le bouton "Avanc" permet de dfinir des proprits 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 avances". 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 dindiquer 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. Lassemblage sera ainsi authentifi et il sera possible de vrifier sa provenance. Partie 6 : Communication 317

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 assemblages .NET (non crs avec WinDev) dans une appli-

20.2 Conditions ncessaires la manipulation dun assemblage .NET


Pour crer et utiliser un assemblage .NET sous WinDev, il est ncessaire de : installer le Framework .NET sur le poste en cours. rgler le niveau de scurit .NET. rendre accessibles les DLLs ncessaires lexcution de lassemblage .NET. Mthode 2 : Tlchargement depuis le site Internet 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.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 configuration") et slectionnez loption "Ajout / Suppression de programmes". 2. Cliquez sur le bouton "Ajouter de nouveaux programmes". 3. Cliquez sur le bouton "Windows Update". 4. Recherchez linstallation du Framework .NET. 5. Installez le Framework .NET. 316 Partie 6 : Communication

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 configuration") et slectionnez loption "Outils dadministration". 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".

spcifier le fichier ".SNK" utiliser. Ce fichier contient les cls de cryptage utilises pour authentifier lassemblage .NET.

indiquer si le mcanisme de signature retarde doit tre utilis. Ce mcanisme permet de ne pas authentifier lassemblage .NET lors de son dveloppement.

20.6 Utiliser des assemblages .NET dans une application WinDev


Pour intgrer des assemblages .NET dans lapplication en cours : 1. Sous le volet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez loption "Importer 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".

20.4 Crer un assemblage .NET accessible par COM


20.4.1 Prsentation
Avant de crer un assemblage .NET, tous les lments ncessaires cet assemblage doivent avoir t dvelopps dans un projet WinDev. 2. Modifier le code des classes du projet WinDev La classe doit avoir un constructeur sans arguments (c'est le seul constructeur utilisable par COM), Les membres statiques ne seront pas accessibles 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 prcdemment cr. 4. Copier l'assemblage gnr dans le rpertoire des assemblages partags de Windows : Copier l'assemblage dans le rpertoire c:\Windows\Assembly, Copier la librairie WD180NET.dll dans le rpertoire 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 MonAssemblage.DLL /tlb:MonAssemblage.tlb". 2. Utiliser le fichier tlb gnr dans le projet C++. 3. Recompiler le projet C++.

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. Gnralement, 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.

20.5 Crer le programme dinstallation dun assemblage .NET


La cration du programme dinstallation dun assemblage .NET est identique la cration du programme dinstallation dune application WinDev classique. Pour plus de dtails, consultez laide en ligne (mots-cls : "Installation dune application WinDev").

318

Partie 6 : Communication

Partie 6 : Communication

319

PARTIE 7 Gestion des fichiers de donnes

320

Partie 6 : Communication

1. LA GESTION DES FICHIERS DE DONNES


WinDev, WinDev Mobile et WebDev permettent de grer des fichiers de donnes au format HyperFileSQL (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 concepts, 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 programmation. 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 format 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, ... projet, sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). Remarque : Le fichier physique nest cr ni par la gnration d'analyse, ni par la procdure d'installation. 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.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

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. Partie 7 : Gestion des fichiers de donnes 323

WinDev / WebDev gre la liste des fichiers de donnes utiliss un moment donn par le programme. Lorsquune fonction opre sur un fichier de donnes, si celui-ci n'est pas dans la liste des fichiers utiliss, le fichier de donnes est ouvert automatiquement. Un nombre illimit de fichiers de donnes peut tre ouvert simultanment. Si le fichier de donnes ferm est rutilis ultrieurement dans le programme, il sera alors ouvert automatiquement, suivant le mme procd. Il en sera de mme pour tout nouveau fichier de donnes utilis.

2. Dans l'onglet "Dtail", cochez l'option "Gestion des fichiers de plus de 2Go". Attention : Ces fichiers de donnes ne seront utilisables 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 donnes grce la proprit ..GrosFichier. Attention : La rindexation de fichiers de donnes de plus de 2 Giga peut tre relativement longue.

Vrification de l'unicit d'une cl Lorsque la fonction HGreDoublon est active : Vrification automatique de lunicit des cls (WinDev uniquement). Lorsquune cl avec doublon apparat aprs lajout ou la modification dun enregistrement, un message apparat automatiquement et propose lutilisateur de modifier 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.
// 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

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 (rubrique) servant la recherche. L'argument de la recherche est la valeur recherche pour cette cl. L'argument peut tre : Une valeur complte, on parle alors de recherche lidentique. Une valeur partielle, on parle alors de recherche gnrique. Exemple Lors d'une recherche gnrique de la chane "Martin" pour la rubrique NOM, tous les enregistrements dont la rubrique NOM commence par "Martin" correspondront la recherche. Ainsi, l'enregistrement contenant "Martinez" correspondra 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".

1.1.3 Gestion des fichiers de donnes HyperFileSQL 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 ncessitent 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 suprieur 2 Giga install sous Windows 2000. WebDev : Cette configuration est ncessaire aussi bien sur le serveur Web que sur le serveur de donnes. 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).

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 appeles 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 appeles cl numrique. Une cl compose est une cl compose de rubriques de type texte et / ou numrique. Remarque : une cl compose peut tre compose 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 enregistrements du fichier de donnes.

Remarque : Si la cl modifie ou ajoute nest pas unique, les fonctions pouvant provoquer lapparition de doublons sont les suivantes : HAjoute, HModifie ou TableEnregistre. Si la fonction HErreurDoublon n'est pas appele, l'erreur 10 (erreur de doublons) sera automatiquement gnre lors du prochain appel une fonction de gestion de fichiers. Cette erreur ne pourra pas tre ignore : tous les fichiers de donnes sont ferms et l'excution du programme est abandonne. 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-

324

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

325

Valeur recherche Durand Dupuis Dupon

Options

Enreg en HTrouve cours renvoie 1 Vrai 1 Faux Vrai

Explications Durand existe. Dupuis n'existe pas. Positionne sur la premire valeur suprieure (Dupont). Dupon n'existe pas mais la recherche est gnrique et il existe un Dupond343 entre autres). Dupon n'existe pas. Martin existe. 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 manipuler 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 vites. Les arrondis spcifiques aux codages des rels dans les langages risquent de perturber la recherche.

HGnrique 8

Dupon Martin

8 4

Faux Vrai

le tableau de droite. 4. Rorganisez si ncessaire les rubriques composant la cl compose. Attention : l'ordre des rubriques 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 compose 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 compose. 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 compose Lors de l'ajout ou de la modification d'un enregistrement 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 compose 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 raliser 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 filtre). Pour construire la valeur d'une cl compose, plusieurs 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 HConstruitValCl le fichier concern, le nom de la cl et les valeurs des composantes. Exemple : Pour construire la valeur de la cl compose "NOMDATE" correspondant "NOMCLIENT+DATE_ENTREE" du fichier Client, il suffit d'utiliser la ligne de code :
HConstruitValCl(Client,... NOMDATE,"MOULIN","03/11/85")

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 possible 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 effectue 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 utilis. Cependant, dans le fichier d'index, les cls numriques sont codes diffremment (pour simplifier et acclrer les recherches). Exemple : Si le codage d'un entier est celui du langage, 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. 326 Partie 7 : Gestion des fichiers de donnes

1.1.5 Gestion des cls composes


Une cl compose est une rubrique cl compose de plusieurs autres rubriques. Ces rubriques peuvent tre des rubriques de type texte ou numrique. Une cl compose permet de simplifier les recherches effectues simultanment sur plusieurs critres. 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 directement 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

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 :
HFiltre(Client, NOMDATE, ... ("MOULIN","03/11/85"))

Proprits de gestion des cls composes Les principales proprits permettant de manipuler les cls composes par programmation sont les suivantes : Binaire Identifie une rubrique de type binaire (cl compose, chane binaire, mmo binaire) Teste si la rubrique spcifie est une cl compose Renvoie le nom de la nime composante d'une cl compose Renvoie la formule d'une cl compose 327

ClCompose Composante FormuleCl

Partie 7 : Gestion des fichiers de donnes

NbComposante Renvoie le nombre de composantes d'une cl compose Les cls composes peuvent tre utilises pour raliser : des recherches lidentique, des recherches gnriques, des filtres. Pour plus de dtails, consultez laide en ligne.

compose n'a aucune action. En effet, les cls composes sont reconstruites chaque criture. Enregistrement point et enregistrement 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 variables 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'enregistrement 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 enregistrements diffrents du mme fichier de donnes. Il ny a quun seul enregistrement charg en mmoire par contexte. La lecture d'un enregistrement, effectue automatiquement ou la demande, initialise les diffrentes variables du fichier avec l'enregistrement charg en mmoire. L'criture d'un enregistrement correspond l'criture des variables du fichier dans le fichier de donnes lors de la sauvegarde de l'enregistrement charg en mmoire. Remarque : Le tableau ci-aprs indique l'enregistrement sur lequel oprent les fonctions qui positionnent un enregistrement : l'enregistrement charg en mmoire ou l'enregistrement point. Les fonctions non prsentes dans le tableau n'utilisent pas un enregistrement.

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 manipule 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 rubrique
<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.
Info (FACTURE.NOMDATE) // Affiche la valeur cl compose

Fonctions positionnant un enregistrement HAjoute HChangeCle HDernier HEcrit HLit HLitDernier HLitPrcdent HLitPremier HLitRecherche HLitRechercheDernier HLitRecherchePremier HLitSuivant HModifie HPrcdent HPremier HRecherche HRechercheDernier HRecherchePremier HRaye HRetourPosition HSauvePosition HSuivant HSupprime

Enregistrement mmoire x

charg

en Enregistrement point x x

x x x x x x x x x x

x x x x x x x x x x x x

x x x x x 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, HLitRecherchePremier, HLitRechercheDernier, HLitPrcdent, HLitSuivant, 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, HLitRecherchePremier, HLitRechercheSuivant, HLitPrcdent, HLitHRecherche, HRecherchePremier, Suivant, HRechercheDernier, HPrcdent, HSuivant permettent de rechercher un enregistrement : La fonction HLitRechercheXX (ou HRechercheXX) amorce la recherche. Les fonctions HLitSuivant, HLitPrcdent (ou HSuivant, HPrcdent) accdent l'enregistrement suivant ou prcdent.

Remarque : La tentative d'criture dans une cl

Lecture d'un enregistrement 1. Fonctions de lecture Les fonctions HLitRecherche, HLitRecherchePremier, HLitRechercheDernier HLitPremier, HLitDernier 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 permettent de lire un enregistrement si un enregistrement a t point par HLitRecherche, HLitPremier ou HLitDernier. Important : La fonction HLit permet de lire un enregistrement selon son numro d'enregistrement, l'enregistrement point n'est pas initialis. Ainsi, les fonctions HLitSuivant et HLitPrcdent ne peuvent pas tre appeles immdiatement aprs la fonction HLit. Cependant, il est possible d'initialiser l'enregistrement point avec la fonction HChangeCl aprs la fonction HLit : les fonctions HLitSuivant et HLitPr-

328

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

329

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 : Numro ment 1 2 3 4 5 6 7 8 denregistre- CODE 17 12 18 05 01 20 09 14 PRENOM Fabien Etienne Chantal Louis Jean Lara Franoise Marie

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) correspondant 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) correspondant la plus grande valeur de la cl. Il est atteint par les fonctions HDernier ou HLitDernier. N. Enreg 1 2 3 4 5 6 7 8 Nom GONZALEZ MOUSE TALON LAGAFFE DALTON VAILLANT ONO MALTESE Prnom Position Speedy Mickey Achille premier PRENOM Gaston Avrell premier NOM Michel dernier NOM Yoko dernier PRENOM Corto

cours est conserv, bien que la cl de parcours soit modifie. La fonction HChangeCl peut tre utilise pour rechercher un enregistrement aprs s'tre positionn en accs direct sur un enregistrement par la fonction HLit. Par exemple, la ligne :
HChangeCl(CLIENT,NOMCLI)

peut remplacer l'algorithme :


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

selon selon selon selon

Pour ce fichier, l'volution de l'enregistrement charg en mmoire et de l'enregistrement point, pendant le droulement d'un programme est la suivante : Fonctions Enregistrement point sur CODE ?
enr.5 enr.5 enr.4 enr.7 enr.7 enr.7 enr.7 enr.2 ...

Dbut du programme
HLitPremier(PERSONNE,CODE) HLitPremier(PERSONNE,NOM) HLitSuivant(PERSONNE,CODE) HLitSuivant(PERSONNE,CODE) HLitSuivant(PERSONNE,NOM) HLitSuivant(PERSONNE,NOM) HLitSuivant(PERSONNE,NOM) HLitSuivant(PERSONNE,CODE) Etc.

Enregistrement point sur PRENOM ?


? enr.3 enr.3 enr.3 enr.2 enr.1 enr.7 enr.7 ...

Enregistrement en mmoire ?
enr.5 enr.3 enr.4 enr.7 enr.2 enr.1 enr.7 enr.2 ...

Les enregistrements suivant ou prcdant l'enregistrement point sont atteints par les fonctions HLitSuivant, HLitPrcdent ou HSuivant, HPrcdent. Exemple de parcours croissant :
HLitPremier(CLIENT,Nom) TANTQUE PAS HEnDehors() ImprimeEtiquette() HLitSuivant(CLIENT,Nom) Fin

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 enregistrements rpondant l'argument de tri. Les fonctions HLitSuivant ou HLitPrcdent permettent d'obtenir tous les homonymes. Important : Aucune hypothse ne doit tre faite concernant la localisation relle de l'enregistrement. En effet, sur une valeur de recherche possdant 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 enregistrements correspondant au filtre. Les bornes dsignes 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 Partie 7 : Gestion des fichiers de donnes 331

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'enregistrement prcdent sont relatives l'enregistrement point pour une cl donne. Pour pouvoir lire un enregistrement suivant ou prcdent, il faut imprativement initialiser l'enregis330 Partie 7 : Gestion des fichiers de donnes

trement point. Si ce n'est pas le cas, l'erreur 19 sera gnre. Les fonctions qui initialisent l'enregistrement point sont : HLitRecherche, HLitRecherchePremier, HLitRechercheDernier, HLitPremier, HLitDerHRecherche, HRecherchePremier, nier, HRechercheDernier, HDernier, HPremier, HChangeCl. 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 dcroissant).

2. Positionnement en dehors du fichier de donnes Si aprs l'excution d'une fonction HLitDernier, HLitPrcdent, HLitPremier, HLitRecherche, HLitSuivant et HDernier, HPrcdent, HPremier, HRecherche, 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'excution d'une des fonctions cites ci-dessus. 3. Changement de cl de parcours La cl de parcours peut tre modifie avec la fonction HChangeCl. Dans ce cas, l'enregistrement en

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 (HFilHFiltreComprisEntre, treCommencePar, 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 (WinDev 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, HLitHLitPremierSansBloquer PremierBloque, 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 bornes 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, HLitDernierBloque, HLitDernierSansBloquer retournent : soit le dernier enregistrement correspondant au filtre, soit HEnDehors() Vrai si aucun enregistrement ne correspond au filtre. Dans le cas dun filtre sur une cl avec des bornes 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, HLitHLitSuivantSansBloquer SuivantBloque, 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 bornes 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 bornes 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 supprimer un enregistrement d'un fichier : HAjoute ajoute un enregistrement, HEcrit crit un enregistrement, HModifie modifie un enregistrement, HRaye et HSupprime suppriment un enregistrement. Les fonctions HAjoute, HModifie, HRaye et HSupprime utilisent l'enregistrement charg en mmoire Avant de supprimer ou de modifier un enregistrement, il faut initialiser l'enregistrement charg en mmoire avec HLit, HLitPremier, HLitDernier, HLitSuivant, HLitPrcdent ou HLitRecherche, HLitRecherchePremier, HLitRechercheDernier, sinon une erreur sera gnre (voir annexe). Important : Dans les tables fichier, pour supprimer un enregistrement, il faut utiliser la fonction TableSupprime (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.

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 :
NOM=CLIENT.NOM CLIENT.VILLE=VILLE

1.1.7 Schmas : le mode fiche et le mode table

Gestion d'un fichier en mode fiche fiche

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 EcranVersFichier / 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.

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 positionner et se dplacer rapidement dans un fichier de donnes sans parcourir le fichier de donnes. 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 enregistrements en mme temps partir de la position en cours selon une cl donne Permet de reculer de plusieurs enregistrements en mme temps partir de la position en cours sur une cl donne

HRecule

332

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

333

Exemple
// 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

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 alphabets non latins. Gestion des fichiers FoxPro : Support du format VFP Tous les formats d'index sont supports (y compris 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 programmation l'aide des fonctions suivantes : 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 HDBDcritFichier. Les dans fichiers de donnes, mmos et d'index sont crs sur le disque HDBDcritFi- Dcrit dynamiquement un fichier chier 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- Dcrit dynamiquement les diffdex rents fichiers d'index qui seront crs. Un fichier d'index doit tre dcrit pour chaque cl de recherche. Le fichier d'index cr sera au format dBase 3. HDBDcritRu- Dcrit dynamiquement chaque brique rubrique de la structure d'un fichier xBase dcrit avec HDBDecritFichier.

Exemple :
// 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()

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. 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'analyse 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 (extension .dbc) ne sont pas gres. Il est ncessaire d'importer individuellement chaque fichier (extension .dbf) dans l'analyse. 5. Validez. Les tables sont importes dans l'analyse. 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 WinDev / 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 "Synchronisation" 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.

1.2.2 Utilisation de lAccs Natif xBase / FoxPro


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).

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'utilisation 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 enregistrement. 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.

1.2.3 Importation de la structure des fichiers


Les tapes de l'importation Pour raliser cette importation sous lditeur danalyses : 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 donnes 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 programmation.

334

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

335

Le traitement d'initialisation de la fentre est par exemple :


// Lecture des commandes HLitPremier(COMMANDE, Date) SI HEnDehors() = Faux ALORS // Recherche du produit // correspondant HLitRecherche(PRODUIT, NumPro, ... COMMANDE.NumPro) FichierVersEcran FIN

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 standard. Il suffit pour cela de spcifier dans les informations 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 WebDev. Il sagit dun SGBD Relationnel redistribuable gratuitement. Cependant, la taille disponible sur un Pocket PC tant restreinte et le systme dexploitation du Pocket 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 enregistrements. 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 correspondent 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 336 Partie 7 : Gestion des fichiers de donnes de donnes Access (fichier ".MDB") pralablement 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 donnes 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.

2. Manipulation d'une base de donnes Pocket PC (CEDB) depuis le poste PC Si vous possdez WinDev standard, il est galement possible de crer une application WinDev permettant de manipuler directement la base de donnes Pocket PC. Ces manipulations sont galement ralises grce aux fonctions cdbxxx. Remarque : 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). 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 transforme automatiquement en base de donnes Pocket PC (fichier ".CDB"). Cette base de donnes Pocket PC peut tre manipule par une application WinDev Mobile. Si vous possdez WinDev standard, il est galement possible de crer une application WinDev permettant de manipuler la base de donnes Pocket PC. Ces manipulations sont ralises grce aux fonctions cdbxxx. La synchronisation entre la base de donnes du Pocket PC et la base de donnes Access est ralise 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 prsente 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 galement possible de crer une application WinDev permettant de manipuler cette base de donnes standard du Pocket PC. Ces manipulations sont ralises grce aux fonctions cdbxxx. La synchronisation entre la base de donnes du Pocket PC et les donnes visualises grce Outlook est ralise par ActiveSync. Remarque : 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). 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 standard 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, Rendez-Vous et Tches. Pour plus de dtails, consultez laide en ligne.

Partie 7 : Gestion des fichiers de donnes

337

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- Annule le critre de recherche en cours che cdbCol Renvoie une caractristique d'une colonne de l'enregistrement en cours (valeur, type, identifiant ou nom) cdbDateHeureVer- Transforme une variable de type DateHeure en une valeur compatible avec une colonne sEntier 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- Transforme la valeur d'une colonne de type date et heure (entier sans signe sur 8 teHeure 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 spcifique 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 donnes cdbTrouve Vrifie si l'enregistrement en cours correspond la recherche en cours

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 description dans l'analyse, plusieurs fichiers logiques dcrits dans l'analyse manipulant le mme fichier physique. Par dfaut, la description du fichier CLIENT prsente dans l'analyse est lie au fichier Client.fic.

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 sauvegarde 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.

Pour utiliser le fichier Client2000.Fic, il est ncessaire 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)

338

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

339

D'autres fonctions peuvent intervenir dans la dfinition et la manipulation des alias : HChangeNom Modifie le nom physique d'un fichier de donnes HChangeRep Modifie le chemin d'accs un fichier de donnes

Editeur de fentres ou de pages : les champs et les tables ne peuvent pas tre directement associs 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'utiliser 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 rubrique Nulle ne seront pas pris en compte. Par exemple, 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. 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 antrieure la version 75205 peut rendre la proprit ..Null incohrente (renverra vrai ou faux). L'criture d'enregistrements par une application utilisant la version de WinDev 75205 ou suprieure fixe la proprit ..Null Faux mme si la rubrique a t mise Nulle par une application utilisant WinDev.

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


La manipulation des deux fichiers se fera de la mme faon avec les fonctions HyperFileSQL classiques. Fichier physique associ un alias : Par dfaut, le nom spcifi pour l'alias est attribu au fichier physique correspondant l'alias. Pour associer l'alias un fichier physique de nom diffrent, il suffit d'utiliser les fonctions HChangeNom 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.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 supporte pour ce fichier. Dans ce cas, il sera possible 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 rubrique. Cette option permet de dfinir la valeur nulle comme valeur par dfaut de la rubrique. En programmation, de deux proprits : Null Permet de : dfinir la valeur NULL comme valeur par dfaut pour une rubrique d'un fichier lors de sa description dynamique. associer ou non la valeur NULL une rubrique d'un fichier.

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 enregistrements 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 fonction HAlias. d'associer la description de l'alias au fichier physique Client.Fic (fonction HChangeNom). Remarque : Cette mthode permet de grer plusieurs contextes HyperFileSQL pour un mme fichier physique.

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 support". 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 :
EcranVersFichier() SI SAI_Note = NULL ALORS Cours.Note..Null = Vrai FIN

2.1.6 Manipuler le fichier alias et ses rubriques


Editeur de code : Pour viter l'erreur "Identificateur 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 :
Commande2000 est une source de ... donnes HAlias(Commande,Commande2000)

2.1.3 Fonctions de gestion des alias


Plusieurs fonctions permettent de manipuler les alias : HAlias HAnnuleAlias Cre un alias logique d'un fichier ou annule tous les alias existants Annule un alias prcdemment dclar avec la fonction HAlias

Attention : L'utilisation du mot-cl Externe est possible mais entrane un ralentissement non ngligeable l'excution.

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

340

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

341

// Ajout ou modification de // l'enregistrement HAjoute(Cours)

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 calcul, 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.
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)

Si le mot de passe est incorrect, la fonction HErreurMotDePasse 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 accessible.

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'identifier 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 automatiquement 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 programmation, sans utiliser l'identifiant automatique propos par WinDev / WebDev.

2.4.2 Gestion manuelle


La mthode pour grer manuellement un identifiant 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 exemples avancs, consultez le chapitre sur la rplication.
HLitDernier(FACTURE,NUMFACT) EcranVersFichier FACTURE.NUMFACT=FACTURE.NUMFACT+1 HAjoute(FACTURE)

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 utilisateurs 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 lditeur danalyses. Il ne peut pas tre modifi par programmation. 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 modifier 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 donnes, protg par mot de passe avec cryptage des 342 Partie 7 : Gestion des fichiers de donnes 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 programmation 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 maximale du mot de passe est illimite. Le mot de passe peut tre pass au fichier de donnes de deux faons : soit en passant le mot de passe en paramtre aux fonctions HOuvre, HCration, HCrationSiInexistant. soit en utilisant la fonction HPasse avant douvrir le fichier ou de le crer. Au moment o WinDev / WebDev interprte la fonction HCration ou HCrationSiInexistant, le mot de passe doit tre connu par la fonction HPasse sil nest pas prcis dans les paramtres des fonctions.
HPasse(CLIENT, "Code secret")

2.4.3 Test de l'unicit d'une cl


Que l'identifiant soit gr manuellement ou automatiquement par WinDev / WebDev, il faut vrifier l'unicit de la cl lors d'une modification d'un enregistrement 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 exemple que : si un enregistrement est supprim dans le fichier pre (ou propritaire), les enregistrements correspondants 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 rfrentielle


Par exemple, lors de la suppression d'un enregistrement dans un fichier, il faut vrifier que les enregistrements du fichier li qui correspondent l'enregistrement supprim ont galement t supprims. Partie 7 : Gestion des fichiers de donnes 343

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 commande. "PRODUIT" contenant les rfrences des produits. L'identifiant correspond au numro de produit. "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 commandes) 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 appartiennent pas mais qui appartiennent au client prcdemment 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 automatique 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 diffrents types de liaisons sont dcrits dans le paragraphe suivant. La gestion de lintgrit rfrentielle doit avoir t active dans le projet avec la fonction HGreIntegrit(Vrai) dans le code dinitialisation du projet.

facultative, de complment, partage, complexe.

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 HErreurIntgrit doit ncessairement tre teste aprs chaque fonction crivant dans le fichier : HAjoute, HModifie, HEcrit, HSupprime, HRaye, TableEnregistre, TableSupprime. La fonction HErreurIntgrit retourne Vrai si une erreur dintgrit sest produite. La fonction HErreurInfo retourne le dtail de l'erreur : Si la fonction HErreurIntgrit n'est pas appele, l'erreur 15 (Erreur d'intgrit) sera automatiquement gnre lors du prochain appel une fonction de gestion de fichier. Cette erreur ne peut pas tre ignore : tous les fichiers sont ferms et l'excution du programme est abandonne. Exemple en monoposte (gestion automatique des blocages et gestion de lintgrit)
HGreIntegrit(Vrai) // Suppression du client // numro Num HLitRecherchePremier(CLIENT,... IdClient,Num) SI HTrouve() ALORS SI HSupprime(CLIENT) ALORS

2.5.4 Programmation du contrle automatique 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 dfinir si le contrle automatique de lintgrit et / ou des doublons doit tre activ. Ce choix nimplique aucune ligne de code supplmentaire dans votre projet. Activation par programmation Le mcanisme de contrle automatique de lintgrit rfrentielle peut tre activ par la fonction HGreIntegrit (Vrai) ou dsactiv par la fonction HGreIntegrit (Faux). Attention : L'activation du mcanisme de contrle automatique de l'intgrit rfrentielle active implicitement le mcanisme de gestion des doublons (HGreDoublon). Il n'est pas possible de dsactiver le mcanisme de contrle des doublons si celui du contrle de l'intgrit est actif (HGereIntegrit (Vrai)). Remarques : Le mcanisme de contrle de l'intgrit correspond des recherches effectues dans les fichiers relis lors des appels aux fonctions d'criture dans les fichiers de donnes (HAjoute, HModifie, 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

Info("Client supprim") SINON SI HErreurIntegrit() ALORS Erreur("Impossible de "+... "supprimer ce client",... "des commandes subsistent") FIN SINON Erreur("Client non trouv") FIN

Exemple en rseau
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, HSupprime, HAjoute, HEcrit et HModifie), la vrification de l'intgrit effectue par WinDev / WebDev en fonction du type de liaison. Liaison Complment (0,1) - (1,1) 1 Liaison Par- Liaison Parta- Liaison Parta- Liaison Facul- Liaison Paraltage (x,n) - ge (1,n) - ge (0,n) - tative (0,1) - lle (1,1) (1,1) (0,1) (0,1) (0,1) (1,1)

2.5.2 Dfinitions
Les dfinitions des diffrents types de liaisons disponibles 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, 344 Partie 7 : Gestion des fichiers de donnes

HRaye 1 1 Dev. HSupprime HAjoute 2 2 Dev Dev HEcrit HModifie 3 et 4 3 et 4 5 Dev 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 propritaire (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)

Partie 7 : Gestion des fichiers de donnes

345

2.6 Gestion des fichiers "mmo"


2.6.1 Mmo texte et mmo binaire
Les fichiers "mmo" peuvent tre grs en WLangage. Les fichiers "mmo" sont des fichiers complmentaires aux fichiers de donnes. Ils permettent d'associer aux enregistrements du fichier de donnes 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'enregistrement 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 346 Partie 7 : Gestion des fichiers de donnes 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 crypts 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 manipules en WLangage pour les affecter ou pour rcuprer 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)
ANIMAL.PHOTO=CHIEN.PHOTO

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 HAttacheMmo. Lorsqu'un champ image est modifi par les fonctions 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 rubrique avec la fonction HAttacheMmo. La fonction HAttacheMmo permet de donner une information : sur le type du fichier,

sur le mmo lui-mme.

WB Les rubriques mmo binaire, son et OLE


existent par compatibilit avec WinDev. Rcupration Un mmo binaire est rcupr avec la fonction HExtraitMmo. Cette fonction sauve le contenu du mmo binaire dans un fichier. Remarque : La fonction FichierVersEcran / FichierVersPage 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 donnes 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 rpertoire en dur. En utilisation finale, le lecteur dinstallation 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 rpertoire de stockage des fichiers. La modification du nom et/ou du rpertoire est ralise en programmation. Elle doit tre effectue avant la cration ou l'ouverture du fichier.

2.7.2 Modification du rpertoire de stockage


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 permettent de spcifier un rpertoire diffrent du rpertoire dcrit sous lditeur danalyses. Le rpertoire dfini dans l'analyse est le rpertoire demand. Le rpertoire du fichier sur le disque est le rpertoire physique. Par exemple :
// Les fichiers dcrits sur // le lecteurC et // installs sur le lecteur S HSubstRep("C:\Rep1",... "S:\RpertoireDesDonnees") HCrationSiInexistant(NomFic1)

partir d'un fichier par la fonction HAttacheMmo


HAttacheMmo(ANIMAL,... PHOTO,"CHIEN1.TIF",HMmoImg)

Partie 7 : Gestion des fichiers de donnes

347

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 donnes en programmation. La fonction HChangeNom permet de donner un nom diffrent de celui qui a t dfini dans la description 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).

Le fichier ".REP" permet de localiser facilement les fichiers de donnes qui ont t utiliss par l'application 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 manipuler les fichiers de l'application ou du site, et principalement 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 retrouver les fichiers physiques utiliss par l'application ou par le site afin de les modifier. Pour plus de dtails, consultez Modification automatique des fichiers de donnes, page 360. "manuellement" sauf dans des cas trs exceptionnels, 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 registres 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 description du fichier (onglet "Notes"). nom logique. chemin complet du fichier physique. Ces informations sont renseignes automatiquement par le moteur HyperFileSQL Mobile.
Remarque : Le .REP ne doit pas tre modifi

Par exemple :

3. Lecture du fichier .REP HListeREP Liste les diffrents fichiers et leur chemin physique associ prsents dans le fichier .REP

Remarque : Si une application ou un site utilise plusieurs fichiers physiques avec le mme nom logique (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 : Fonctions permettant de grer le .REP 1. Gestion du .REP 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. 2. Cration et modification du fichier .REP HCration Cre un fichier de donnes physique (et renseigne le fichier .REP si la gestion du .REP est active) fOuvre fEcritLigne fFerme Ouvre le fichier Ecrit une nouvelle ligne dans le fichier Ferme le 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 complet 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 lanalyse (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").

La structure de la ligne ajoute doit suivre la norme suivante : LOCALIZA- GUID Tab Nom logi- Tab Chemin TION= Fichier que fichier du fichier physique 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 concernant 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 : ANALYSISGUID= GUID Analyse 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 lanalyse (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 : Tab Chemin du fichier physique

HCrationSiI- Cre un fichier de donnes physinexistant que s'il n'existe pas dj (et renseigne le fichier .REP si la gestion du .REP est active) HOuvre Ouvre un fichier de donnes physique et renseigne le fichier .REP si ncessaire (ouverture d'un fichier n'appartenant pas l'analyse par exemple)

Ce fichier est automatiquement cr dans le rpertoire de l'application ou du site et renseign par le moteur HyperFileSQL.

Remarque : Les informations donnes par les fonctions HChangeRep, HSubstRep, et HChangeNom seront prises en compte lors de la cration et de la mise jour du fichier ".REP".

LOCALIZATION= GUID Fichier

Tab Nom logique fichier

348

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

349

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 :

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 fonction HDcritIndexFullText pour valider la cration de l'index. A tout moment, il est possible de modifier la composition d'un index full-text existant : il suffit de cliquer sur le bouton "Editer l'index" dans la partie 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.

Pour plus de dtails sur les caractristiques de la chane rechercher, consultez le paragraphe "Syntaxe de la valeur de recherche". Exemple : Dans cet exemple, SAI_Rechercher est un champ de saisie et IdUserConnect est une variable..
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())

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 simple recherche du type "contient" : la ponctuation n'est pas prise en compte.

2.8.4 Comment effectuer une recherche full-text ? 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 "Description des rubriques" du menu contextuel). 2. Cliquez sur l'icne . La fentre de dfinition de l'index full-text apparat. Slectionnez les rubriques 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 modifiez 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, gestion des balises HTML, gestion de la casse, gestion de l'accentuation. 5. Validez la fentre de description des rubriques. 6. Enregistrez et gnrez l'analyse. Lors de la gnration 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 description des rubriques et de cliquer sur le lien "Crer un index full-text sur la rubrique". Les recherches full-text sont effectues grce aux requtes : requtes cres sous l'diteur de requtes 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 fulltext, 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 construire la chane rechercher) ou correspondre un paramtre. Pour plus de dtails sur les caractristiques 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 automatiquement dfinie : seuls les enregistrements dont la pertinence est suprieure 0 seront affichs dans le rsultat de la requte. Recherche full-text : Requte en code SQL Pour crer une requte ralisant une recherche fulltext 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 rubriques n'est pas important). <Condition> correspond la chane rechercher.

2.8.2 Comment faire une recherche "fulltext" ?


Pour effectuer une recherche "full-text", il est ncessaire de : 1. Crer un index full-text dans le fichier de donnes concern par cette recherche. 2. Crer une requte pour effectuer la recherche full-text. 3. Analyser et afficher le rsultat de la requte.

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 pertinence, il faut que le paramtre soit renseign pour valuer le rsultat. Pour qu'une requte cre avec l'diteur de requtes ait le MATCH dans le WHERE, il faut que la pertinence ne soit pas affiche dans le rsultat.

350

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

351

Exemple avec pertinence :


SELECT MATCH(XX, YY, ZZ) AGAINST ... ({ParamFullText}) AS ... PertinenceFullText FROM TABLE WHERE <Paramtres> AND PertinenceFullText > 0 ORDER BY PertinenceFullText DESC

2.8.5 Analyser le rsultat d'une requte "full-text"


Le rsultat d'une requte full-text donne pour chaque enregistrement du fichier de donnes concern 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 prsent dans l'enregistrement. le nombre de mots dans l'enregistrement et leur nombre de rptitions. le rapport entre les enregistrements qui contiennent les mots recherchs et ceux qui ne contiennent pas les mots recherchs. En effet, plus le mot recherch est prsent dans tous les enregistrements, et moins la pertinence sera importante. ... 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.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 ensemble d'critures indissociables sur des fichiers HyperFileSQL. Par exemple, dans une application ou un site bancaire, 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).

Exemple avec pertinence :


SELECT * FROM TABLE WHERE <Paramtres> AND MATCH(XXX, YYY, ZZZ) AGAINST({ParamFullText }) > 0

Syntaxe de la valeur de recherche La valeur de recherche peut contenir les lments suivants :
Elment Signification Un mot tout Le mot indiqu sera recherch. seul La pertinence sera augmente si le texte contient ce mot. Exemple : "WinDev" recherche le mot "WinDev Deux mots Recherche l'un ou l'autre des mots. spars par Exemple : "WinDev WebDev" recherun espace che les textes contenant soit "WinDev" soit "WebDev". Un mot pr- Le mot indiqu est obligatoire. cd du Exemple : "+WinDev" recherche les texsigne "+" tes contenant obligatoirement "WinDev". Un mot pr- Le mot indiqu ne doit pas tre prsent cd du dans le texte. Exemple : "-Index" recherche les textes ne signe "-"
contenant pas "Index".

2.8.6 Grer les index full-text par programmation


Le WLangage propose plusieurs fonctions WLangage permettant de grer les index full-text : HDcritIndexFullText Dcrit par programmation un index full-text pour un fichier de donnes cr par programmation. Renvoie la liste des index full-text d'un fichier (d'une requte ou d'une vue) reconnus par le moteur HyperFileSQL

HListeIndexFullText

Un mot prcd du signe "~" Un ou plusieurs mots entours de guillemets

Si le texte contient le mot indiqu, la pertinence sera diminue.

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 recherchs. Un mot suivi La recherche est une recherche du du signe "*" type "Commence par" le mot indiqu.

Remarques : La cration d'un index full-text dans un fichier de donnes cr par programmation peut tre ralise grce une variable de type Description d'IndexFullText. La fonction HRindexe permet de r-indexer les index full-text.

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 uniquement 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 transaction. 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 transaction ne doit pas afficher de fentres ou de pages, raliser des parcours de fichiers, etc. Partie 7 : Gestion des fichiers de donnes 353

352

Partie 7 : Gestion des fichiers de donnes

Ce code doit uniquement comprendre les oprations 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 transaction.

2.9.3 Principes
Principe des transactions sur des fichiers HyperFileSQL Chaque opration d'criture effectue lors d'une transaction est mmorise dans un fichier des transactions. A tout moment, il est possible d'annuler 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 automatiquement abandonne. Appel de la fonction FinProgramme, la transaction est automatiquement abandonne. Annulation d'un test depuis l'diteur, la transaction est automatiquement abandonne. Panne de courant ou arrt brusque de l'application 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 HTransactionDbut, 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 particuliers, page 355.

passe, les fichiers manipuls aprs la fonction HTransactionDbut seront automatiquement mis en transaction. 2. Commencez la transaction avec la fonction HTransactionDbut. Cette fonction permet ventuellement de dfinir le nom du journal des transactions. 3. Effectuez vos oprations. Toutes les oprations d'criture sur les fichiers en transaction sont automatiquement enregistres dans le fichier de transaction. 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 HTransactionAnnule). 5. Spcifiez la fin de la transaction avec la fonction HTransactionFin. La transaction est valide. Tableau rcapitulatif des fonctions WLangage utilises (pour une base de donnes HyperFileSQL) HGreTransaction Active ou non la gestion des transactions (la gestion des transactions est active par dfaut) Dbute la transaction Valide la transaction Annule la transaction en cours Annule une transaction qui a chou (panne de courant) Permet de savoir si une transaction a t interrompue (la transaction n'a t ni valide, ni annule). Cas dune panne de courant. Si un enregistrement du fichier de donnes spcifi est considr comme tant en transaction mais n'appartient aucune transaction en cours, il est automatiquement libr

Manipuler les enregistrements lors d'une transaction : les rgles suivre Les enregistrements modifis pendant la transaction 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 gestion des blocages des enregistrements en transaction. En effet, les enregistrements manipuls pendant la transaction sont automatiquement bloqus en criture. Dans une application WinDev en rseau, si l'utilisateur tente de modifier un enregistrement en transaction, un message apparatra lui demandant 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 HTransactionDbut est utilise en cours de transaction. 70034 : La dernire transaction a chou Vous tentez d'utiliser un enregistrement appartenant une transaction qui a chou (panne de courant, ...). Le programme est relanc sans avoir annul la transaction. Dans ce cas, il est conseill d'annuler la transaction qui a chou (voir ci-dessous).

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 HTransactionInterrompue dans le code d'initialisation du projet par exemple. 2. Si la transaction a t interrompue, effectuez une des oprations suivantes pour rtablir la cohrence de la base de donnes : appel de la fonction HTransactionAnnule, appel des fonctions HTransactionDbut/HTransactionFin, lancement de l'outil WDTRANS. Exemple :
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

HTransactionDbut HTransactionFin HTransactionAnnule HTransactionAnnule HTransactionDbut HTransactionFin Outil WDTRANS HTransactionInterrompue

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 HTransactionDbut, soit avec la fonction HTransactionAnnule, soit avec l'outil redistribuable WDTrans. Attention : La restauration de la cohrence de la base peut tre relativement longue.

2.9.4 Manipuler les transactions par programmation


Mettre en place la gestion des transactions 1. Si vos fichiers sont protgs par mot de passe, ouvrez tous les fichiers utiliss pendant la transaction avant le dbut de la transaction. Si vos fichiers ne sont pas protgs par mot de

HTransactionLibre

Autre solution : il est galement possible de grer l'erreur 70034 dans le code d'initialisation du projet grce au mot-cl QUAND EXCEPTION. Ainsi, quand l'erreur 70034 surviendra, la cohrence de la base de donnes sera restaure soit par la fonction 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.

354

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

355

Suppression du journal de transaction Le journal de transaction est un fichier HyperFileSQL 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.

soit le contenu de l'enregistrement aprs l'opration (lors d'un ajout par exemple). Identifiant du poste ralisant la transaction Par dfaut, le poste est identifi par un numro unique interne et par le nom du poste (nom dfini sous Windows). Pour identifier simplement le poste effectuant les oprations en transactions, la fonction HPoste permet de dfinir un identifiant spcifique au poste. Cet identifiant remplace le nom du poste. Cet identifiant est enregistr dans le journal des oprations en transaction et peut tre consult avec WDTRANS. Par dfaut, le poste ralisant la transaction correspond 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 fonction HPoste permet de dfinir un identifiant spcifique au poste de linternaute. Pour dfinir un identifiant unique par internaute, utilisez la fonction NavigateurAdresseIP. Cet identifiant est enregistr dans le journal des oprations en transaction et peut tre consult avec WDTRANS.

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 associ 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'opration (lors d'une suppression par exemple),

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 donnes prcdemment sauvegards grce WDJournal. Grce au contenu du journal,

WDJournal pourra reconstituer les fichiers, opration 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
Aucun journal (option par dfaut) Journal des critures

Action ralise

Fichiers crs automatiquement


Aucun

Toutes les oprations d'ajout, de modifi- <Nom du fichier>.JNL.fic cation et de suppression seront enregistres dans le journal. Quand choisir cette option ? Pour connatre tout moment qui a modifi le fichier et quelle est la modification effectue.

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 WinDev / 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 donnes, dernire sauvegarde ralise avec WDJournal, ...). 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, modification, suppression, lecture. 356 Partie 7 : Gestion des fichiers de donnes 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 opration ralise sur un enregistrement spcifique. Conserver un historique de l'utilisation d'un fichier (pour raliser des statistiques par exemple). Exemples : La dernire sauvegarde date du mois dernier. Vous avez fait une erreur de manipulation. Grce au journal, vous pouvez rcuprer toutes vos donnes, sans perdre celles du dernier mois de travail! Un utilisateur a saisi pendant toute une matine

Historique des accs au Seuls les ordres HyperFileSQL utiliss JournalOpration.fic fichier pour accder au fichier seront mmori- JournalIdentification.fic ss. Quand choisir cette option ? Pour connatre tout moment les oprations qui ont t effectues sur le fichier. Attention : il est impossible de connatre la valeur de l'enregistrement avant et aprs modification. Journal des critures + Histo- Toutes les oprations d'ajout, de modifi- <Nom du fichier>.JNL.fic rique des accs cation et de suppression seront enregis- JournalOpration.fic tres dans le journal. JournalIdentification. fic 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.

Partie 7 : Gestion des fichiers de donnes

357

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 donnes dans leur tat actuel avec l'utilitaire WDJournal. 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 ncessaire le rpertoire des diffrents fichiers crs par la journalisation. Attention : les fichiers JournalIdentification et JournalOpration sont toujours prsents dans le mme rpertoire. Par dfaut, ces fichiers sont crs dans le rpertoire de l'application ou du site. Ce rpertoire 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'enregistrer 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 rpertoires (et mme des disques) diffrents de ceux utiliss pour les fichiers de donnes. Dfinir la journalisation au niveau des rubriques Par dfaut, toutes les rubriques d'un fichier journal sont automatiquement journales. Cependant, 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 (information peu importante et peu sujette modification), 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 contextuel). 2. Slectionnez la rubrique voulue. 3. Dans l'onglet "Avanc", dcochez l'option "Journaler la rubrique". 358 Partie 7 : Gestion des fichiers de donnes

Gnrer l'analyse Lorsque la journalisation a t dfinie dans l'diteur 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 donnes 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.

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 "Description du fichier de donnes" du menu contextuel). 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 donnes.

HJournalInfo

Ajoute des commentaires dans le journal lors de l'enregistrement 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 rplication. Le contenu des fichiers existants est perdu. HJournalRedmarre Redmarre la journalisation du fichier. Cette journalisation a t arrte grce la fonction HJournalStop. Arrte la journalisation du fichier. Les manipulations effectues dans le fichier journal ne sont plus enregistres. Rgnre un fichier partir de son journal.

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 peuvent tre crs : JournalOpration.Fic Ensemble des oprations ralises sur les fichiers de donnes HyperFileSQL journals utiliss par lapplication ou par le site. Une opration correspond une fonction HyperFileSQL.

2.10.4 WDJournal : Utilitaire de gestion des journaux


L'utilitaire WDJournal permet de : Sauvegarder et restaurer vos fichiers de donnes. 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.

HJournalStop

HRgnreFichier

Des proprits WLangage permettent galement de grer les fichiers journals : 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- Permet de grer le rpertoire du nal fichier journal dcrit dans l'analyse. Il est ainsi possible de : Connatre le rpertoire du journal pour un fichier dfini sous l'diteur d'analyses ou dfini dynamiquement. Dfinir le rpertoire du journal pour un fichier dfini dynamiquement.

JournalIdentifica- Liste des emplacements physition.Fic ques de tous les fichiers journals de lapplication ou du site. *JNL.Fic Fichier cr pour chaque fichier journal. Contient les sauvegardes des enregistrements pour toutes les oprations ralises par l'utilisateur.

2.10.5 Manipuler les journaux par programmation


La gestion des journaux est automatique. Cependant, plusieurs fonctions du WLangage permettent de manipuler des journaux : HChangeRepJnl Modifie dynamiquement l'emplacement des fichiers du journal correspondant un fichier HyperFileSQL (fichier *JNL et fichiers JournalOpration et JournalIdentification). HGreJournal Permet d'activer ou non la gestion des journaux. Cette gestion est active par dfaut.

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 "Description du fichier de donnes", onglet "Divers").

Partie 7 : Gestion des fichiers de donnes

359

2.11 Modification automatique des fichiers de donnes


2.11.1 Principe
La modification automatique des fichiers de donnes permet de mettre jour la description des fichiers de donnes prsents sur les postes utilisateurs 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 rubriques, ...), 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 donnes, 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 donnes, l'installation de la mise jour de l'application sur les postes utilisateurs doit tre obligatoire (WinDev uniquement).

2.11.3 Raliser la modification automatique des donnes


Poste de dveloppement La modification automatique des fichiers de donnes est systmatiquement ralise lors de la gnration de l'analyse sur le poste de dveloppement. Pour reporter la modification automatique sur les fichiers de donnes prsents sur les postes des utilisateurs 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 automatique peut tre effectu lors de la cration du programme dinstallation. Poste de dploiement Lors de l'installation d'une mise jour avec modification automatique des fichiers de donnes, l'utilisateur ou le responsable du site pourra configurer la modification automatique en cliquant sur le bouton "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'application ou du site. Par dfaut, ce fichier est nomm "LOGMODAUTO.TXT" et est cr dans le rpertoire d'installation de l'application ou du site. Lister les fichiers de donnes au format HyperFileSQL Classic sur lesquels la modification automatique 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 contenant des fichiers de donnes au format Hyper File 5.5 qui ne sont pas trouvs automatiquement 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'installation 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'installation (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 automatique 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 pouvoir utiliser l'application ou le site. L'outil WDModFic permet de forcer la modification automatique des fichiers de donnes.

2.11.2 Dans quels cas la modification automatique des donnes est-elle ncessaire ?
La modification automatique des donnes est ncessaire dans les cas suivants :

Poste de dveloppement Cas 1 : Modifications de la structure des fichiers de donnes au format HyperFileSQL 7 L'application / le site utilise des fichiers de donnes au format HyperFileSQL 7. La structure des fichiers de donnes a t modifie (ajout ou suppression de rubriques, ...).

Postes des utilisateurs / Serveur de donnes 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. 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 effectue lors de la mise jour de l'application ou du site. La structure des fichiers sera ainsi identique celle du poste de dveloppement. 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.

2.11.4 Notes
Excuter plusieurs fois la modification automatique 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'installation 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> <HeureModifAuto>)" s'il s'agit d'une modification automatique 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 HyperFileSQL 7.

Cas 2 : L'application / le site utilise Migration des des fichiers de donnes au forfichiers de don- mat HyperFileSQL Classic. nes Hyper File 5.5 (WinDev 5.5 ou WebDev 1.5) vers HyperFileSQL Classic Cas 3 : Modifications de la structure des fichiers de donnes au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5) L'application / le site utilise des fichiers de donnes au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5). La structure des fichiers de donnes a t modifie (ajout ou suppression de rubriques, ...)..

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).

360

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

361

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 (fonction HDcritRubrique), valider la description du fichier (fonction HDcritFichier). 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 fentre, 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 temporaire 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.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 applications ou de vos sites, nous vous conseillons de "dbrancher" les gestions inutilises. Les diffrentes 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.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 Gestion 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 application ou dun site. Pour plus de dtails sur son utilisation, 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 diffrents 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.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). HFermeAnalyse HListeAnalyse Ferme une analyse ouverte par HOuvreAnalyse Retourne le nom des analyses et le lecteur sur lequel elles sont installes Retourne les informations sur les cls d'une analyse Retourne le nom des fichiers d'une analyse Retourne la structure (rubriques) d'un fichier Ouvre une analyse pour accder ses fichiers de donnes HRcupreRubrique HVersRubrique Retourne le contenu de la rubrique spcifie pour l'enregistrement en cours Ecrit le contenu de la rubrique spcifie pour l'enregistrement en cours

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 paragraphe 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.6 La gestion des triggers


Un trigger correspond lassociation dune procdure 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 dsactive grce la fonction HGreTrigger.

HListeCl HListeFichier HListeRubrique HOuvreAnalyse

Remarques : La fonction HOuvreAnalyse accepte en paramtre 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, HListeRubrique et HListeCl, il n'est pas ncessaire d'ouvrir l'analyse avec HOuvreAnalyse. Pour rcuprer la structure des fichiers de donnes 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 description de l'analyse (WDD) soit install dans la bibliothque du projet (WDL) ou dans le rpertoire de l'analyse.

2.14.2 Gestion du journal


Le journal est un fichier particulier o sont mmorises 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 HGreJournal permet de dbrancher la gestion des journaux.

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.

362

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

363

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. 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 HyperFileSQL. Ce nom permettra d'identifier la base de donnes HyperFileSQL dans les programmes externes. 7. Cliquez sur le bouton "Dtail". 8. Slectionnez le fichier WDD correspondant l'analyse (bouton "Parcourir"). 9. Dans la liste des analyses, slectionnez l'analyse voulue puis slectionnez le rpertoire des fichiers de donnes correspondant (bouton "Parcourir"). Tous les fichiers de donnes HyperFileSQL correspondant l'analyse slectionne sont regroups 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 driver ODBC sur HyperFileSQL. Pour plus de dtails sur le driver ODBC sur HyperFileSQL Classic, consultez laide en ligne.

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 utilisateur".

6. Saisissez le nom de la source de donnes HyperFileSQL. Ce nom permettra d'identifier la base de donnes HyperFileSQL dans les programmes externes. 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'analyse voulue puis slectionnez le rpertoire des fichiers de donnes correspondant (bouton "Parcourir"). Dans ce rpertoire tous les fichiers de donnes HyperFileSQL correspondant l'analyse slectionne 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 seulement depuis des programmes externes via le driver ODBC sur HyperFileSQL.

2. Dfinir l'URL sur la connexion ODBC systme (par exemple "hfodbc") :


String jURL = "jdbc:odbc:hfodbc"; //Connexion Connection Contact = ... DriverManager.getConnection (jURL,"<user>", "<pass>");

3. Interroger en SQL la base de donnes HyperFileSQL. Par exemple :


// 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();

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 :
// 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");

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 driver 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 HyperFileSQL 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 spcialis 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 pouvez inclure l'installation du driver ODBC sur HyperFileSQL.

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 spcialis 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/WebDev. Par dfaut, le provider OLE DB est install dans le rpertoire "C:\Program Files\Fichiers communs\PC SOFT\18.0\OLEDB".

2.16.3 Configuration
Pour utiliser le driver ODBC sur HyperFileSQL, configurez le driver ODBC : 1. Lancez l'administrateur de donnes ODBC (ODBCAD32.EXE) sur votre poste. Utilisez par exemple l'option "Dmarrer .. Excuter" de Windows et saisissez "ODBCAD32.EXE". 2. Slectionnez l'onglet "Base de donnes Utilisateur". 3. Cliquez sur le bouton "Ajouter". 4. Slectionnez le driver "HyperFileSQL". 5. Cliquez sur le bouton "Terminer".

364

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

365

Remarque : Pour qu'une application puisse utiliser un provider OLE DB, il est ncessaire d'installer le composant MDAC (Microsoft Data Access Component) 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 fournir une chane de connexion. Cette chane dfinit le provider utiliser ainsi que les paramtres de connexion fournir ce provider pour tablir la connexion 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>

Remarques : Lors d'un accs par le provider OLE DB pour HyperFileSQL, les fentres d'assistance automatique 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 :
/Provider=PCSOFT.HFSQL;Initial Catalog=c:\Ma Base HyperFileSQL

3. LANGAGE SQL
3.1 Prsentation

Connexion une base HyperFileSQL Classic en prcisant l'analyse :


Provider=PCSOFT.HFSQL;Data Source=c:\Ma Base HyperFleSQL\ ... MonAnalyse.wdd;Initial ... Catalog=c:\Ma Base HyperFileSQL

Pour plus de dtails, consultez laide en ligne. Utilisation de l'analyse dans une connexion une base de donnes HyperFileSQL Classic Dans le cas d'une connexion une base de donnes 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 automatiquement. 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.

Connexion une base HyperFileSQL Client/ Serveur :


Provider=PCSOFT.HFSQL;Data Source=serveurbdd. masociete.fr:4910;User... ID=admin;Password=secret;... Initial Catalog=MaBase

Un programme dvelopp avec WinDev ou WebDev peut accder une base de donnes selon plusieurs 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, HExcuteRequteSQL). Les fichiers HyperFileSQL peuvent tre interrogs : Par des requtes cres par lditeur de requtes. Pour plus de dtails sur la cration des requtes et la manipulation de lditeur de requtes, consultez le manuel "Gnrateur dtats et de requtes". Par des requtes SQL saisies directement sous lditeur de code (fonction HExcuteRequteSQL). 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 AND AS ASCII BETWEEN BOTTOM CBRT CHAR_LENGTH COALESCE COUNT DECODE DELETE ALL ANY ASC AVG BIN CASE CEIL - CEILING CHARACTER_LENGT H CONCAT CREATE TABLE DEGREES DESC 367

Connexion une base HyperFileSQL Client/Serveur avec des fichiers protgs par des mots de passe et utilisant l'alphabet russe :
Provider=PCSOFT.HFSQL;Data Source=serveurbdd.masciete.fr;... User ID=utilisateur;... Initial Catalog=MaBasRusse; ... Extended Properties= ... "Password=*:secret1; ... Password=Fichier2:secret2;... Language=KOI8-R"

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 protg par le mot de passe "secret2".

366

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

DISTINCT DROP TABLE FROM GROUP BY HEX INNER JOIN INSTR IS NULL / IF NULL LAST_INSERT_ID LEFT OUTER JOIN LENGTH LIMIT LPAD MAX MIN NEW_TIME NOT OCT ON ORDER BY POSITION RANDOM RIGHT ROUND RTRIM SET SOUNDEX SOUNDEX2 SUBSTR SUM TOP TRIM UNION UPPER VALUES

DIV EXISTS FULL OUTER JOIN HAVING IN INSERT INTO LAST_DAY LEFT LEN LIKE LOWER LTRIM MID MONTHS_BETWEEN NEXT_DAY NVL OCTET_LENGTH OR PATINDEX RADIAS REPLACE RIGHT OUTER JOIN RPAD SELECT SOME SOUNDEX LIKE SOUNDEX2 LIKE SUBSTRING SYSDATE TRANSLATE TRUNC UPDATE UUID WHERE

Remarque : Nous ne dtaillerons pas ces commandes. Nous vous conseillons de consulter si ncessaire 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 HExcuteRequte. Les requtes en langage SQL seront initialises par la fonction HExcuteRequteSQL. Pour rcuprer le contenu d'une requte SQL, il est ncessaire de disposer d'une source de donnes (ou d'un champ table fichier, combo, ... reli la requte). Important : Une variable de type "source de donnes" doit toujours tre dclare comme GLOBALE la fentre, la page ou au projet. Dans le cas contraire, 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) :
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

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 excuter. Les fonctions HExcuteRequte et HExcuteRequteSQL peuvent alors tre appeles avec un nom de requte au lieu d'une source de donnes. Exemple de requte SQL DELETE :
SI PAS HExcuteRequteSQL(... "RequeteDeSuppression",... "DELETE FROM CLIENT WHERE "+... "CLIENT.NumClient=346") ALORS Erreur(HErreurInfo()) SINON Info("Suppression effectue") FIN

qute pour de plus amples informations. Une requte en langage SQL (initialise par la fonction HExcuteRequteSQL) peut elle aussi accepter des paramtres. Il suffit pour cela que la chane constituant la requte SQL soit construite par concatnation avec les paramtres. Par exemple, pour rechercher un client dont le numro a t saisi l'cran :
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

Passage de paramtres une requte Une requte sur une base de donnes peut recevoir 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-

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.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 HOuvreConnexion. Excution de la requte avec la fonction HExcuteRequteSQL. Parcours du rsultat de la requte avec les fonctions HLitXXX. Fermeture de la connexion avec la fonction HFermeConnexion. Dclaration de la connexion Dans lditeur danalyses, sous le volet "Analyse", dans le groupe "Connexion", cliquez sur "Nouvelle connexion". Partie 7 : Gestion des fichiers de donnes 369

Exemple de requte en langage SQL :


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

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 "Analyse", dans le groupe "Cration", droulez "Importer" 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 requtes.

Toutes les autres commandes SQL non cites ne sont pas gres actuellement. 368 Partie 7 : Gestion des fichiers de donnes

Programmation Le code suivant permet dexcuter une requte SQL sur une base de donnes accessible via la connexion 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

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 enregistrement en mme temps, en bloquant le fichier ou l'enregistrement. Le WLangage permet de grer simplement le blocage d'un fichier ou d'un enregistrement du fichier. Blocages de fichiers par programmation 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.

WD WebDev
par une fonction de lecture bloquante (non obligatoire). 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 enregistrements et les fichiers peut les dbloquer. 5. Lorsqu'un fichier est bloqu, il n'est pas ncessaire 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 programme, 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 souhaite. Les modes de blocage sont les suivants : Mode Mono : Chaque fichier ouvert est automatiquement 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. Partie 7 : Gestion des fichiers de donnes 371

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 temporairement 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 programme pendant la dure du blocage; en lecture et en criture, dans ce cas le fichier (ou la partie du fichier) reste totalement inaccessible 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, supprim ou rcrit doit tre au pralable lu et bloqu, 370 Partie 7 : Gestion des fichiers de donnes

4.2 La gestion des blocages


4.2.1 Exemples illustrant la ncessit de bloquer
Plusieurs exemples de traitements des blocages sont prsents ci-dessous. Ils illustrent la ncessit de bloquer les fichiers. Pour afficher une liste permettant de slectionner un ou plusieurs enregistrements, il n'est pas ncessaire de bloquer les enregistrements affichs. Par contre, une fois la slection effectue, dans la plupart des cas, il faut lire l'enregistrement correspondant 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 enregistrements dans un fichier, il faut bloquer le fichier pour pouvoir calculer la valeur d'une rubrique 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 circonstances des traitements du fichier. Pour simplifier 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.

WD WebDev
Important : Les blocages restent actifs tant qu'une fonction de dblocage (de fichier ou d'enregistrement) ou d'criture (dbloque l'enregistrement crit) n'est pas excute.

Les traitements de P1 et P2 deviennent : Programme P1 BLOQUER(F1) BLOQUER(F2) <Traitement 1> DEBLOQUER(F1) DEBLOQUER(F2) Dans ce cas : P1 bloque F1. Programme P2 BLOQUER(F1) BLOQUER(F2) <Traitement 2> DEBLOQUER(F1) DEBLOQUER(F2)

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 traitement, selon l'ordre alphabtique des fichiers utiliss. 2. Effectuer le traitement dsir. 3. Dbloquer les fichiers. Illustrons ce conseil par un exemple. L'exemple cidessous prsente un cas "d'treinte mortelle". Supposons que les programmes P1 et P2 effectuent les traitements suivants ( ne pas faire !) : Programme P1 BLOQUER(F1) BLOQUER(F2) < Traitement 1 > DEBLOQUER(F1) DEBLOQUER(F2) Programme P2 BLOQUER(F2) BLOQUER(F1) <Traitement 2> DEBLOQUER(F2) DEBLOQUER(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 programmes, explique la mthode pour bloquer un fichier ou un enregistrement, dtaille le fonctionnement de chaque mode.

WD WebDev
s'excute en rseau, un message d'erreur s'affichera signalant que le mode Mono est inappropri pour ce type de fonctionnement. Un programme dvelopp avec le mode Mono ne pourra pas tre lanc plusieurs fois sous Windows. 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 HDbloqueFichier, HDbloqueTotalFichier) ou par la fermeture 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.

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 chaque fichier ds son ouverture. Le fichier sera dbloqu 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 WinDev. 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 simplement des programmes dont les fichiers ne sont pas partags par plusieurs postes ou par plusieurs programmes 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 lecture. 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

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 automatiquement 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 automatiquement tous les enregistrements bloqus par le mme programme. 372 Partie 7 : Gestion des fichiers de donnes

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 dblocage 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.

Partie 7 : Gestion des fichiers de donnes

373

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'utilisation, les programmes en mode Mono peuvent accder 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 message d'erreur s'affichera signalant que le mode Mono est inappropri pour ce type de fonctionnement Supposons par exemple deux programmes : P1 consulte le fichier "COMMANDE", P2 modifie le fichier "COMMANDE". P1 suit l'algorithme suivant :
// 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

Attention : si P2 supprime l'enregistrement "X" du fichier "COMMANDE" en mme temps que P1 consulte l'enregistrement "X" du fichier "COMMANDE", P1 ne verra pas que l'enregistrement "X" est supprim du fichier. Pour pouvoir partager un fichier entre un programme modifiant un fichier et un ou plusieurs programmes 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 suivre 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(HOLecture/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/HOLectureEcriture). La fonction HOuvre(HOLecture/HOLectureEcriture) ouvre le fichier sans le bloquer, qu'il soit dj bloqu par un autre programme ou non.

Le mode Mono convient aux programmes ne partageant pas leurs fichiers pour dvelopper simplement 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 utilises sont dtailles la fin de cette partie. Vous remarquerez quaucun de ces programmes ne comporte de fonctions de blocage de fichier.
// Recherche client selon son nom HLitRecherche(CLIENT,NOM,"MARTIN") Si HTrouve() alors Info ("Client trouv") Sinon Info("Client inconnu") Fin

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 compatibilit. Appel du mode Multi Pour appeler le mode Multi dans un programme, il suffit d'excuter au dbut du programme la fonction 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 blocages sont plus rapides. Rservation : constante Mode hModeRservation : mise en place des blocages non prioritaire. Cette mthode permet de modifier immdiatement un enregistrement sur lequel de nombreuses 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 blocages des fichiers. Il doit galement tester HErreurBlocage aprs toutes les fonctions HyperFileSQL. Le mode Multi convient aux programmes grant des fichiers pouvant tre partags. Les programmes traitent une opration logique de mise jour de plusieurs fichiers ne pouvant pas tre interrompue.

Remarque : Aprs l'appel de la fonction HLitRecherche, 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 doivent tre partags par plusieurs programmes. En consquence, le mode Multi doit tre utilis ds qu'une opration logique de mise jour de plu-

P2 suit l'algorithme suivant :


// suppression des commandes //comportant le produit CodePr CodePr = Saisie_code_produit HLitRecherche(COMMANDE,CODE,CodePr) Tant que HTrouve() HSupprime(COMMANDE) HLitSuivant(COMMANDE,CODE) Fin

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.

374

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

375

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 lecture 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 enregistrement sont : HLit, HLitRecherchePremier, HLitRechercheDernier, HLitDernier, HLitPremier, HLitSuivant, HLitPrcdent Aprs chaque fonction, il faut tester HErreurBlocage 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, TableSupprime, TableEnregistre. Remarque : Le blocage d'un enregistrement par les fonctions "HLit..." est inactif si le fichier a t prcdemment bloqu par les fonctions "HBloque...", la fonction est quivalente "HLit...".

Si vos fichiers sont manipuls via un provider OLE DB, sont grs uniquement : Les erreurs de doublons Attention : Certaines erreurs de doublons peuvent ne pas tre reconnues comme telles par l'accs OLE DB. Ces erreurs ne seront pas gres comme des erreurs de doublons mais seront considres 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 interdit". 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.

Ces liaisons rpondent des contraintes d'intgrit 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 lutilisateur 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 exemple). 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 protg par mot de passe (ouverture, premire lecture, ...). Le mot de passe na pas t spcifi par programmation : une erreur de mot de passe survient. 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 manipulant 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 diffrents 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 dpartement 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 modification.

4.4.2 Fonctionnement standard


Erreur de doublons Cause de lerreur Lutilisateur ou linternaute ajoute un enregistrement 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 fentre ou une page saffiche, demandant lutilisateur 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 exemple). 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 contraintes 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'analyse.

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 spcifique ou par une procdure, soit de dbrancher lassistance et de grer lerreur par programmation (comme en WinDev 5.5). 376 Partie 7 : Gestion des fichiers de donnes

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 courants. Cette gestion automatique consiste assister lutilisateur 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 dbranche. Remarque : La gestion assiste des erreurs est disponible 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.

Partie 7 : Gestion des fichiers de donnes

377

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 : Enregistrement lu Enregistre- Actif ment sur disque Actif Ray Supprim

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 WebDev) En cas derreur de blocage, la gestion des blocages (vrification si le fichier est bloqu, traitement 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 obligatoirement 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 rindexation.

Conflit de Conflit de Conflit de modifica- modification modification tion Conflit Conflit de Conflit de d'tat de modification modificamodification tion

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 rindexation et ne peut tre ferme. Une jauge de progression 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.

Ray

4.4.3 Personnalisation
Les diffrentes solutions WinDev, WebDev, WinDev Mobile offrent la possibilit de personnaliser la gestion des erreurs HyperFileSQL. Il est possible d'utiliser des procdures personnalises. 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 gestion 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 dexemple. Ces fentres sont disponibles dans le sous-rpertoire "Programmes\Donnees\Fentres prdfinies\HyperFileSQL Fenetres assistance automatique" du rpertoire dinstallation de WinDev. Ces pages sont disponibles dans le sous-rpertoire "Programmes\Donnees\Pages prdfinies\HyperFileSQL - Pages assistance automatique" du rpertoire dinstallation de WebDev. Vous pouvez inclure ces fentres / pages dans vos projets, les personnaliser et les passer en paramtre la fonction HSurErreur. Constantes utilises pour la personnalisation des erreurs La fentre, la page ou la procdure permettant de personnaliser l'erreur devra renvoyer une des constantes prsentes dans le tableau ci-dessous. Le traitement correspondant sera effectu en fonction de la constante renvoye. opRessayer OpAnnuler La fonction ayant dclench l'erreur est r-excute. La fonction ayant dclench l'erreur renvoie une erreur et le code continue s'excuter. 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() 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- Termine lapplication et relance gramme automatiquement lapplication

Supprim Conflit Conflit XXXX d'tat de d'tat de modifica- modification tion Gestion assiste par dfaut (WinDev et WebDev) En cas de conflit lors de la modification dun enregistrement, une fentre ou une page apparat, 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 rubrique 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 rubrique qui sera enregistre. Traitement de lerreur (WinDev Mobile) Pour les erreurs de conflits de modification, testez 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 HErreurInfo. Pour les erreurs de conflit d'tat de modification, testez la fonction HErreurEtatModification aprs chaque fonction HyperFileSQL pouvant provoquer 378 Partie 7 : Gestion des fichiers de donnes

OpFinTraitement

OpFinProgramme

Partie 7 : Gestion des fichiers de donnes

379

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.

Dans ce cas, il est alors ncessaire de tester aprs chaque fonction HyperFileSQL pouvant provoquer une erreur, une ou plusieurs des fonctions suivantes : HErreurBlocage HErreurDoublon HErreurIntgrit Teste si une erreur de blocage est survenue. Teste si une erreur de doublons est survenue. Teste si une erreur d'intgrit est survenue.

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 HyperFileSQL 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 disque 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 enregistrements "virtuels". Un enregistrement virtuel se compose 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 effectues sur une vue ne sont pas immdiatement rpercutes sur le fichier HyperFileSQL. Pour mettre jour un fichier HyperFileSQL par rapport une vue, il faut explicitement en donner l'ordre par une fonction du WLangage.

4.4.4 Dbrancher la gestion assiste (WinDev et WebDev)


WinDev et WebDev offrent la possibilit de dbrancher entirement le systme de gestion automatique 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 automatique des erreurs, il suffit dutiliser la fonction HSurErreur en spcifiant une chane vide en nom de fentre ou de procdure.

HErreurMotDePasse Teste si une erreur due un mot de passe erron a t rencontre. 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 associs 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.

5.2 Intrts des vues


Les vues apportent : Plus de souplesse et de puissance pour les applications 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 sousensemble 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 particulirement 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, HLitSuivant, etc.), ajouter des enregistrements dans une vue (fonction HAjoute), raliser des filtres sur les enregistrements de la vue (fonction HFiltre), modifier des enregistrements (fonction HModifie), ... 380 Partie 7 : Gestion des fichiers de donnes Les fonctions spcifiques la manipulation des vues sont les suivantes : HCreVue HCreVue_55 Cre une vue sur un fichier HyperFileSQL Cre une vue au format WinDev 5.5 / WebDev 1.5 (compatibilit uniquement) Dtruit une vue prcdemment cre

HDtruitVue

Partie 7 : Gestion des fichiers de donnes

381

HExcuteVue

Excute une vue cre prcdemment. Permet de mettre jour les donnes de la vue avec les dernires donnes modifies dans le fichier HyperFileSQL correspondant Cre une vue HyperFileSQL partir de deux vues prcdemment cres (fonction HCreVue). Un grand nombre d'oprations ensemblistes peut tre ralis lors de la fusion des vues.

HTrieVue HVueVersFichier

Trie une vue en crant un index sur une rubrique de la vue Enregistre les modifications ralises dans une vue (grce aux fonctions HModifie, HSupprime ou HRaye) dans le fichier HyperFileSQL correspondant Affiche le contenu dune vue dans une table mmoire

Exemple :
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)

5.4.3 Slection des enregistrements de la vue


Lors de la cration d'une vue, il est possible de spcifier une condition de slection des enregistrements. La condition est applique chaque enregistrement 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>)

HFusionneVue

FichierVersTableMmoire

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.

5.4.2 Choix de la rubrique de tri initial de la vue


Lors de la cration d'une vue, il est possible de spcifier 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>)

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 ncessaire). 3. Slection des enregistrements contenus dans la vue. 4. Cration de la vue. 5. Ralisation doprations ensemblistes si ncessaire. 6. Affichage des enregistrements de la vue si ncessaire. Les paragraphes suivants dtaillent chacune de ces tapes. Remarque : Il est possible de conserver le fonctionnement des vues prsent dans WinDev 5.5 / WebDev 1.5 (avec gestion dun identifiant de vue). Il suffit dutiliser la fonction HCreVue_55. 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 :
Externe MaVue1 NomFichier est une chaine="CLIENT" // Vue avec tous les // enregistrements de toutes les // rubriques du fichier HCreVue(MaVue1, NomFichier)

<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 intgrer 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 :
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)

<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 intgrer 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'effectuer un grand nombre d'oprations de slection sur les enregistrements. Toutefois, ces oprations peuvent se rvler insuffisantes 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)

Certaines rubriques du fichier Pour slectionner uniquement certaines rubriques du fichier, il faut utiliser la syntaxe suivante :
<Rsultat> = HCreVue(<Nom Vue>,... <Nom Fichier>, <NomRubrique>)

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.

<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 intgrer la vue. Les rubriques sont spares par une virgule dans cette chane de caractres.

<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 Partie 7 : Gestion des fichiers de donnes 383

382

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 communes avec B <RubriqueTriEtComparaison> est une chane contenant l'indice de la rubrique de comparaison entre les deux vues. Cette rubrique est galement 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 permettent 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.

6. LES TRIGGERS HYPERFILESQL


6.1 Prsentation
6.1.1 Dfinition
Un trigger correspond lassociation dune procdure et dune fonction dcriture sur un fichier HyperFileSQL. Les triggers permettent dexcuter facilement des traitements lors de la modification dun enregistrement. 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 manipulation des tables : Les fonctions de manipulation des tables (TableAjoute, TableAjouteLigne, TableSupprime, 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 excuts. L'utilisation de triggers permet de diminuer la taille du code, de faciliter sa lecture et de faciliter les volutions futures, par regroupement des traitements. Pour plus dinformations, le schma de la page suivante prsente le mode de fonctionnement dtaill des triggers. Remarque : Les triggers sont galement disponibles 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 prcdemment dsactiv par la fonction HDsactiveTrigger Ajoute ou modifie un trigger sur un fichier HyperFileSQL HGreTrigger HListeTrigger Active ou dsactive la gestion des triggers Renvoie la liste des triggers appliqus sur un ou plusieurs fichiers de donnes

HDcritTrigger

HDsactiveTrig- Dsactive un trigger. Ce trigger ger pourra ensuite tre ractiv grce la fonction HActiveTrigger HDtruitTrigger Dtruit un trigger. Ce trigger ne sera plus utilisable 384 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, WinDev Mobile), consultez laide en ligne. Les fonctions pour manipuler les triggers sur le serveur sont identiques et ont dans leur nom "Serveur".

Partie 7 : Gestion des fichiers de donnes

385

6.2.2 Manipuler des triggers


Crer un trigger Un trigger "avant" ou "aprs" est cr grce la fonction HDcritTrigger, dans le code d'initialisation 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 enregistrements. A chaque excution du trigger, une procdure spcifique 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 fonctions 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 dbranche. 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 message 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 traitement permettant d'activer ou de dsactiver une vrification ralise par un trigger. Pour dsactiver temporairement un trigger particulier, il faut utiliser la syntaxe :
<Rsultat>=HDsactiveTrigger([<ListeFichierHF> [, <ListeFonctionHF>]] [, <Type>])

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 permettant 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 chacune des bases de donnes sont reportes sur toutes les autres bases de donnes. WinDev / WebDev permet de raliser ces oprations simplement. WinDev / WebDev propose deux types de rplication : La rplication journale (base sur la journalisation). 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 universelle. Type de rplication Deux types de rplication peuvent tre mises en place : Rplication mono-directionnelle : Ce type de rplication consiste effectuer uniquement 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 abonne. Pour chaque base abonne, un fichier RPL est cr. Ce fichier est prsent sur le poste abonn. Fichier .RPA : fichier journal contenant les informations 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 permet d'optimiser la taille des fichiers de synchronisation. Ce fichier est prsent sur le poste matre et sur chaque poste abonn.

Dtruire un trigger La fonction HDetruitTrigger permet de dtruire un ou plusieurs triggers grce la syntaxe suivante :
<Rsultat>=HDtruitTrigger([<ListeFichierHF> [, <ListeFonctionHF>]] [, <Type>])

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 excute sur ce poste. modifications effectues sur les postes distants 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 effectues par le poste distant. La rplication transmet ces modifications la base de donnes "Matre".

7.1.3 Remarque
Pour mettre en place la rplication universelle sur des bases de donnes diffrentes de HyperFileSQL, il est obligatoire de crer une rubrique de type DateHeure dans chaque fichier. Cette rubrique sera mise jour par l'application lors de la modification ou lors de l'ajout d'un enregistrement. Si les bases de donnes utilisent diffrents fuseaux horaires, il est conseill d'utiliser un format universel (date et heure GMT par exemple).

386

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

387

7.2 Mettre en place la rplication universelle


7.2.1 Activation
Pour activer la rplication universelle, il suffit d'utiliser 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. Cette ligne de code cre le fichier RplicaMatre.RPM sur le disque. Il ne reste plus qu' inscrire les abonns dans ce fichier.

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 enregistrement. Si la rubrique permettant de dater l'enregistrement est remplie automatiquement par un trigger, ce trigger doit tre dsactiv durant l'excution 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 certaines modifications comme un couple {ajout, suppression}. Si une table (non rplique) est relie avec l'option de modifications en cascade, les enregistrements relis risquent d'tre supprims abusivement.

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 utilise des paramtres spcifiques pour la rplication universelle. Pour plus de dtails, consultez l'aide de la fonction.

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 stocker des donnes, la ligne de code suivante peut tre utilise :
HCreRplicaMatre("")

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 (rplPlusRcentPrioritaire par exemple). Deux fonctions spcifiques peuvent galement tre utilises :
HRplDclareLiaison Permet de signaler au moteur de rplication une liaison entre deux fichiers. Le moteur suivra alors la liaison pour obtenir la liste des enregistrements rpliquer dans le second fichier. HRplProcdureFiltre Permet de spcifier une procdure de filtrage spcifique lorsquun fichier donn sera rpliqu.

HRplGestionFichier

Dfinit les options utilises pour la rplication universelle d'un fichier. Dfinit les options utilises pour la rplication universelle d'une rubrique.

HRplGestionRubrique

Remarques : Les changes de fichiers ".RPA" ne sont pas obligatoirement 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 performances, 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 sousensemble 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 "visible" sur la base de donnes matre, cet enregistrement sera considr comme supprim. Il sera alors automatiquement supprim sur le poste abonn.

388

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

389

8. GESTION DE FICHIERS EN "BACK OFFICE"


8.1 Prsentation
La plupart des sites interactifs diffuss sur Internet sont destins fonctionner en parallle dapplications dites traditionnelles, excutes en gnral sous Windows. Pour un site de commerce lectronique par exemple : le "Front Office" consistera dans la partie Internet, en la prsentation des produits et prise de commandes. le "Back Office" consistera en la gestion des ventes ralises : bons de livraison, factures, bons de rparation, statistiques, relances, ... Pour raliser les fonctions du "Back Office", lutilisation 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.

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 internautes grce laccs distant. Les utilisateurs de lapplication "Back Office" interrogent et mettent jour la base de donnes directement 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 permettant 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 indiquant ses coordonnes et les produits commands. par les commerciaux, qui utilisent une application 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 uniquement les commandes saisies par les clients utilisant le site Internet. prsent au sige de la socit contient uniquement les commandes saisies par les commerciaux. 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, prenant en compte les nouveaux produits. Il est donc ncessaire de mettre jour la base de donnes du site WebDev avec les nouveaux produits. 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 diffrentes bases de donnes.

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 procdure de lecture des emails. Lapplication "Front Office" envoie un email chaque 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 HConnecteAccsDistant.

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 internautes. Les utilisateurs de lapplication "Back Office" interrogent 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 diffrents utilisateurs. Dans ce cas, chaque utilisateur lance un accs distant.

8.4.2 Mise en place de la rplication


Pour plus de dtails, consultez le chapitre La rplication de donnes, page 387 et laide en ligne.

390

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

391

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 (diffusion libre et gratuite avec vos applications WinDev 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. Contactez le service commercial pour les dlais de disponibilit 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'administrateur 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 spcifique. 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 driver 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) doivent tre installs sur le poste. Les fonctions SQL et HyperFileSQL (HLitxxx, ...) peuvent tre utilises avec ce type d'accs.

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 HyperFileSQL FichierVersPage Initialise automatiquement les champs d'une page avec les valeurs des rubriques associes dans l'enregistrement en cours (charg en mmoire) du fichier HyperFileSQL HAcclreVitesse Rorganise la structure interne des index pour optimiser la vitesse d'accs aux donnes 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 fonction 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- Ouvre une analyse au format HyperFileSQL via un accs distant tant HConstruitValCl Construit la valeur d'une cl compose pour raliser un filtre ou effectuer une recherche 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

9.2 Particularits
Accs xBase possible via HyperFileSQL : Des fonctions spcifiques xBase sont utilisables en plus des fonctions classiques HyperFileSQL (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 (connexion la base, excution dune requte, blocage des enregistrements, ...), consultez laide en ligne.

392

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

393

HConvert HCopieEnreg HCration HCrationSiInexistant HCreReplicaAbonn HCreRplicaMatre HCreRplicaTransportable HCreVue HDateEnreg HDbloqueFichier HDbloqueNumEnr HDclare HDclareExterne HDcritConnexion HDcritFichier HDcritIndexfullText HDcritLiaison HDcritRubrique HDcritTrigger HDernier HDsactiveFiltre HDsactiveFiltreAuto HDsactiveTrigger HDtruitTrigger HDtruitVue HEcrit HEnDehors

HEnregistrementVersXML HErreur HErreurBlocage HErreurDoublon HErreurEtatModification 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 modification 394 Partie 7 : Gestion des fichiers de donnes

Convertit une valeur numrique en une chane binaire pour effectuer une recherche sur une cl numrique Copie le contenu de l'enregistrement en cours (charg en mmoire) dans l'enregistrement en cours d'un autre fichier Cre vide un fichier de donnes (fichier d'extension ".FIC") avec le fichier d'index et le fichier mmo si ncessaire Cre vide un fichier de donnes (si le fichier n'existe pas) ou ouvre un fichier (si le fichier existe) Cre le fichier de description d'un rplica abonn (fichier ReplicaAbonne.RPL) Cre le fichier de description d'un rplica matre (fichier ReplicaMaitre.RPL) Cre un fichier qui peut tre utilis pour rpliquer les donnes de la base de donnes en cours vers une base de donnes distante (pour envoi par email ou disquette par exemple) Cre une vue HyperFileSQL Renvoie la date et l'heure de la dernire criture d'un enregistrement dans un fichier HyperFileSQL Dbloque un fichier prcdemment bloqu avec la fonction HBloqueFichier Dbloque un enregistrement Dclare une description de fichier (prsente dans une autre analyse) dans le projet en cours Importe temporairement dans l'analyse en cours la description d'un fichier partir d'un fichier HyperFileSQL existant Dcrit une connexion temporaire Dcrit un fichier de donnes temporaire Dcrit un index full-text dans un fichier de donnes cr par programmation. Dcrit une liaison temporaire entre deux fichiers Dcrit une rubrique d'un fichier de donnes temporaire Non disponible dans cette version Positionne sur le dernier enregistrement d'un fichier Dsactive temporairement un filtre sur un fichier (une vue ou une requte) Dsactive un filtre automatique sur les fichiers relis lors du parcours d'un fichier XML Dsactive un trigger Dtruit un trigger Dtruit une vue prcdemment cre crit un enregistrement dans le fichier de donnes sans mettre jour les index correspondants toutes les cls utilises dans le fichier 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 Rcupre la structure et la valeur de l'enregistrement en cours et les exporte dans une chane de caractres au format XML Renvoie le numro de la dernire erreur dclenche par le moteur HyperFileSQL Permet de tester si une erreur de blocage est survenue Permet de tester si une erreur de doublons est survenue Renvoie l'tat d'un enregistrement lors d'un conflit de modification

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 enregistrements 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 enregistrements 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 prsents 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- Renvoie les modifications apportes une ou plusieurs rubriques d'un enregistretion 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. Partie 7 : Gestion des fichiers de donnes 395

HInfoMmo HInfoRplica HInitAbonn

Renvoie les caractristiques des mmos binaires Renvoie des informations sur le rplica spcifi 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 existants 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 journal 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 HExcuteRequte 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 (connexions dfinies dans l'analyse et/ou dynamiquement) HListeFichier Renvoie la liste des fichiers de l'analyse en cours ou d'une analyse spcifique reconnue 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'analyse. 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 HyperFileSQL 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 spcifique est suprieure ou gale une valeur recherche HLitRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique spcifique est infrieure ou gale une valeur recherche HLitRecherchePrePositionne sur le premier enregistrement du fichier dont la valeur d'une rubrique spmier cifique est suprieure ou gale une valeur recherche

HLitSuivant

Positionne sur l'enregistrement suivant d'un fichier, lit l'enregistrement et met jour les variables HyperFileSQL HMigreClCompose- Migre les valeurs des cls composes relies Relie 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 effectuant une modification automatique des donnes (galement appele Synchronisation 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 HyperFileSQL 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 traitements) pour optimiser les requtes. Optimise laccs aux index des fichiers HyperFileSQL 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 transactions 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 spcifique est suprieure ou gale une valeur recherche HRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique spcifique 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 spcifique 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- Renvoie le contenu de l'enregistrement en cours ment HRcupreLog Ecrit dans un fichier les logs du serveur raliss entre deux dates donnes Partie 7 : Gestion des fichiers de donnes 397

396

Partie 7 : Gestion des fichiers de donnes

HRcupreRubrique HRgnreFichier HRindexationEnCours HRindexe HRetourPosition HRplDclareLiaison HRplGestionFichier

HRplGestionRubrique HRplPasse HRplProcdureFiltre HSauvePosition HScurit HStatCalcule HStatDate HStatHeure HStatNbDoublon HStatNbEnr HStatNbEnrIntervalle HSubstRep HSuivant HSupprime HSupprimeCollection HSupprimeTout HSurErreur HSynchroniseRplica HTransactionAnnule

HTransactionDbut HTransactionFin

HTransactionInterrompue

Renvoie le contenu d'une rubrique de l'enregistrement en cours Rgnre un fichier partir de son journal Avertit si une rindexation est en cours sur un fichier de donnes et renvoie le pourcentage de rindexation effectu Reconstruit l'index d'un fichier Restaure le contexte prcdemment sauvegard d'un fichier Dclare une liaison de type (1,1) (0,n) entre deux tables Dfinit les options utilises pour la rplication universelle d'un fichier : le sens de rplication, le mode de gestion des conflits. Renseigne les options de rplication pour une rubrique : la rubrique peut tre rplique ou non. Fixe les mots de passe protgeant les rplicas transportables de la rplication universelle Dfinit la procdure WLangage qui sera appele chaque opration de rplication pour un fichier donn Mmorise le contexte en cours d'un fichier Active ou dsactive le mcanisme de scurit Ralise diverses statistiques sur les cls d'un fichier Renvoie la date de la dernire mise jour des statistiques d'index Renvoie l'heure de la dernire mise jour des statistiques d'index Renvoie le nombre de doublons pour une rubrique donne Renvoie le nombre d'entres pour une rubrique donne Renvoie une estimation majore du nombre d'entres pour une rubrique donne dans un intervalle de valeurs donn Remplace le nom logique du rpertoire des donnes (spcifi dans l'analyse) par un nom physique Positionne sur l'enregistrement suivant du fichier (l'enregistrement n'est pas lu) Supprime un enregistrement d'un fichier Supprime une collection de procdures stockes d'un serveur HyperFileSQL. Supprime tous les enregistrements d'un fichier de donnes ou d'une requte. Personnalise la gestion des erreurs Synchronise un rplica matre et un rplica abonn 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) Dmarre une transaction sur les fichiers HyperFileSQL et cre le fichier des transactions Valide la transaction en cours : les modifications effectues sur le fichier de donnes depuis le dbut de la transaction (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 Permet de savoir si une transaction a t interrompue (la transaction n'a t ni valide, ni annule). Les caractristiques de la transaction interrompue peuvent tre connues grce des variables HyperFileSQL

HTransactionLibre

HTrieVue HTrouve HVrifieIndex HVrifieStructure HVersion HVersFichier HVersRubrique HVueVersFichier PageVersFichier

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 automatiquement libr Trie une vue en crant un index sur une rubrique de la vue Vrifie si l'enregistrement en cours correspond au filtre ou la recherche en cours Vrifie que les donnes contenues dans le fichier d'index (fichier .NDX) rfrencent correctement les donnes contenues dans le fichier de donnes (.FIC) Fixe le mode de comparaison des fichiers. Permet de savoir si le contenu du fichier a t modifi Copie une source de donnes (vue, requte, ) vers un fichier physique HyperFileSQL de mme description Affecte la valeur indique une rubrique de l'enregistrement en cours Enregistre les modifications ralises dans une vue dans le fichier correspondant 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.

398

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

399

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- Paramtre la cardinalit maximale de la rubrique relie dans une liaison Max CardinalitRelie- Paramtre la cardinalit minimale de la rubrique relie dans une liaison Min CardinalitSource- Paramtre la cardinalit maximale de la rubrique source dans une liaison Max CardinalitSource- Paramtre la cardinalit minimale de la rubrique source dans une liaison Min 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 requtes. 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) CxBaseDeDonGre la source de donnes OLE DB lors de la connexion OLE DB une table spcifique nesDcrit (sans tenir compte des modifications effectues par la fonction HConnecte) CxInfosEtendues Permet de connatre les informations supplmentaires insres dans la chane de connexion la base de donnes CxInitialCatalog Permet de connatre la base de donnes par dfaut dfinie pour l'accs 400 Partie 7 : Gestion des fichiers de donnes

CxLibellDcrit CxMotDePasseDcrit CxOptionsCurseur CxProviderOLEDB CxProviderOLEDBDcrit CxTailleCache CxUtilisateur CxUtilisateurDcrit ExcutionTermine Extension FichierJournal FichierOrigine FichierParcouru FichierReli FichierSource FichierTransaction FiltreAvecBornes Format FormuleCl GreHTLM GreRTF GrosFichier GUIDAnalyse GUIDFichier HauteurMaxVignette Heure

Paramtre le libell de la connexion la source de donnes OLE DB Dfinit le mot de passe utilis pour ouvrir le fichier lors d'une connexion OLE DB (fichier dfini dynamiquement uniquement) Permet de connatre le type curseur utilis lors d'une connexion une base de donnes externe Gre le nom du serveur OLE DB utilis (en tenant compte des modifications effectues par la fonction HConnecte) Gre le nom du serveur OLE DB (sans tenir compte des modifications effectues par la fonction HConnecte) Permet de connatre et de modifier le nombre maximum d'enregistrements pouvant tre contenus dans le cache de l'Accs Natif MySQL Gre le nom de l'utilisateur lors d'une connexion OLE DB (en tenant compte des modifications effectues par la fonction HConnecte) Gre le nom de l'utilisateur lors d'une connexion OLE DB (sans tenir compte des modifications effectues par la fonction HConnecte) Permet de savoir si une requte ou une vue Hyper File Classic ou Client / Serveur a fini de s'excuter Permet de connatre ou de modifier l'extension d'un fichier de donnes Permet de savoir si un fichier de donnes est un fichier journal Permet de connatre le nom du fichier original correspondant une rubrique dsigne par un alias 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 Paramtre le nom du fichier reli utilis dans la liaison Paramtre le nom du fichier source utilis dans la liaison Permet de savoir si un fichier de donnes est un fichier de transaction 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 Paramtre le format des donnes du fichier de donnes (ANSI ou Unicode) Paramtre les diffrentes composantes d'une cl compose Paramtre le mode de gestion du HTML dans un index full-text. Paramtre le mode de gestion du RTF dans un index full-text. Paramtre la taille maximale d'un fichier de donnes Renvoie le GUID de l'analyse qui a permis de crer le fichier de donnes Renvoie le GUID du fichier dfini dans l'analyse qui a permis de crer le fichier de donnes Permet de connatre et de fixer la hauteur maximale de la nime vignette

Rcupre ou modifie l'heure ou le nombre d'heures d'une rubrique de type Date (au format "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- Permet de savoir si la vignette a t gnre ou permet de connatre l'erreur de gnragnette 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 format "Date", "Date et Heure" ou "Dure") Journalisation Paramtre le mode de journalisation d'un fichier de donnes

Partie 7 : Gestion des fichiers de donnes

401

Langue LangueDcrit

LargeurMaxVignette 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 Donne le mot de passe utiliser pour manipuler un fichier au format Hyper File 5.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 dynamiquement, 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 HyperFileSQL 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- Gre le nom physique des fichiers HyperFileSQL (sans tenir compte des changements crit de noms raliss grce la fonction HChangeNom) NouvelEnregistre- Permet de savoir si l'enregistrement vient d'tre saisi dans le fichier de donnes. ment 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 logique spcifi OptionsCurseur Permet de grer le type de curseur utilis lors d'une connexion (HyperFileSQL Client/Serveur, OLE DB, ...). PartieDate Rcupre et modifie la date d'une rubrique de type Date (au format "Date et Heure")

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). 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). Permet de connatre et de fixer la largeur maximale de la nime vignette

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- Permet de savoir si un fichier est protg ou non par mot de passe 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 changements de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep) RpertoireDcrit Gre le rpertoire physique des fichiers HyperFileSQL (sans tenir compte des changements de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep) RpertoireJournal Gre le rpertoire du fichier journal dcrit dans l'analyse RpertoireJourna- Permet de grer le rpertoire du fichier des oprations du journal associ un fichier lOpration journal RpertoireRplica- Permet de grer le rpertoire du rplica (fichier ".RPL" ou ".RPM") tion RpertoireSauve- Permet de connatre et de modifier le rpertoire de sauvegarde des fichiers Journal gardeJournal 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 dynamiquement, 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 dsigne par un alias Rubriques Permet de dfinir et de connatre les diffrentes rubriques composant l'index full-text. RubriqueTexParamtre la gestion des rubriques de type texte dans un fichier HyperFileSQL (les rubriteComplte 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- Paramtre la prise en compte de l'accentuation dans les diffrentes recherches effection tues sur la rubrique SensibleCasse Paramtre la prise en compte de la case (majuscules/minuscules) dans les diffrentes recherches effectues sur la rubrique SensiblePonctua- Paramtre la prise en compte de la ponctuation (virgule, point, etc.) dans les diffrentes tion 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 TailleEnregistreRenvoie la taille d'un enregistrement sans tenir compte des cls composes ment Texte Identifie une rubrique de type texte Type Identifie et modifie le type d'une rubrique Partie 7 : Gestion des fichiers de donnes 403

402

Partie 7 : Gestion des fichiers de donnes

TypeCl TypeTri Utilisateur ValeurParDfaut Vignette VisibleUtilisateurFinal WDD55

Paramtre les caractristiques d'une rubrique de type cl Paramtre les caractristiques de tri sur une rubrique Permet de connatre et modifier l'utilisateur d'une connexion Paramtre la valeur par dfaut d'une rubrique Permet de connatre la valeur de la nime vignette 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 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

12. FONCTIONS SQL


Les principales fonctions SQL pouvant tre utilises sur des requtes en code SQL sont les suivantes (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

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.

404

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

405

Vrification : MD5 SHA et SHA1 Pour plus de dtails sur les fonctions SQL, consultez une documentation spcifique au langage SQL. Pour connatre toutes les commandes SQL (fonctions, 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 HExcuteRequte. Dans le code SQL des requtes excutes avec la fonction HExcuteRequteSQL. Sauf indication contraire, ces fonctions sont utilisables sur tous les types de sources de donnes (Oracle, Access, SQL Server, ...).

Format d'utilisation :
SPLIT_PART(Expression initiale, ... Dlimiteur, Numro de la partie ... extraire)

Exemple : Le code SQL suivant permet d'extraire les 3 premiers mots correspondants l'adresse :
SELECT SPLIT_PART(ADRESSE,' ', ... 1), SPLIT_PART(ADRESSE,' ',2),... SPLIT_PART(ADRESSE,' ',3) FROM CLIENT WHERE CLCLEUNIK=2

SUBSTRING La fonction SUBSTRING peut tre utilise uniquement sur une source de donnes de type SQL Server. Format d'utilisation :
SUBSTRING(ChaneDeCaractres ou Rubrique, PositionDpart,... NbCaractresAExtraire)

Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients :
SELECT SUBSTRING(CLIENT.Nom, 3, 2) FROM CLIENT

12.1 Dtail des fonctions


12.1.1 ELT
La fonction ELT renvoie la nime chane de caractres d'une liste de chanes. Format d'utilisation :
ELT(Numro de la chane, ... Chane1, Chane2, Chane3, ...)

12.1.6 MID, SUBSTR et SUBSTRING 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 :
LEFT(... ChaneDeCaractres ou ... Rubrique,NbCaractresAExtraire)

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 :
MID(... ChaneDeCaractres ou ... Rubrique, PositionDpart,... NbCaractresAExtraire)

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 sensible 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 donnes 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 :
// Suppr. espaces situs gauche LTRIM(ChaneDeCaractres/Rubrique) // Suppr. liste de caractres LTRIM(... ChaneDeCaractres ou ... Rubrique,CaractresASupprimer)

Exemple : Le code SQL suivant suivant permet de slectionner la premire chane de la liste :
SELECT ELT(1, 'ej', 'Heja', ... 'hej', 'foo')

Exemple : Le code SQL suivant permet de lister les dpartements des clients :
SELECT LEFT(CLIENT.CodePostal, 2) FROM CLIENT

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 contenu du premier noeud texte fils de chaque noeud correspondant l'expression XPATH est retourn sous forme d'une chane dlimite par des espaces. Format d'utilisation :
EXTRACTVALUE(Fragment de XML,... Expression XPATH)

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 :
RIGHT(... ChaneDeCaractres ou ... Rubrique,NbCaractresAExtraire)

Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients :
SELECT MID(CLIENT.Nom, 3, 2) FROM CLIENT

SUBSTR La fonction SUBSTR peut tre utilise uniquement sur une source de donnes de type Oracle. Format d'utilisation :
SUBSTR(... ChaneDeCaractres ou Rubrique,PositionDpart,... NbCaractresAExtraire)

Le paramtre <Fragment de XML> doit tre un fragment de XML valide. Il doit contenir une unique racine. Exemple : Le code suivant permet de compter les lments trouvs :
SELECT EXTRACTVALUE('<a><b/> ... </a>', 'count(/a/b)') FROM CLIENT WHERE CLCLEUNIK=1

Exemple : Le code SQL suivant permet d'extraire les cinq derniers caractres du nom des clients :
SELECT RIGHT(CLIENT.Nom, 5) FROM CLIENT

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.

Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients :
SELECT SUBSTR(CLIENT.Nom, 3, 2) FROM CLIENT

Exemple : Le nom des clients est prcd de la civilit 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

406

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

407

tait prsent entre la civilit et le nom).


// Suppression des caractres SELECT LTRIM(CLIENT.Nom, 'Mrmel.') FROM CLIENT // Suppression de l'espace SELECT LTRIM(CLIENT.Nom) FROM CLIENT

'Galteur' 'FOURMALTE' 'BENUR'

'Galteur' 'FOURMALTE' 'BEN'

sur le premier caractre trouv n'appartenant pas la chane spcifie. 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)

12.1.15 LPAD
La fonction LPAD renvoie une chane de taille dtermine. 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 :
// 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)

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 sensible la casse (majuscule/minuscule). Cette suppression s'arrte sur le premier caractre trouv n'appartenant pas la chane spcifie. Format d'utilisation :
// 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)

Dans cet exemple : Si le nom du client est : La chane est : 'Melle. DUPONT' 'DUPONT' 'Mr. CIRVAL' 'CIRVAL' 'Mme. Dubois' 'Dubois' retourne

12.1.11 REVERSE
La fonction REVERSE renvoie une chane de caractres dont l'ordre des caractres est l'inverse de la chane initiale. Format d'utilisation :
REVERSE(Chane initiale)

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 sensible 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 donnes 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 :
// Suppr. espaces gauche RTRIM(ChaneDeCaractres ou Rubrique) // Suppr. liste de caractres RTRIM(ChaneDeCaractre ou ... Rubrique,CaractresASupprimer)

12.1.16 REPEAT
La fonction REPEAT renvoie une chane de caractres 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 :
REPEAT(Chane initiale, n)

12.1.12 TRANSLATE
La fonction TRANSLATE renvoie une chane de caractres en remplaant tous les caractres indiqus 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 :
// Remplacement des caractres TRANSLATE(Expression initiale, ... Caractres remplacer, ... Nouveaux caractres)

Exemple : Le code SQL suivant permet d'extraire les troisime et quatrime caractres du nom des clients :
SELECT REPEAT(NOMCONTACT,14) FROM CLIENT WHERE CLCLEUNIK=10

12.1.13 CONCAT
La fonction CONCAT concatne plusieurs chanes entre elles. Format d'utilisation :
CONCAT(Chane1, Chane2 [, ... , ChaneN])

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 :
// Compltion par des espaces RPAD(Expression initiale, Longueur) // Compltion par un caractre RPAD(Expression initiale, Caractre)

Exemple : Le code SQL suivant permet de supprimer les caractres 'E', 'U' et 'R' situs droite du nom des clients :
SELECT RTRIM(CLIENT.Nom, 'EUR') FROM CLIENT

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

CONCAT nest pas gr par Sybase.

Dans cet exemple : Si le nom du client est : La chane est : 'DUVALEUR' 'DUVAL' 'DRAFUREUR' 'DRAF' 408 retourne

12.1.14 STRING_AGG
La fonction STRING_AGG permet de concatner des chanes non nulles d'une liste de valeurs. Format d'utilisation :
STRING_AGG(chane, sparateur)

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

409

// Compltion par une chane de // caractres RPAD(Expression initiale, ... Chane de caractres)

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 :
UPPER(ChaneCaractres ou Rubrique)

12.1.18 SPACE
La fonction SPACE renvoie une chane constitue de N espaces. Format d'utilisation :
SPACE(N)

soit dans une chane de caractres. La fonction INSTR peut tre utilise uniquement sur une source de donnes de type Oracle ou supportant la norme SQL-92. Format d'utilisation :
INSTR(... ChaneDeCaractres ou ... Rubrique, ChaneARechercher, ... PositionDpart, Occurrence)

Nom de ville MONTPELLIER PARIS TARBES TOULOUSE VIENNE

%E% 6 0 5 8 3

%E_ 10 0 5 0 0

%AR% 0 2 2 0 0

12.1.27 POSITION
La fonction POSITION renvoie la position d'une chane de caractres dans une expression. Format d'utilisation :
POSITION(Chane rechercher, ... Expression initiale) POSITION(Chane rechercher, ... Expression initiale, ... Position de dpart)

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 :
LOWER(ChaneCaractres ou Rubrique)

Exemple : Le code SQL suivant permet de convertir en majuscules les villes des clients :
SELECT UPPER(CLIENT.Ville) FROM CLIENT

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 :
SELECT INSTR(CLIENT.Ville, 'T', 1, 1)FROM CLIENT

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 donnes de type Oracle. Pour les sources de donnes de type Oracle, utilisez la fonction LENGTH. Format d'utilisation :
LEN(ChaneDeCaractres ou Rubrique)

12.1.25 FIELD
La fonction FIELD renvoie l'index de la chane recherche dans la liste. Si la chane n'est pas trouve, la fonction renvoie 0. Format d'utilisation :
FIELD(Chane rechercher, ... Chane1, Chane2, ...)

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 :
COUNT(*) COUNT(Rubrique) COUNT(DISTINCT Rubrique)

Exemple : Le code SQL suivant permet de convertir en minuscules le prnom des clients :
SELECT LOWER(CLIENT.Prnom) FROM CLIENT

12.1.26 PATINDEX
La fonction PATINDEX renvoie la position de la premire occurrence d'une chane de caractres correspondant 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 :
PATINDEX(ValeurARechercher, ... ChaneDeCaractres ou Rubrique)

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 :
LCASE(Expression initiale)

Exemple : Le code SQL suivant permet d'obtenir la taille des noms des clients :
SELECT LEN(CLIENT.Nom) FROM CLIENT

Exemple : Le code SQL suivant permet de convertir en minuscules les villes des clients :
SELECT LCASE(Ville) FROM CLIENT

LENGTH La fonction LENGTH peut tre utilise uniquement sur une source de donnes de type Oracle. Format d'utilisation :
LENGTH(... ChaneDeCaractres ou Rubrique)

Exemples : Le code SQL suivant permet d'obtenir le nombre de produits prsents dans le fichier Produit :
SELECT COUNT(*) FROM PRODUIT

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 :
UCASE(Expression initiale)

Le code SQL suivant permet d'obtenir le nombre de produits sur lesquelles un taux de TVA de 5,5 % est appliqu :
SELECT COUNT(PRODUIT.TauxTVA) FROM PRODUIT WHERE PRODUIT.TauxTVA = '5.5'

Exemple : Le code SQL suivant permet d'obtenir la taille des noms des clients :
SELECT LENGTH(CLIENT.Nom) FROM CLIENT

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.

Exemple : Le code SQL suivant permet de convertir en minuscules les villes des clients :
SELECT UCASE(Ville) FROM CLIENT

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,

Exemple : Le tableau ci-dessous indique la position de la premire occurrence trouve en fonction de diffrentes valeurs recherches : Valeur recherche

410

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

411

Format d'utilisation :
AVG(Rubrique) AVG(DISTINCT Rubrique)

Exemple : Le code SQL suivant permet d'obtenir le salaire moyen des employs :
SELECT AVG(EMPLOYE.Salaire) FROM EMPLOYE

non nulles prsentes dans une rubrique pour tous les enregistrements slectionns dans le fichier. Format d'utilisation :
SUM(Rubrique) SUM(DISTINCT Rubrique)

La fonction TOP ne peut pas tre utilise sur une source de donnes de type Oracle. Format d'utilisation :
TOP NbPremierEnregSlectionn

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(Chane)

Exemple : Le code SQL suivant permet d'obtenir la somme totale des salaires :
SELECT SUM(EMPLOYE.Salaire) FROM EMPLOYE

Exemple : Le code SQL suivant permet de lister les 10 meilleurs clients :


SELECT TOP 10 SUM(COMMANDE.TotalTTC) AS TotalTTC, CLIENT.NomClient FROM CLIENT, COMMANDE WHERE CLIENT.NumClient =COMMANDE.NumClient GROUP BY NomClient ORDER BY TotalTTC DESC

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 enregistrement. Si la requte contient des regroupements, il y aura un enregistrement par regroupement. Si la source de donnes contient des enregistrements, l'enregistrement retourn par la requte contiendra la valeur maximale. Si la source de donnes ne contient pas d'enregistrements, la valeur du MAX dans l'enregistrement retourn est NULL. Format d'utilisation :
MAX(Rubrique) MAX(DISTINCT Rubrique)

Remarque : La rubrique manipule par la fonction SUM ne doit pas correspondre au rsultat d'une opration. Ainsi, la syntaxe suivante gnre une erreur :
SELECT (A*B) AS C, SUM(C) FROM MONFICHIER

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 plusieurs mois une date spcifie. Format d'utilisation :
ADD_MONTHS(Date,Nombre de mois)

Cette syntaxe doit tre remplace par la syntaxe suivante : SELECT (A*B) AS C, SUM(A*B) FROM MONFICHIER

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'enregistrement.

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 :
// Code ASCII d'un caractre ASCII(Caractre) // Code ASCII du premier caractre // d'une chane ASCII(Chane de caractres)

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(Date)

12.1.33 BOTTOM
La fonction BOTTOM renvoie uniquement les n derniers enregistrements du rsultat d'une requte. La fonction BOTTOM peut tre utilise uniquement sur une source de donnes de type HyperFileSQL. Format d'utilisation :
BOTTOM NbDernierEnregSlectionn

Exemple : Le code SQL suivant permet d'obtenir le salaire maximal des employs :
SELECT MAX(EMPLOYE.Salaire) FROM EMPLOYE

LAST_DAY n'est pas gr par Informix, par DB2 ou par Sybase.

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 :
MIN(Rubrique)

Exemple : Le code SQL suivant permet de lister les 10 plus mauvais clients :
SELECT BOTTOM 10 SUM(COMMANDE.TotalTTC) AS TotalTTC, CLIENT.NomClient FROM CLIENT, COMMANDE WHERE CLIENT.NumClient =COMMANDE.NumClient GROUP BY NomClient ORDER BY TotalTTC DESC

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(Date1, Date2)

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 :
// Code ASCII d'un caractre ASCII(Caractre) // Code ASCII du premier caractre // d'une chane ASCII(Chane de caractres)

MONTHS_BETWEEN n'est pas gr par MySQL, par Informix, par DB2 ou par Sybase.

Exemple : Le code SQL suivant permet d'obtenir le salaire minimal des employs :
SELECT MIN(EMPLOYE.Salaire) FROM EMPLOYE

12.1.41 NEW_TIME
La fonction NEW_TIME permet d'obtenir une date aprs conversion de fuseau horaire. Format d'utilisation :
NEW_TIME(Date, Fuseau Horaire 1, Fuseau Horaire 2)

12.1.32 SUM
La fonction SUM renvoie : soit la somme totale des valeurs non nulles prsentes dans une rubrique pour tous les enregistrements slectionns dans le fichier. soit la somme totale des valeurs diffrentes et 412 Partie 7 : Gestion des fichiers de donnes

Remarque : Il est conseill d'utiliser la fonction BOTTOM sur une requte trie. Dans le cas contraire, 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.

Remarque : la fonction SOUNDEX utilise sur plusieurs bases diffrentes (Hyper File, Oracle, MySQL, ) peut renvoyer des rsultats diffrents selon la base utilise. SOUNDEX LIKE n'est pas gr par Oracle, par

NEW_TIME n'est pas gr par SQL Server, par MySQL, par Progress, par Informix, par DB2 ou par Sybase.

Partie 7 : Gestion des fichiers de donnes

413

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(Date, Jour)

12.1.48 LEAST
La fonction LEAST renvoie la valeur la plus petite des lments passs en paramtre; Format d'utilisation :
LEAST(Param1, Param2, ...)

Ou :
SELECT rubInt, CASE WHEN ... rubInt=3 THEN 'trois' WHEN ... rubInt=4 THEN 'quatre' ELSE ... 'autre' END

Un ou plusieurs Les mots indiqus sont mots entours de recherchs groups et dans l'ordre. guillemets

NEXT_DAY n'est pas gr par SQL Server, MySQL, par Progress, par Informix, par DB2 ou par Sybase.

12.1.49 NVL, IF_NULL, IS_NULL


La fonction NVL permet de remplacer les valeurs nulles d'une colonne par une valeur de substitution. Les fonctions IS_NULL et IF_NULL sont identiques. IS_NULL est utilis en SQL Server et IF_NULL avec les bases MySQL ou Progress. Format d'utilisation :
NVL(Nom Colonne, ... Valeur de substitution)

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 :
MATCH(Liste des rubriques) ... AGAINST [ALL] Valeur

Attention : si l'option "Ignorer les mots infrieurs " est diffrente de 0, les mots entre les guillemets infrieurs la taille prcise ne seront pas recherchs.

12.1.43 ROUND
La fonction ROUND permet d'arrondir la date au format spcifi. Format d'utilisation :
ROUND(Date, Format)

Un mot suivi du La recherche est une recherche du type "Commence par" signe "*"
le mot indiqu.

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

12.1.50 DECODE
La fonction DECODE permet d'obtenir le fonctionnement d'une instruction SI .. ALORS .. SINON. Format d'utilisation :
DECODE(Nom_Colonne, Valeur compare 1, Valeur retourne 1, [Valeur compare 2, Valeur retourne 2][, Valeur par dfaut])

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 correspondre une valeur littrale ou un nom de paramtre. La valeur de recherche peut contenir les lments suivants : Elment Un mot tout seul Signification
Le mot indiqu sera recherch. La pertinence sera augmente si le texte contient ce mot. Exemple : "WinDev" recherche le mot "WinDev".

[ALL] permet de forcer le remplacement des espaces par des "+" dans la valeur recherche. Exemple : Dans cet exemple, SAI_Rechercher est un champ de saisie et IdUserConnect est une variable.
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())

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(Date, Format)

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 fonctionnement d'une instruction SI .. ALORS .. SINON; Format d'utilisation :
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

Deux mots spa- Recherche l'un ou l'autre des rs par un espace mots.

TRUNC n'est pas gr par SQL Server, par MySQL, par Progress, par DB2 et par Sybase.

Exemple : "WinDev WebDev" recherche les textes contenant soit "WinDev" soit "WebDev".

12.1.46 COALESCE
La fonction COALESCE permet de trouver la premire expression non nulle parmi ses arguments. Format d'utilisation :
COALESCE(Param1, Param2, ...)

Un mot prcd Le mot indiqu est obligatoire. du signe "+"

Exemple : "+WinDev" recherche les textes contenant obligatoirement "WinDev".

Ou :
CASE WHEN Condition 1 THEN ... Valeur retourne 1 [WHEN ... Condition 2 THEN Valeur ... retourne 2][ELSE Valeur ... retourne par dfaut] END

COALESCE n'est pas gr par Progress ou par Informix.

Un mot prcd Le mot indiqu ne doit pas tre prsent dans le texte. du signe "-"

12.1.47 GREATEST
La fonction GREATEST renvoie la valeur la plus grande des lments passs en paramtre; Format d'utilisation :
GREATEST(Param1, Param2, ...)

Exemple : "-Index" recherche les textes ne contenant pas "Index".

Exemple :
SELECT rubInt, CASE rubInt ... WHEN 3 THEN 'trois' WHEN 4 ... THEN 'quatre' ELSE 'autre' END

Un mot prcd Le mot indiqu ne doit pas tre prsent dans le texte. du signe "~"

Exemple : "-Index" recherche les textes ne contenant pas "Index".

Pour plus de dtails sur la recherche full-text, consultez laide en ligne.

414

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

415

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 caractres qui peut tre utilis par exemple comme cl de hachage. Format d'utilisation :
MD5(Chane)

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'utilisation de cette fonction est le hachage de cl Format d'utilisation :
SHA(Chane) SHA1(Chane)

13. HYPERFILESQL CLIENT/SERVEUR


13.1 Prsentation
WinDev permet de crer des applications accdant des bases de donnes HyperFileSQL Client/Serveur. Une application HyperFileSQL Client/Serveur consiste excuter l'application sur diffrents postes utilisateur (appels machines clientes) et dporter 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.

12.1.54 SHA et SHA1


Les fonctions SHA et SHA1 calculent la somme de vrification SHA1 160 bits de la chane passe en

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 ser416 Partie 7 : Gestion des fichiers de donnes veur. 4. Utilisation de l'application. Pour plus de dtails sur HyperFileSQL Client/Serveur, consultez laide en ligne. Partie 7 : Gestion des fichiers de donnes 417

14. FONCTIONS HYPERFILESQL CLIENT/SERVEUR


Les fonctions spcifiques la gestion du moteur HyperFileSQL Client/Serveur sont les suivantes : HActiveTriggerServeur R-active un trigger serveur prcdemment dsactiv par la fonction HDsactiveTriggerServeur. 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 serveur 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/Serveur HChargeParamtre Lit un paramtre prcdemment sauvegard partir d'une procdure stocke 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- R-autorise l'accs une ou plusieurs bases de donnes accessibles par nes une connexion HGreCache Permet de paramtrer la gestion des caches dans le moteur HyperFileSQL Client/Serveur HGreServeur Permet de modifier certains paramtres du serveur.

HGreTche

Active ou dsactive une tche planifie d'un serveur Hyper File Client / Serveur. Cette fonction permet galement de connatre l'tat d'une tche planifie. 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 HyperFileSQL 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 serveur 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 avance 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 donnes 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 HyperFileSQL Client/Serveur pour une connexion HListeParamtre Renvoie la liste des paramtres sauvegards partir des procdures stockes 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

418

Partie 7 : Gestion des fichiers de donnes

Partie 7 : Gestion des fichiers de donnes

419

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- Modifie les proprits d'une base de donnes situe sur un serveur Hypernes 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'excution 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 interrompues. HRcupreLog Rcupre dans un fichier les logs du serveur raliss entre deux dates donnes HRepTravailServeur Renvoie le chemin d'un rpertoire temporaire sur le serveur. Ce rpertoire est automatiquement cr sur le serveur. Les procdures stockes excutes sur le serveur auront les droits d'criture dans ce rpertoire. Ce rpertoire sera automatiquement vid et dtruit lors de la dconnexion du client. HRestaureSauvegarde Permet de restaurer une sauvegarde effectue grce la fonction HSauvegarde (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 420 Partie 7 : Gestion des fichiers de donnes

HSupprimeOptimisationPlani- Supprime une tche d'optimisation planifie de fichiers de donnes Hyperfie FileSQL Client/Serveur HSupprimeParamtre Supprime un paramtre prcdemment sauv avec la fonction HSauveParamtre. 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 HSauvegarde. La sauvegarde est supprime physiquement du disque. HSupprimeSauvegardePlani- Supprime une planification de sauvegarde complte et/ou diffrentielle sur fie 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 connexion 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.

Partie 7 : Gestion des fichiers de donnes

421

Symbols
.JNL .Net Assemblage .REP 356 316 316 348

C
Caractre (Variable) CD (graver) Certificat SSL Chane (Variable) Chane ASCIIZ Chane de caractres Fonctions Manipulation Chane fixe sur Chane Pascal sur Champ Fonctions Proprits Clavier Traitements associs Cl Cl compose Lecture selon cl Type de cl Cl compose Cl de parcours Cl doublon Cl numrique Cl texte Cl unique Client HyperFileSQL Client/Serveur Client/Serveur COALESCE Code Aide Assistant Compltion automatique Couleur Historique Indentation automatique Points darrt Saisie assiste Traduction des messages Traitements spcifiques Vrification Collection de procdures Communication E-mails Fax Fichier XML FTP / RPC WinDev 41 204 235 41 41 155 156 155 41 41 137 137 33 324 326 329 324 324, 326 330 324, 331 326 325 324, 343 417 417 414 32 31 31 31 32 32 33 31 33 33 32 99 243 245 278 312 282 Index 423

A
Acclrer traitements Accs aux bases de donnes tierces Accs distant Fichier HyperFileSQL ADD_MONTHS Aide Code AJAX Alias de Fichier Appels entrants Appels sortants Archive Fonctions ZIP Argument de recherche Assemblage (.NET) Assigner fichier Assistant de code AVG 363 392 390 413 32 222 339 271 273 200 202 325 316 347 31 411

B
Back (Gestion) Back Office Base de donnes Tierce Binaire Fonctions Mmos binaires Blocage Enregistrement Fichier HyperFileSQL Bote de dialogue Fonctions Multilangue BOTTOM Boucle (Instruction) Bouton de regroupement Buffer (Variable) Type Buffer 125 390 392 392 153 346 371 372 371 128 132 130 412 76 30 42 42

422

Partie 7 : Gestion des fichiers de donnes

Page HTML Serveur de WebServices XML Serveur FTP SOAP Socket Tlphonie Thread Compltion automatique CONCAT Constante Continuer (Instruction) Contrle de lintgrit Cookies Couleur Code COUNT Critre de recherche Cryptage fichiers HyperFileSQL CTI

281 306 285 302 287 271 294 31 409 46 87 343 216 31 411 325 342 271

Programm Driver ODBC sur HyperFileSQL Dure (Variable)

134 364, 365 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

D
Date Fonctions Date (Variable) Type Date Type DateHeure Type Dure Type Heure DateHeure (Variable) Dates et heures DDE Fonctions Dead lock DECODE Dplacement dans un fichier Description de fichier (Variable) De liaison (Variable) De rubrique (Variable) Dialogue (botes de dialogue) Document XML Fonctions Doublon Doublons Downpload Drag and Drop Automatique Depuis lexplorateur Fonctions 424 Index 159 42 42 43 43 43 43 159 193 372 414 333 57 58 59 128 314 324, 331 377 215 133 133 135 136

F
Fax Application denvoi de fax Fonctions Serveur de fax Fentre Fonctions Proprits Fentre MDI (fonctions) Fentre popup MonChampPopup 278 279 280 278 119 137 121 93

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 Index 425

ZIP Zone mmoire Fonctions SNMP Framework Front Office FTP FTP (fonctions) FTP / RPC WinDev

202 166 194 316 390 285 286 282

Mise jour par email Proprits Rplication SQL Triggers Vue

390 400 387, 391 367 385 381

J
J++ Java (fonctions) JDBC Journal Programmation 364 188 364 356 359

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

G
Gnrer un Webservice XML Gestion assiste des erreurs Goto (Instruction) Graphe 3 dimensions Graphes Boursier Courbe Cration Exemples Fonctions Histogramme Nuage de points Prsentation Secteur Types Valeurs par dfaut Gravage Graver Fonctions Guide 308 376 77 162 161 162 162 163 164 164 161 162 161 161 161 163 204 204 205 32

L
Langage SQL LAST_DAY LDAP LEFT LEN LENGTH Liaison Types de liaisons LOWER LPAD LTRIM 367 413 270 406 410 410 344 410 409 407

Montaire (Variable) MonEtat (Mots rservs) MonFichier (Mots rservs) MonParent (Mots rservs) MONTHS_BETWEEN Mot de passe Variable Mots rservs Externe MaFentre MaPage MaSource Modulo MoiMme MonChampPopup MonEtat MonFichier MonParent Stop Multilangue Bote de dialogue

41 94 94 94 413 342 342 90 90 91 91 92 92 92 93 94 94 94 95 33 130

M
MaFentre (Mots rservs) MaPage (Mots rservs) MAPI MaSource (Mots rservs) Matrices Fonctions Manipulation MAX MCI (fonctions) MDI Fonctions Mcanisme des exception Mmo Menu Fonctions menu Menu diteur (Ruban) Message (fonctions) MID MIN Mode de blocage Modulo (Mots rservs) MoiMme (Mots rservs) MonChampPopup (Mots rservs) 91 91 248 92 151 153 151 412 183 121 105 346 121, 124 324 30 132 407 412 371, 373 92 92 93

N
Net (fonctions) NEW_TIME NEXT_DAY Nom logique Nom long NULL NULL dans HyperFileSQL Numrique (Variable) NVL 284 413 414 323 323, 348 45 341 41 414

H
Heure Type DateHeure Type Dure Type Heure Historique du code HTTP (fonctions) HyperFileSQL Client/Serveur Driver ODBC Fonctions Fonctions Client/Serveur Gestion de laccs distant (RPC) Gestion du NULL 43 43 43 32 281 417 364, 365 393 418 390 341

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 Index 427

426

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 428 Index

Protocole POP 3 SMTP SOAP SSL

246 246 302 235

R
Recherche A lidentique Gnrique Recherche denreg. Rcuprer des pages HTML Rel (Variable) Registre (fonctions) Rgle de porte des variables Regroupement Renvoyer (Instruction) REPLACE Rplication de donnes Rseau (fonctions) Retour (Instruction) RIGHT ROUND RPAD RTRIM Ruban (Editeur) Rubrique Cl 325 325 329 281 41 180 66 30 88 408 387, 391 194 87 406 414 409 408 30 328 324

S
Scuriser les transactions (SSL) Selon (Instruction) Smaphore dans les threads Serveur HyperFileSQL Client/Serveur Serveur de fax Programmation Serveur FTP Serveur SOAP Excuter des procdures Service (fonctions) Si (Instruction) Signaux Site AJAX Lien avec WinDev SMTP SNMP (Fonctions) 235 84 296 417 278 279 285 302 302 184 85 298 222 390 246 194

SOAP Fonctions Socket Fonctions Sortir (Instruction) SOUNDEX SOUNDEX2 Source de donnes (Variable) Souris Fonctions Traitements associs SQL AVG BOTTOM COUNT Fonctions HyperFileSQL INSTR LEFT LEN LENGTH LOWER LTRIM MAX MID MIN PATINDEX RIGHT RTRIM SUBSRING SUBSTR SUM TOP UPPER SSL Statistiques (fonctions) Stop (Mots rservs) STRING_AGG Structure (Variable) Structure dynamique (Variable) SUBSTR SUBSTRING SUM Surcharger une fonction WLangage SYSDATE Systme (fonctions)

302 305 287 291 88 413 413 56 181 33 367 411 412 411 405 367 410 406 410 410 410 407 412 407 412 411 406 408 407 407 412 412 410 235 154 95 409 52 54 407 407 412 102 414 185

Tableau fixe (Variable) Tableau simple (Variable) Tlcharger un fichier Tlphonie Appels entrants Appels sortants Fonctions Temporaire (Fichier) Thread Fonctions Grer les smaphores Signaux TOP Touche "Prcdent" Traduction Messages Traitements spcifiques Transaction Programmation Transaction scurise TRANSLATE Triggers TRIM TRUNC Twain (fonctions) Type Buffer Chane Date DateHeure Description de fichier Description de liaison Description de rubrique Dure Heure Montaire Numrique Police Rel Source de donnes Tableau dynamique Tableau fixe Tableau simple Variant

50 47 213, 215 271 271 273 274 362 294 301 296 298 412 125 33 33 353 354 234 409 385 408 414 182 42 41 42 43 57 58 59 43 43 41 41 60 41 56 48 50 47 44

T
Tableau dynamique (Variable) 48

U
Unicit Unicit cl Upload 324 343 213 Index 429

UPPER USB (fonctions)

410 182, 183

V
Variable Description de fichier Description de liaison Description de rubrique Globale Locale Objet automation Objet automation dynamique Police Prsentation Rgle de porte Source de donnes Structure Structure dynamique Type avanc Type Buffer Type caractre Type chane Type date Type dateheure Type dure Type entier Type heure Type montaire Type numrique Type rel Type simple Type tableau dynamique Type tableau fixe Type tableau simple Type variant Variable compose 57 58 59 64 64 54 55 60 39 66 56 52 54 47 42 41 41 42 43 43 40 43 41 41 41 39 48 50 47 44 51

Variable de fichier Variant (Variable) Vrification du code Verrou Volet (menu ruban) Vue HyperFileSQL Programmation

328 44 32 371 30 381 382

W
WDBackup WebService XML Importer Webservice XML Gnrer WinDev Fonctions diverses WinDev (Back office) Windows Fonctions WLangage Code navigateur Code serveur Surcharger une fonction WLangage 359 306 306 308 188 390 180 186 37 38 38 102

X
xBase XLS Fonctions XML Fonctions 334 199 199 312 314

Z
Zone mmoire (fonctions) 166

430

Index

Vous aimerez peut-être aussi