Beruflich Dokumente
Kultur Dokumente
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
1. INTRODUCTION
37
1.1 Quelques caractristiques du WLangage ......................................................................... 37 1.2 La programmation en code serveur et navigateur ...........................................................38
2. LES VARIABLES
39
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
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
76
3. OPRATEURS
67
5. MOTS RSERVS
90
5.1 Externe ..............................................................................................................................90 5.2 MaFentre .........................................................................................................................91 5.3 MaPage .............................................................................................................................91 5.4 MaSource .........................................................................................................................92 5.5 Modulo .............................................................................................................................92 5.6 MoiMme .........................................................................................................................92 5.7 MonChampPopup ............................................................................................................93 5.8 MonEtat ............................................................................................................................94
Sommaire 5
5.9 MonFichier ........................................................................................................................94 5.10 MonParent ......................................................................................................................94 5.11 STOP (appel du dbogueur) ............................................................................................95
6. PROCDURE ET FONCTION
96
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.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
105
Sommaire
Sommaire
123
2.1 Prsentation .................................................................................................................... 123 2.2 Fonctions de gestion des pages ..................................................................................... 123 2.3 Fonctions de gestion des menus .................................................................................... 124
125
137
6.1 Prsentation .....................................................................................................................137 6.2 Fonctions gnrales de manipulation des champs ........................................................137
140
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
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
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
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
159
3.1 Prsentation .................................................................................................................... 159 3.2 Diffrentes faons de manipuler les dates et les heures ............................................... 159 3.3 Manipuler les dates / heures prsentes dans des champs de saisie ............................ 159 3.4 Fonctions de gestion des dates et des heures ............................................................... 159
8. IMPRIMER EN WLANGAGE
174
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
9. GRER WINDOWS
180
4.4 Exemples livrs avec WinDev ......................................................................................... 164 4.5 Fonctions de gestion des graphes ................................................................................. 164
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
171
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
196
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
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
204
13.1 Prsentation ...................................................................................................................204 13.2 Gravure dun CD / DVD .................................................................................................204 13.3 Fonctions de gravure ....................................................................................................205
218
206 208
220
12
Sommaire
Sommaire
13
6. AJAX
222
10.4 Insrer des transactions scurises par SSL dans un site WebDev ..............................237
10.4.1 Principe............................................................................................................................. 237 10.4.2 Mise en place ....................................................................................................................237 10.4.3 Revenir en mode normal (transaction non scurise) dans le navigateur en cours................ 237
11. JSON
238
11.1 Prsentation ...................................................................................................................238 11.2 Obtenir des informations au format JSON ....................................................................238
11.2.1 Fonctionnement ................................................................................................................ 238 11.2.2 Exemple dutilisation de la fonction JSONExcute ............................................................... 238 11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne.................................................... 238
7. GADGETS VISTA
227
PARTIE 6 : COMMUNICATION
1. LA COMMUNICATION 243
1.1 Communication avec WinDev / WebDev ........................................................................243 1.2 Communication avec WinDev Mobile ............................................................................244
230
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.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
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
253
5. SALESFORCE
267
6. FLUX RSS
269
6.1 Prsentation ....................................................................................................................269 6.2 Comment le faire ? .........................................................................................................269 6.3 Fonctions de gestion des flux RSS ..................................................................................269
270 271
4. GOOGLE
259
276
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
16
Sommaire
Sommaire
17
292
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
282
294
285
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
287
17. SOAP
302
18
Sommaire
Sommaire
19
306
19. XML
312
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
2. FONCTIONNALITS AVANCES
339
316
20.3 Crer un assemblage .NET depuis WinDev ..................................................................317 20.4 Crer un assemblage .NET accessible par COM ......................................................... 318
20.4.1 Prsentation ......................................................................................................................318 20.4.2 Crer un assemblage .NET accessible par COM partir d'un projet WinDev..........................318
20.5 Crer le programme dinstallation dun assemblage .NET .......................................... 318 20.6 Utiliser des assemblages .NET dans une application WinDev ..................................... 319
20
Sommaire
Sommaire
21
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
371
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
381
5.1 Prsentation des vues HyperFileSQL ...............................................................................381 5.2 Intrts des vues .............................................................................................................381 5.3 Manipulation des vues ....................................................................................................381
22
Sommaire
Sommaire
23
405
385
7. LA RPLICATION DE DONNES
387
7.3 Rplication entre des bases htrognes ......................................................................388 7.4 Limitations ......................................................................................................................389
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
392
9.1 Prsentation ....................................................................................................................392 9.2 Particularits ...................................................................................................................392 9.3 Fonctions de gestion des bases de donnes tierces ......................................................392
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
417
13.1 Prsentation ....................................................................................................................417 13.2 Mettre en place une application Client/Serveur ............................................................417
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.
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. 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).
4. Boutons daccs rapide. Ces boutons correspondent aux options les plus utilises : Nouveau, Ouvrir, Sauver, Go de projet, Go de fentre ou de page, ... 5. Volets du ruban. Ces volets permettent daccder aux diffrentes options. Plusieus types de volets sont visibles : le volet "en cours". Le nom du volet est affich avec un trait orange. les volets contextuels spcifiques llment en cours (le nom du volet est en orange) les volets disponibles (nom du volet en blanc). 6. Groupe doptions. Un groupe rassemble les diffrentes options du ruban par thme.
7. Bouton de regroupement. Bouton situ lextrmit dun groupe permettant deffectuer une action spcifique (affichage des options de llment en cours, affichage de laide, ...). 8. Options du ruban. Plusieurs types doptions sont disponibles dans le ruban : Boutons cliquer Options cocher. Bouton flche permettant de drouler des options. 2 types de boutons flche sont disponibles : - les boutons flche permettant uniquement de drouler un menu. - les boutons flche permettant soit de drouler un menu (clic sur la flche), soit deffectuer une action par dfaut (clic sur licne du bouton).
30
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.
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
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
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
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
33
34
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.
37
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.
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"
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.
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.
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
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
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
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.
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.
Intervalle de donnes Le type DateHeure permet de grer des donnes comprises entre le 01/01/0001 00h00 et le 31/ 12/9999 23h59.
43
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")
excutera la requte :
SELECT * FROM CLIENT WHERE PRENOM='Jean'
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.
excutera la requte :
SELECT * FROM CLIENT WHERE NOM = 'Dupond' AND PRENOM = 'Jean'
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)
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
44
45
SELECT NomUne valeur est Option saisie coche ou Rubriques dcoche FROM NomFichiers WHERE Rubrique= ValeurSaisie
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.
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.
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
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)
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>
Passer un tableau dynamique en paramtre une procdure Un tableau dynamique peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe
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.
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
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").
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
50
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.
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
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
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
>> <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.
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
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>
>>
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
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>
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)
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
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.
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.
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") ...
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.
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
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
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
Vide
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
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
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.
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 :
64
65
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.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
67
Par exemple :
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.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
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
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
69
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 ...
Infrieur ou gal : <= Suprieur ou gal : >= Strictement infrieur : < Strictement suprieur : > Commence par : [=
"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.
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
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 ...
La ligne :
SI x>=5 et x<=10 ALORS ...
70
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 ]])
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.
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
72
73
page : MaFentre.gDure accs une rubrique d'un fichier de donnes : Client.Nom accs une colonne de table : Table.Colonne1
<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>}
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
<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.
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.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 /
75
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>] ...
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
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
77
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
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
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
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
// 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.
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
81
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.
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
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
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>
84
85
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
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
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 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
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
Instruction TANTQUE
TANTQUE <Condition> ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>
Instruction TANTQUE
TANTQUE <Condition 1> ... SI <Condition> ALORS RENVOYER <Valeur> ... FIN
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.
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>
Instruction POUR
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] SI <Condition> ALORS RENVOYER <Valeur> FIN
88
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
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
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
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
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
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.
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-
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.
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
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.
96
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.
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.
Remarque : Pour des raisons de lisibilit des programmes, le mot-cl PROCEDURE peut tre remplac par le mot-cl FONCTION.
98
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.
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> )
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>))
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.
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>)
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
MaPage permet de manipuler la page en cours MonEtat permet de manipuler l'tat en cours.
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.
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)
103
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)
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>
Pour provoquer une multisyntaxe, il faut ajouter l'attribut d'extension <multisyntaxe> la mthode de la classe drive.
PROCEDURE mthode(...) <multisyntaxe>
104
105
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
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
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.
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
106
Important : La gestion automatique des erreurs et des exceptions fonctionne uniquement pour le traitement pour lequel elle est dfinie.
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.
109
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.
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.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
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
Membre Mthode
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
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").
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.
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.
112
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>])
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.
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.
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.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.
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
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.
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
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.
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.
120
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
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.
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.
122
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.
WB
Pour plus de dtails sur ces fonctions, consultez laide en ligne. 124 Partie 3 : Gestion des fentres, des pages et des champs
125
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.
126
127
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.
la saisie immdiate, en proposant l'utilisateur de saisir directement dans la bote de dialogue la valeur voulue.
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.
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".
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.
WB
PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI.
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.
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
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.
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.
132
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.
Exemple didactique de Drag and Drop HTML 5 (WebDev) : Drag and Drop programm dans un site WebDev.
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.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.
134
135
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
139
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.
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
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.
147
148
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.
Dans cette matrice, n = 2 lignes et p = 4 colonnes. La valeur de l'lment (ligne 2 , colonne 3) est 7.
151
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.
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.
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.
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
155
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.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).
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
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.
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.
161
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.
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).
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"
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.
165
WD WebDev
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
166
167
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
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.
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
170
171
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
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.
// 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);
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
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.
d'impression du WLangage ncessite une configuration particulire de votre serveur. Pour plus de dtails, consultez laide en ligne.
175
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.
176
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.
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
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.
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.
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.
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.
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
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.
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.
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.
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
WD
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
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.
WD
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
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.
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
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.
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.
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.
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
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
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.
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.
192
193
AppliSupprimeVersion
Supprime une version de l'historique des versions prsent sur le serveur d'installation de rfrence.
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
WD
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
195
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.
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.
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.
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
199
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.
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).
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.
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)
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.
203
WebDev WD
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.
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.
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
205
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
207
reconnatre automatiquement les diffrents mots crits directement sur l'cran l'aide du stylet (mthode appele "Transcriber"). Par exemple :
Par exemple :
reconnatre automatiquement des lettres saisies avec un certain alphabet (mthode appele "Reconnaissance des lettres"). Par exemple :
reconnatre automatiquement des blocs de mots saisis avec un certain alphabet (mthode appele "Reconnaissance des blocs").
208
209
210
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.
213
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.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
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, ...
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.
216
217
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.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.
218
219
5. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtection de l'encodage est automatique. 6. Validez
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
220
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 :
Visibilit X
222
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
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
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
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.
ContexteFerme
226
227
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.
229
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).
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.
231
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
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)
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
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).
234
235
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)
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)
236
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)
Il est possible par exemple de : Rcuprer la valeur dun membre de lobjet dynamique. Par exemple :
MesContacts:id
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.
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
239
PARTIE 6 Communication
240
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,
Partie 6 : Communication
243
HTTP
Tlphonie
Socket
SMS
X X X
X X X
X X X
X X X X X
244
Partie 6 : Communication
Partie 6 : Communication
245
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
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
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.
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
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
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)
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.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.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
252
Partie 6 : Communication
Partie 6 : Communication
253
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.
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.
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
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
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.
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
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
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.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])
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)
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.
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.
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.
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.
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.
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
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.
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
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
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.
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.
telToucheEnfonce Permet de connatre l'historique des touches enfonces sur le clavier tlphonique.
Partie 6 : Communication
WDMobile
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, ...).
PrfixeNational
Essai
Indice Message
276
Partie 6 : Communication
Partie 6 : Communication
277
WD WebDev
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.
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
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)
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
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).
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
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.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
-- 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)
282
Partie 6 : Communication
Partie 6 : Communication
283
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.
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.1.2 Exemple
WinDev est livr en standard avec un exemple de gestion des sockets : WD Messagerie instantane.
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.
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.
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.
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.
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.
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
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.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.
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.1.2 Exemple
WinDev est livr en standard avec un exemple de gestion des threads : WD Pool de threads.
Partie 6 : Communication
295
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.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
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
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
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
SignalDtruit
298
Partie 6 : Communication
Partie 6 : Communication
299
// Ecoute des requtes de // connexion // et de tests de prsence ThreadExcute("ThreadPresence",... threadNormal,... "EcouteDemandePresence") ThreadExcute("ThreadRequete",... threadNormal,... "EcouteDemandeConnexion")
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.
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.
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"
17.1.2 Exemple
WinDev est livr en standard avec un exemple utilisant les fonctions SOAP : WD Utilisation SOAP.
17.3.1 Principe
Partie 6 : Communication
303
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
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
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.
Occurrence
Type
Valeur
est quivalent :
monWebservice.VariableRequete..Valeur = SAI_Valeur
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
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.
308
Partie 6 : Communication
Partie 6 : Communication
309
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.
<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.
312
Partie 6 : Communication
Partie 6 : Communication
313
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
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"
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
Remarque : Pour excuter un programme .NET disponible sur le rseau local, slectionnez licne "Intranet local" et rglez la scurit sur "Confiance totale".
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.
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.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.
318
Partie 6 : Communication
Partie 6 : Communication
319
320
Partie 6 : Communication
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".
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
325
Options
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
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
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.
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.
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
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)
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 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
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.
HRecule
332
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
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()
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.
334
335
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.
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.
337
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.
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
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.
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
341
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.
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.
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
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".
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)
345
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,
347
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
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".
348
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.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.
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
351
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".
HListeIndexFullText
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.
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
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
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
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.
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
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.
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.
357
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.
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.
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").
359
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
360
361
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.
362
363
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.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.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.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
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
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.
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.
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
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.
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-
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
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.
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)
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 !
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.
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.
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.
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
375
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.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.
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
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.
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.
HDtruitVue
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)
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.
<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)"
Certaines rubriques du fichier Pour slectionner uniquement certaines rubriques du fichier, il faut utiliser la syntaxe suivante :
<Rsultat> = HCreVue(<Nom Vue>,... <Nom Fichier>, <NomRubrique>)
<Nom Vue> est le nom de la vue cre. <Nom Fichier> est le nom logique du fichier de base de la vue. <NomRubrique> est la liste des rubriques 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
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.
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".
385
<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.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
387
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.
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
389
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).
390
391
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, ).
392
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
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
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
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
399
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
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
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
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
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
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
407
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
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)
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)
%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.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
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.
Exemple : Le code SQL suivant permet d'obtenir la somme totale des salaires :
SELECT SUM(EMPLOYE.Salaire) FROM EMPLOYE
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
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)
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.
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.
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.
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())
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, ...)
Ou :
CASE WHEN Condition 1 THEN ... Valeur retourne 1 [WHEN ... Condition 2 THEN Valeur ... retourne 2][ELSE Valeur ... retourne par dfaut] END
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 :
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 "~"
414
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)
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
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.
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
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
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
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
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
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
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
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