Vous êtes sur la page 1sur 59

GUIDE DE FORMATION

Windev

JEAN CLAVER MOUTOH Ingnieur Informatique & Ptrole 05 162 543/04 329 929

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C ours W inD ev N um ro 0
Que fait-on avec WinDev ?

WinDev est un AGL (Atelier de Gnie Logiciel). Il vous permet de dvelopper des applicatio ns dans tous les domaines : Gestion (Comptabilit, Paie, Finances, Commerce, Stock, ) Industrie (robots, caisses, automates, balances, lecteur de badge, supervision, ...) Mdical MultiMedia Internet Accs distant Les applications WinDev accdent toutes les bases de donnes, relationnelles ou non du march. Toutes les bases de donnes sont supportes. WinDev est livr en standard avec Hyper File , une puissante base de donnes relationnelle, dj utilise sur des millions de sites ! WinDev est un outil de dveloppement complet qui intgre tous les outils ncessaires au cycle de ralisation dune application. Contrairement dautres langages de dveloppement traditionnels, il nest pas ncessaire de chercher et de rajouter des modules pour pouvoir concevoir, tester et installer une application. Le L5G (Langage de 5me Gnration) de WinDev, le W-Langage, vous tonnera par sa simplicit : quelques heures suffisent pour apprhender le langage, une semaine suffit en gnral pour matriser toute sa puissance ! WinDev permet de suivre, tape par tape, de la conception la finalisation, le cycle complet du dveloppe- ment dune application. WinDev propose certainement lenvironnement de travail le plus puissant, le plus facile et le plus intgr du march ! Vos quipes creront facilement de superbes applications. Lditeur de fentres de WinDev est 100% WYSIWYG ("Ce que vous voyez est ce que vous aurez"). Il permet de raliser facilement de superbes fentres relies aux donnes.

Page 2 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C ou rs W in D e v N u m ro 1 O b jectifs : Connatre les lm ents de base de l'diteur W inD ev. C ration d'un convertisseur Francs / Euro. P r req u is : Aucun

Pour ce prem ier cours, nous allons crer un convertisseur Franc / Euro. Lancer W inD ev 9 en double cliquant sur son icne : .

La fentre d'accueil apparat (si ce nest pas le cas, ferm ez le projet, quittez puis relancez W inD ev) :

Cliquez sur Cre r u n p rojet. La fentre Assistant vous indique quelle va vous aider en fonction de vos choix. O n n'en attend pas m oins delle. Cliquez sur Su ivan t. C ette fentre va vous perm ettre de saisir le nom de ce nouveau projet et le lieu de stockag e physique des lm ents constitutifs.

Page 3 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Inscrivez convertisseur dans la zone nom , il sera repris autom atiquem ent dans le cham p du bas. C ontinuez en cliquant sur S u ivan t. C rez un Type de projet Excutable puis S uivant.

Page 4 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Prenez le Thm e de G aba rit par dfaut ou choisissez en un autre. Cliquez sur Su ivan t.

Le choix des langues ne nous intresse pas pour l'instant. C liquez sur Su ivan t

Page 5 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C liquez sur Su ivan t et ign orer le s a sse m blages D O TN E T d an s le proje t

C om m e vous travaillez seul pour cet cran, faites un clic sur suivant.

Page 6 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C hoisissez N e p as u tiliser d A n aly se puisque pour notre projet nous n'utiliserons pas de fichiers de donnes.

C ontinuez en cliquant sur Su ivan t et T erm in er.

Page 7 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

L'assistant va vous poser la dernire question ? V oulez vous crer une fentre ?

Cliquez Cre r u n e fen tre puis choisissez V ierg e dans l'onglet S tan d ard . V alidez par OK.

A ce stad e nous avons une fentre vide da ns l'diteur. Il nous reste lui donner un nom , une taille et dfinir quelques com p ortem ents. Placez la souris dans la fentre vierge et faites un clic droit. D ans ce m enu contextuel, valid ez D e scrip tion . V ous obtenez la fentre rem plir com m e ci-dessous :

Page 8 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

R em plissez les divers cham ps de faons identiques et slectionnez l'onglet IH M (Interface H om m e-M achine).

C hangez la taille, le fait quelle ne sera pas redim ensionnable puis valid ez par O K . R em arq uez les diffrences, vous avez m aintenant une fentre avec un nom , un titre et une taille dfinie.
Page 9 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Il est tem ps de sauvegard er, C liquez sur Fich ier puis E n reg istrer.

Cliquez sur le bouton E n registrer. A l'intrieur de cette fentre, placez 4 objets : 3 "ch am p s d e saisie" et un bouton (faites un glisser/dposer ou drag & drop des cham ps dans la fentre Bienvenue dans le m ga convertisseur ).

Le prem ier cham p se nom m era fran c et aura com m e libell "Z one francs :". Cliq uez 2 fois dessus pour en m odifier les caractristiques :

Page 10 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Le second se nom m era tau x et aura com m e libell "Taux de change :". Le troisim e se nom m era con vertir et aura com m e libell "R sultat de la conversion :". Le bouton (sans cliquer sur la petite flche vers le bas place juste en dessou s) enfin se nom m era calcule et aura com m e libell "calcule". V oici quoi doit ressem bler votre fentre (avec en surim pression le nom des cham ps) :

Il nous reste m ettre le code correspondant dans le bouton "calcule". Pour cela , faites un clic droit dessus et choisissez "Cod e".

Page 11 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Entrez la squence com m e indiqu ci-dessus puis ferm ez la fentre de l'diteur de code : cliquez sur l'icne de ferm eture en haut droite de lcran (croix du bas).

Il est tem p s d'e n registre r notre projet pa r le m e nu Fich ie r / E n re g istre r tou t. U ne fois l'en registrem e n t a ch ev, nou s allo n s tester le projet, pour cela cliqu ez sur La n cer le te st d u p roje t.

W inD ev vous dem a n d e de dfin ir la prem i re fen tre de notre m ga projet, cho isissez "d e p a rt" da ns la co m b o et v alidez. V ou s av ez m a inten a n t deva nt vous notre su p er con vertisseu r. M ais a vou ez qu 'il est fra nch em ent m oche : - trop gra nd ; - co u leu rs tristes ; - et m m e de s co m p ortem en ts pa r dfa ut p eu pratiq u es. Le sq u els ? C 'e st sim ple : Essa y ez de sa isir le ta ux de con ve rsion de l'eu ro 6,559 5 7 ! C o m m e vous le voyez, le ch a m p ne prend q ue 2 chiffre s a pr s la virg u le ! D e plus vou s allez tre ob lig de le sa isir cha q ue fois . N ous a llons rem dier tous ce s petits dta ils : Pour la ta ille de la fen tre, pla cez votre so u ris sur l'a n g le infrieur droit de la fen tre "depart" : U ne fois que le cu rseur ch a n ge d'a sp e ct, ten ez app uy le bou to n ga uch e de la sou ris et rem on tez vers l'a n gle su prieur ga uch e. R el ch ez la sou ris qu a nd la ta ille sou h a ite sera atteinte. La cou leur de fond n 'e st pa s trs gaie. C lic droit n im p orte o da ns la fen tre : D e scrip tio n , puis on gle t S ty le et C o m b o "G a b a rit e n co u rs". Pren ez O ra n ge. Validez 2 fois pa r O k .
Page 12 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C h a n geon s le co m p ortem ent du bou ton "ta u x", fa ites un clic droit de ssu s, D e scrip tio n . Vrifiez que le typ e so it N u m riq u e . M a inten a nt da ns la zone M a squ e de sa isie , fra pp ez 9,9 9 9 9 9 . A ppliq u ez les m odifications pu is cliq u ez sur le bouton (en ba s ga uch e ).

E d ite r le co de

Insrer le co de : M oi-m m e = 6.5 5 95 7 da n s la zone "In itia lisa tion de ta u x ". Ainsi ch a q ue dm a rra g e du con vertisseur la zone de sa isie sera rem p lie. N otez que nous a u rions pu crire : ta ux= 6.5 595 7. M oi-m m e d signe l'objet da ns lequ e l on se trouve.

R eferm ez la fen tre en cliqu a nt sur la cro ix du ba s (en h a ut droite). R e la ncer le te st de l'a pplication en cliq u a nt sur et u tilisez votre su p er con vertisseu r.

Page 13 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C o u rs W in D e v N u m ro 2 O b je ctifs : C onnatre les objets de base de W inD ev avec m anipulation des : com bo-box, interrupteurs, tables m m oires, P r re q u is : C ours W inD ev Num ro 1. Pour ce second cours, nous allons crer une fentre com porta nt plusieurs objets de base dont nous allons tudier le com portem ent. Crez un projet nom m TP2 sans Analyse et une fentre nom m e slecteurs et B onjour pour Titre .

Insrez un cham p slecteur lintrieur de votre fentre. Allez dans sa description (clic droit / D escription) dans la zone N o m du cham p inscrivez : Civilit. Idem dans le Lib e ll du cham p. Dans la zone O p tio n s inscrivez : M a d e m o ise lle Madam e M o n sie u r Rajouter un cham p de saisie que vous nom m erez ch o ix avec com m e libell Elm ent slectionn : . Votre fentre doit ressem bler ceci :

Page 14 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Vous allez faire en sorte que le cham p Elm ent slectionn se renseigne selon la Civilit. Pour cela, allez dans le C o d e du cham p civilit (clic droit) dans la zone A chaq ue m odification de Civilit et saisissez le code suivant : S E L O N C ivilit CAS 1: ch o ix = "M a d a m e " CAS 2: ch o ix = "M a d e m o ise lle " CAS 3: ch o ix = "M o n sie u r" F IN Com m e vous le rem arquez, W inDev ne renvoi pas le libell du choix effectu m ais lind ex (ou position) de llm ent (1, 2 ou 3). Testez la fentre en cliqua nt sur G o. Le s liste s d ro u la n te s Crez une nouvelle fentre que vous nom m erez liste et Liste droula nte en T itre . A droite de lcran, cliq uez sur le 2 me onglet puis sur le bouton droit de la souris pour pouvoir choisir N o u ve lle fe n tre . A lintrie ur, placez : U ne com bo ( C r e r u n e co m b o ) que vous nom m erez liste et qui aura com m e libell Civilit (ne pas saisir de liste de valeurs afficher). U n cham p de saisie nom m ch o ix et ayant C h o ix com m e libell. U n bouton nom m rem plir et ayant com m e libell Rem plir la liste Civilit . La fentre ressem blera ceci :

Page 15 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

N ous allons program m er le bouton pour quil rem plisse la com bo avec les lm e nts souhaits (M ada m e, M adem oiselle, M onsieur). Puis nous allons dfinir le com portem ent de la com bo pour quelle affecte le cham p choix . Dans la zone Clic sur re m p lir du C o d e du bouton criv ez le code suivant : ListeSupprim eTout(liste) // Pour viter dajouter les lm ents chaque clic sur le bouton ListeAjoute(liste,"M adam e") ListeAjoute(liste,"M adem oiselle") ListeAjou te(liste,"M onsieur") Vrifiez que votre liste soit correcte m ent rem plie en cliqua nt sur le bouton R e m p lir puis en louvrant avec la flche vers le bas :

Dans la zone slection dune ligne de du C o d e de la com bo C ivilit crivez le code suivant : choix= liste..ValeurA ffiche Par cette sim ple ligne vous dem andez la com bo de copier la valeur affiche dans le cham p choix . S a u ve g a rd e z e t te s te z la fe n tre . N oubliez pas dutiliser laide pour approfondir vos connaissanc es !! Le s ta b le s m m o ire s : Le cham p table perm et de sim plifier l'affichage et la saisie d'inform atio ns stockes en m m oire ou provenant d'un fichier de donnes, d'une vue ou d'une req ute. Une table est com pose de lig nes et de colonnes. L'intersection d'une ligne et d'une colonne dfinit une cellule. U ne table peut tre gre ligne par ligne, colonne par colonne ou cellule par cellule. Les inform ations affiches dans la table peuvent : tre dterm ins par program m ation : on parle alors de T a b le M m o ire ; prove nir d'un fichier de donnes ou d'une requte : on parle alors de T a b le fich ie r .

Les tables perm ette nt de slectionner un ou plusieurs lm ents de la table.

Page 16 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

P o u r cr e r u n ch a m p d e ty p e T a b le : 1. Sous l'diteur de fentres, cliquez sur l'icne .

2. Cliquez dans la fentre la position o le cham p doit tre cr. L'assistant de cration d'un cham p table se lance autom atiquem ent. Pour afficher les caractristiques du cham p, slectionnez l'op tion D escription dans le m enu contextu el du cham p. D eux types d'inform ations peuvent tre visualis es : les inform ations concernant la table dans son ensem ble (il suffit de slectionner le nom de la table) ; les inform ations concernant chacune des colon nes de la table (il suffit de slection ner le nom d'une des colonnes de la table).

Pour notre exem ple, crez une fentre nom m e ta b le m e m et Table m m oire pour Titre, crez un cham p de type table et positionn ez le sur la fentre. Indiquez lassista nt que vous allez rem plir la table vous-m m e. Cliqu ez sur T e rm in e r pour sortir de lA ssistant, sans vous soucier des autres choix quil vous prop ose. N ous allons m odifier m anuellem ent les proprits de la table. Pour ce faire, cliquez sur la table avec le bouton droit de la souris pour faire apparatre le m enu contextu el. Choisissez D e scrip tio n . N om m ez la table m a ta b le . Crez 3 colonnes en appuyant 2 fois sur le bouton N o u ve a u . Pour la prem ire colonne : Nom m ez la N o m , son type restera T e x te , dans la zone Titre de longlet G n ra l incrivez Le N o m . D ans la zone ta ille d e sa isie inscrivez 5 0 . Ainsi lutilisateur ne pourra pas inscrire un nom de plus de 50 caractres. Pour la deuxim e colonne : Nom m ez la P r n o m , son type sera T e x te , dans la zone T itre , inscrivez Le P r n o m et 20 caractres de taille de saisie. Pour la troisim e colonne : Nom m ez la A g e , son type sera N u m riq u e , dans la zone T itre inscrivez A g e , dans la com bo m a sq u e d e sa isie trouv ez le m asque 9 9 9 (en haut de liste), cela signifie que seuls des entie rs de 3 chiffres m axim um seront accepts. U ne fois ces m anipulations ralises vous pouvez cliquer sur A p p liq u e r et O k pour valider vos choix.

Page 17 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Ajouter 4 Bouto ns : Le prem ier se nom m era re m p lirta b le et aura com m e libell R e m p lir ; Le second se nom m era su p lig n e et aura com m e libell Su p p rim e r ; Le troisim e se nom m era vid e ta b le et aura com m e libell V id e r la ta b le ; Le quatrim e se nom m era q u itte r et com m e libell Q u itte r . Voici une reprsentation de votre fentre :

N ous allons tudier les diffre nts cod es perm ettant de rem plir la table avec des inform ations, supprim er la lig ne slectio nne, vider com pltem ent la table et enfin ferm er la fentre. Dans la zone C lic s u r re m p lirta b le du bouton R e m p lir , insrez le code suiva nt (nhsitez pas em ployer le copier-coller pour viter de le retaper) :
TableA joute(m ata ble,"Jesus"+ T A B+ "C hrist"+ TA B + 100 ) TableA joute(m ata ble,"D ieu "+ TA B+ "Em m a nuel"+ T A B + 10) TableA joute(m ata ble,"M outoh "+ TA B+ " Cla ver"+ TA B + 13 ) TableA joute(m ata ble,"A gnro "+ TA B + "Pa sca lyne "+ T A B + 22) TableA joute(m ata ble,"M outoh "+ T A B+ "C hlo "+ TA B + 1)

Jsus correspond au Nom , C hrist au Prnom et 100 lge. TAB indique le changem ent de colonne. Utilisez laide pour avoir plus de renseign em ents sur la fonction Tablea joute

Page 18 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Dans la zone clic su r su p lig n e de S u p p rim e r , insrez le code suivant : TableS u pp rim e(m atable) Dans la zone clic su r vid e ta b le de V id e r la ta b le , insrez le code suivant : TableS u pp rim eTo ut(m atable) Dans la zone clic su r q u itte r de Q u itte r , insrez le code suivant : Ferm e Testez les diffrents bouto ns et appuyez sur la loupe ( cot du nom de la colonne) pour tester son com portem e nt par dfaut. Com m e vous pouvez le constater, W inD ev est puissant et peu de lignes de codes suffise nt. Il est bien vident que le rem plissage de la table peut tre fait partir de la lecture dun fichier. Pour term iner ce cours, il nous reste faire une fentre de dpart com portant 3 boutons qui ouvriront les diffrentes fentres. Crez donc une nouvelle fentre vierge que vous nom m erez d e p art , son Titre sera B onjour . Insrez -y 4 boutons : 3 serviro nt lancer les fentres, 1 quitter lapplication :

Pour indication, le code douv erture dune fentre est : ouvre, le code de ferm eture est : ferm e. Je vous laisse m ettre le code correspondant. Il ne vous restera qu ne pas oublier denregistrer cette fentre pour pouvoir la dclarer com m e prem ire fentre du projet. Dans la zone exploratrice des lm ents du projet, faites un clic droit sur la fentre dpart et choisissez P re m i re fe n tre d u p ro je t .

Page 19 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C o u rs W in D e v N u m ro 3 O b je ctifs : Travailler avec un fichier de donnes : Etude du gestionnaire danalyse, M anipulation des tables m m oires, M anipulation de donnes, Cration dtats, P r re q u is : C ours W inD ev N um ro 1 et 2 Lobjectif de cette leon est de vous fam iliariser avec lutilisation des fichiers, du gestionnaire danalyse et de la conception dtats. Vous allez com m encer par crer un nouveau proje t nom m TP3. Dans lassistant, vous slection nerez votre thm e prfr, confirm erez le choix de cr a tio n d u n e A n a ly se et finirez le processus de lassistant. U n nouvel assistant de cration danalyse va apparatre, cliquez sur S u iva n t . Vous pouvez choisir entre un M odle Logique de D onnes et un M odle C onceptuel de D onnes. Cliquez sur S u iva n t pour choisir le M LD. Dans la zone Nom de lanalyse appelez l : T P 3 et vrifiez quelle soit bien associe au projet en cours, cliquez ensuite sur S u iva n t . N ous ne donnero ns pas de m ots de passe lanalyse donc cliquez encore sur S u iva n t . Cette nouvelle fentre vous dem ande de choisir le type de base de donnes que vous voulez "attaquer". C est ici par exem ple que vous pourriez dcider dutiliser une base de donnes tierce du type M ysql, Access ou autres. C om m e le but de cette leon est de travailler avec W inD ev nous allons faire en sorte de C r e r u n e n o u ve lle d e scrip tio n d e fich ie r . C e choix tant valid nous allons m aintenant crer notre structure de fichier. En fait nous allons program m er une m ini gestion de budget fam ilial. Pour cela on va utiliser un seul fichier des m ouv em ents dans lequel on inscrira le descriptif des oprations, la date de lopratio n, le m ontant au dbit ou le m ontant au crdit. Cela devrait vous faire penser votre relev de com pte bancaire. Dans la zone N o m , vous allez indiquer le nom suivant : M o u ve m e n t . Rem arquez les cham ps suivants qui se rem plissent autom atiquem ent. Vrifiez que la case Le fichier possde un identifiant autom atique soit coche. N ous allons ainsi crer un identifiant autom atique par W inDev. Lidentifia nt autom atiq ue est com parable un com pteur, cest lui qui vous garantit lunicit de vos tuples.

Page 20 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Cliquez sur S u iva n t . La nouvelle fentre vous dem ande de confirm er le fait que vous voulez travailler avec des fichiers de type H yp er file (Form at propritaire W inD ev). Cliquez sur S u iva n t p uis de nouveau sur S u iva n t . La nouvelle fentre vous propose des optio ns RAD (R apid Application D evelopm ent). Le RAD est oublier, cest W inD ev qui fait tout, vous napprendrez rien le voir faire, il vaut m ieux que a soit vous qui crez que lui. Donc dcochez ces cases et cliq uez sur T e rm in e r . Vous voil m aintena nt dans le gestionnaire danalyse, vous vous trouvez plus exactem e nt dans la fentre de description des fichiers. C est ici que nous allons dterm iner la com position de chaque attribut de notre fichier m ouvem ent. Vous pouvez rem arquer que notre identifiant est dj cr Idm ouvem ent et vous voyez la cl jaune gauche qui sym b olise lidentifiant. Nous allons insrer les rubriqu es suiva ntes :

Nom Date D escriptif D pense

Lib e ll Date de lopration D escription de lopration M ontant D bit

Type Date Texte N um riq ue (Form at 999 999,99)

T a ille Sera rem pli autom atiquem ent 50 Sera rem pli autom atiquem ent

Recette

M ontant Crdit

Idem

Idem

Pour insrer, cliquez sur une ligne vide dans la rubrique choisie. A vous de bien rem plir vos cham ps, cela ne devrait vous poser aucun problm e. U ne fois la saisie term ine, cliq uez sur O K . Vous pouvez m aintenant R e to u rn e r so u s l d ite u r d e W in D e v . C hoisissez ensuite
Page 21 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

A lle r d ire cte m e n t d a n s l d ite u r W in D e v et O K . Voici une reprsentation de ce que vous devriez obtenir

Ce drapeau sert lancer la gnration de lanalyse. En effet, chaque fois que vous crez ou modifiez une structure de fichier, vous devez lactiver pour synchroniser lanalyse et les champs des fentres qui accdent aux donnes.

M aintena nt que votre fichier est dcrit, il ne vous reste plus qu gnrer lanalyse. N ous allons m aintenant fabriquer les fentres de notre applica tion. Allez dans le m enu F ich ie r / N o u ve a u et cliqu ez sur Fe n tre . C hoisissez une fentre vierge. Cette fentre sera la prem ire fentre de notre application. D ans sa description (clic droit sur la fentre), vous lui donnerez les caractristiques suivantes : N om logique : d p art D escription : Fe n tre p rin cip a le d e la p p lica tio n Titre : B ie n ve n u e d a n s vo tre m in i co m p te b a n ca ire A p p liq u e z les m odificatio ns et cliquez sur O k .

Page 22 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

N ous allons insrer dans cette fentre une table m m oire qui sera le conteneur du fichier. C hoisissez un cham p table dans la barre doutils et positionnez le sur votre fentre. D ites lassistant que vous rem plirez la table vous-m m e, cliquez sur S u iva n t . C hoisissez Type de T a b le e n a ffich a g e puis Te rm in e r . La table est dfinie par dfaut, allez dans la D e scrip tio n (clic droit sur la table). Le nom de la table : Tm ouv N om de la colon ne 1 : tdate Type de la colon ne 1 : Date Titre de la colon ne 1 : Date N om de la colon ne 2 : tdescrip tion Type de la colon ne 2 : Texte Titre de la colon ne 2 : D escription de lopration Taille de saisie : 50 N om de la colon ne 3 : tdbit Type de la colon ne 3 : N um rique Titre de la colon ne 3 : D pense N om de la colon ne 4 : tcrdit Type de la colon ne 4 : N um rique Titre de la colonne 4 : R ecette N om de la colon ne 5 : cl Type de la colon ne 5 : N um rique M asq ue de saisie : 999 999 999. Dans longlet IH M de cette 5 me colon ne, dcochez V isib le , nous m ettro ns dans ce cham p lidentifiant de la lig ne. Il nest pas ncessaire de le m ontrer lutilisateur, cest pour que je vous conseille de le m ettre invisible.
Respectez les mmes conventions de nommage que celles indiques car tout le reste du projet sappuiera sur ces noms l !

Page 23 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

U ne fois tous les cham ps renseigns, cliquez sur A p p liq u e r puis O K Voici ce quil vous reste concevoir pour term in er notre projet :

N om : ajout N om : su pprim e N om : im prim e N om : qu itte

N om du ch am p : S olde Type : N u m rique

Il m e sem ble que a fait longtem ps que vous nav ez pas sauvegard votre projet ! ce nest pas trs prudent N oubliez pas de dterm iner cette fentre com m e la prem ire fentre du projet M aintena nt que le dcor est plant, nous pouvo ns com m e ncer la program m ation. La prem ier chose faire est de dire W inDev de nous crer le fichier M o u ve m e n t sil nexiste pas, pour cela allez dans le m enu Projet / C ode du projet et dans la zone In itia lisa tio n d e T P 3 inscrivez le code suivant : H Cratio nSiInexistant(M o uvem ent) R e m a rq u e : C ette ligne indique W inD ev de com m encer chercher si le fichier M o u ve m e n t existe, sil ne le trouve pas il le conoit. Le code plac dans cette zone est excut avant le chargem ent de la prem ire fentre. Le code du bouton Q uitter est trs facile : Dans clic sur Q u itte r inscrivez : Ferm e Voyo ns m aintenant la dcom p osition possible des vnem ents. Il faut quau C hargem ent de la fentre la table se rem plisse avec les enregistrem ents conten us dans le fichier situ sur le disque dur. Pour cela nous allons parcourir lensem ble des lignes du fichier M o u ve m e n t.fic et les placer les unes aprs les autres dans la table m m oire. C est ce que nous allons faire m aintenant.
Page 24 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Allez dans le code de la fentre dans la zone In itia lisa tio n d e d p a rt et saisissez le code suivant :

H LitPrem ier(M o uvem ent,IDM o uvem en t) TANTQ U E PAS H EnD ehors TableA joute(Tm o uv,M ouv em ent.Date+ TAB+ M o uvem ent.D escriptif+ TAB+ M ouve m ent.Dpense+ TAB + M ouvem e nt.Recette+ TAB+ M ouvem ent.I D M ouvem ent) H LitSuiva nt(M o uvem ent) FIN

E x p lica tio n d u co d e : H LitPrem ier(M o uvem ent,IDM o uvem ent) // Cette ligne ordonne W inD ev douv rir le fichier M ouvem ent et de lire la prem ire ligne en plaant les cham ps correspondants en m m oire. TANTQ U E PAS H enD ehors // Ici on com m ence une boucle qui sera vraie tant que lon reste dans le fichier. Le m ot cl H endehors renv oie V rai si on est hors du fichier. D onc PAS H enD ehors est vrai tant que la fin du fichier nest pas atteinte. C est tout sim ple en fait, non ? La squence tableajoute est connue, elle perm et de positionner du texte - ici les rubriqu es du fichier - lintrieur dun fichier. H litsuivant(M ouvem ent) // Fait descendre le pointeur du fichier dune ligne vers Le bouton A jo u te r va ouvrir une fentre de saisie qui nous perm ettra de rentrer les inform ations. Donc le code sera dans C lic s u r a jo u t : O uvre (saisie) Il est norm al que W inD ev vous renvoie un m essage derre ur si nous essayons dexcuter le projet car la fentre saisie nexiste pas, cronsla de suite. Fichier / N ouveau / Fentre Dans la description de la fentre : N o m lo g iq u e : saisie D e s crip tio n : Fentre de saisie T itre : S aisissez votre op ration Faites glisser les cham ps D a te , D e s crip tif , D p e n s e , R e ce tte sur la fentre sa isie .

Page 25 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Cliquez sur un champ en tenant le bouton gauche de la souris enfonc, faite glisser et dposez sur la fentre. Nhsitez pas changer la mise en forme du champ. Le fait de faire glisser le champ vous garanti que WinDev peut faire lassociation entre le champ sur la fentre et la rubrique du fichier.

Cet onglet vous permet de slectionner les fichiers constituant votre analyse. Je vous laisse chercher quoi correspondent les autres.

Votre fentre devrait correspo ndre celle-ci :

Pour tre sr que chaque cham p est bien li une rubrique du fichier, cliquez sur lun dentre eux et vrifiez dans la barre de m essage en bas gauche que le m essage Li : M ouv em ent.XXXXXX soit prse nt. Cette fentre ne com porte que 2 boutons, le bouton A n n u le r nous servira juste ferm er la fentre. V ous connaissez la squence de code le perm ettant, ce nest donc plus la peine que je vous indique la m arche suivre. En cas de problm e je vous rappelle que laide de W inD ev est accessible par la touche F 1 . Consacro ns-nous au bouton V a lid e r , la valida tion consiste placer les rubriqu es de la fentre dans le fichier et valider lajout. Pour placer les rubriques de la fentre dans le fichier, lordre est le suivant : EcranV ersFichier(saisie) // saisie tant le nom de la fentre
Page 26 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

La validation dajout est com m ande par lordre suivant : H Ajoute(M ouvem ent) // M ouvem ent tant le fichier dans lequel on ajoute Il nous reste plus qu ajouter un ordre de ferm eture de la fentre. Voici le code intgral du bouton V a lid e r : EcranVersFichier(saisie) H Ajoute(M ouvem ent) Ferm e Vous pouvez faire en sorte de program m er le contrle pour quil vrifie que lon na quun dbit ou quun crdit, ou alors que lun des cham ps nest pas vide. Le code placer juste ava nt celui que lon voit ci-dessus pourrait ressem bler ceci : SI D ate= "" O U Descriptif= "" O U (D pense= 0 ET R ecette= 0) ALO RS Info("L'un des cham ps n'a pas t rem pli !") Ferm e FIN SI D pense < > 0 ET Recette < > 0 A LO RS Info("Vous ne pouvez saisir qu'un m onta nt au D bit ou alors au Crdit !") Ferm e FIN

Testez votre fentre avec le bouton ou en cliquant droite de lcran sur la Fentre avec le bouton droit pour choisir T e s te r . Insrez des valeurs dans les cham ps et validez. Pour voir si votre nouvelle ligne est prsente dans le fichier, allez dans le m enu O u tils / W D M A P et choisissez M o u v e m e n t com m e N o m d u fich ie r . M aintena nt que vos lignes sinsrent, lancez le projet en cliquant sur G O .

Cliquez sur le bouton A jo u te r , saisissez et validez un nouvel enregistrem ent. Vous pouvez constater que la table m m oire ne ra git pas correctem ent : en effet linsertion na pas t dtecte et donc la table m m oire nest pas synchronis e avec le fichier. N ous allons essayer de rem dier ce problm e. En fait, il faudrait que lorsque la fentre sa isie se ferm e, la fentre d p art recharge la table m m oire. Placez-vous dans le code de la fentre d p a rt , vous devez trouver une zone nom m e p rise d e fo cu s d e d p a rt . La prise de focus est le fait de rem ettre active une fentre inactive, en cliquant sur la barre de titre par exem ple.

Page 27 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Voici le code insrer dans cette zone : TableS u pp rim eTo ut(Tm ouv) // Efface la table m m oire pour viter dinsrer les enregistrem ents la suite des prcdents H LitPrem ier(M o uvem ent,IDM o uvem en t) TANTQ U E PAS H EnD ehors TableA joute(Tm o uv,M ouv em ent.Date+ TAB+ M o uvem ent.D escriptif+ TAB+ M ouve m ent.Dpense+ TAB + M ouvem e nt.Recette+ TAB+ M ouvem ent.I D M ouvem ent) H LitSuiva nt(M o uvem ent) FIN Testez cette m odification, com m e vous le voyez, les com porte m ents sont m aintenant cohre nts. Intressons-nous au bouton S u p p rim e r . Dans la table, nous avons une rubrique qui est lidentifiant de la ligne. Pour supprim er cette ligne dans le fichier nous allons donc rechercher cet identifiant dans le fichier et supprim er la ligne correspondante. Voici la squence de code ncessaire : H LitR echerche(M ouv em ent,IDM ouvem ent,cl) SI H Tro uve ALO RS H Supprim e(M o uvem ent) Info("La suppression est effective") SINO N Info("G rave problm e de l'applicatio n") FIN E x p lica tio n s : La prem ire ligne fait rechercher dans le fichier M ouvem ent et sur lidentifiant la valeur du cham p cl pointe dans notre table m m oire. C e nest pas parce que la rubrique cl est invisible que nous ne pouvons pas en connatre la valeur. Si on trouve la lig ne ayant le m m e identifiant que cl alors on la supprim e et on affiche un m essage indiquant la bonne m arche des oprations. Sinon dans un cas fort im probable o il ne trouve pas lenregistrem ent on inscrit un m essage derreur. Je vous laisse le soin de tester cette nouvelle fonctionnalit de votre program m e. Com m e vous venez de le rem arquer, la m ise jour de la table m m oire ne sest pas Faite. La valeur a t supprim e m ais la table ne le sait pas. N ous allons rem d ier ce problm e. Le code de rafficha ge de la table m m oire existe dj (ex : dans la zone de p rise d e fo cu s de la fentre d p a rt ) nous allons donc r-excuter un traitem ent existant. Sous la ligne Info("La suppression est effective") inscrivez la com m an de suivante : ExcuteTraitem e nt(depart,trtPriseF ocus)

Page 28 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Cette com m ande fait rejou er un traitem ent existant. Testez et vrifiez la cohrence de votre projet. M aintena nt n o u s a vo n s ca lcu le r le so ld e (D bit Crdit), pour ce faire nous allons crer une procdure qui scannera le fichier et fera les calculs pour nous.
2) Cliquez sur Nouvelle procdure et nommez l calcsolde 1) Choisissez Procdures locales dans la zone de slection du bas dcran

Rem arqu es : Les procdures locales ne sont vues que par les objets de la fentre, les procdures globales sont actives pour tous les lm ents du projet M aintena nt, vrifiez bien que vous vous trouv ez dans la zone co d e de la procdure ca lcso ld e . Le code doit parcourir le fichier M ouv em ent, affecter le contenu de d b it dans une variable, le contenu de cr d it dans une autre et cela jusqu' la fin du fichier et ensuite affecter la diffre nce entre le dbit et le crdit au cham p so ld e . Voici le code de la procdure : PRO CED U RE calcsolde() sdebit,scredit sont des rels= 0 // on affecte la valeur 0 aux deux variables H LitPrem ier(M o uvem ent,IDM o uvem en t) TANTQ U E PAS H .endehors Sdebit+ = M ouvem ent.D pense // + = signifie Sdebit= S debit+ M ouvem ent.D pense Scredit+ = M ouv em ent.R ecette H LitSuiva nt(M o uvem ent,IDM o uvem ent) FIN solde= sd ebit-scredit

Le code est suffisam m ent sim ple pour ne pas avoir lexpliquer. La question qui se pose est o lancer ca lcso ld e . C om prenez quil nous faut activer cette procdure aux m m es endroits o lon a activ le rafrachissem ent de la table m m oire.
Page 29 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Je vous laisse m odifier les zones de code en consquence (dans le co d e de la fentre d p a rt ). N oubliez pas de tester la cohrence de votre projet. Il ne nous reste plus qu fabriquer ltat de sortie. C hoisissez Fich ie r / N o u ve a u / E ta t . C hoisissez un tat de type T ab le a u . En cliquant sur Su iv a n t W inD ev vous dem ande la source de donn e, il vous faut prciser que ce sont des enregistrem ents prove nant dun fichier H yp er file. Slectionnez le fichier M o u ve m e n t , la cl de parco urs est un identifiant qui sert pour donner lordre de tri. C ontinuez appuyer sur S u iva n t , je vous laisse dcouvrir les questions poses et vous de prendre les bonnes dcisions. V ous savez lire, donc vous prendrez les bonnes dcisions ! Je vous dem ande juste dap peler ltat E ta tm o u v . Rem arqu es : Les dtails du choix du style, de la m ise en form e sont votre discrtion, faites com m e bon vous sem ble. N oubliez pas que le client na pas les m m es gots graphiques que vous, donc faites sobre. Eviter les styles N o ir su r fo n d N o ir R o se su r fo n d V e rt et autres singularits visuelles qui feront penser lutilisateur quil devient dficient visuel. U ne fois votre tat fini et enregistr, entrez dans la zone co d e du bouton Im p rim e : iAperu(i100) // O n enverra ltat lcran avec un zoom de 100 % iIm prim e Etat(Etatm ouv) // G nration de ltat et utilisation des param tres dfinis par iApercu Rem arques : Les C om m and es W inD ev sont classes. Celles qui com m e ncent par H sont des com m andes daccs aux fichiers, celles qui com m encent par i sont des com m and es de pilotage dtat. N oubliez pas de re fa ire ce T P p lu sie u rs fo is , le but tant de se passer du G uide papier et dapprcier la facilit avec laquelle on peut travailler avec W inD ev.

Page 30 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C o u rs W in D e v N u m ro 4 O b je ctifs : Travailler avec plusieurs fichiers de donn es Cration dun M CD , G estion des cham ps indexs, M anipulation de donnes, Liaison des donnes, P r re q u is : C ours W inD ev N um ro 1, 2 et 3 Lobjectif de ce cours est de vous fam iliariser avec lutilisation des fichiers lis. N ous allons crer une m ini G PAO ( G estion de P rod uction A ssiste par O rdinateur). Vous travaillez pour un assem bleur inform atique, son processus de prod uction est le suiva nt : Il reoit les diffrentes pices dtach es (disque dur, m m oires, cartes m res ) et assem ble ces diffrentes pices pour en faire un m odle fini. Com m e vous pouvez le percevoir, le m odle conceptuel travaillera avec 2 entits (Ensem ble fini et com posan ts). V oici une reprsentation du M CD :
En sem ble R e fE n s D signationE PrixV H T 0,n Intgre Q t 1,n C om pos ant R e fC o m p D signationC PrixA H T

R e m a rq u e : Je nai pas besoin de vous rappeler que les proprits soulign es et en gras dsignent les identifiants de lentit, donc je ne le fais pas. Vous allez com m encer par crer un nouveau projet nom m TP4. Dans lAssistant, vous slectionnerez votre thm e prfr, confirm erez le choix de cration danalyse et finirez le processus de lassista nt. U n nouvel assista nt de C r a tio n d a n a ly se va apparatre. Vous pouvez ensuite valider les diffrentes fentres de lAssistant jusqu arriver lAssistant de C r a tio n d e fich ie r . Restez sur C r e r u n e n o u ve lle d e s crip tio n d e fich ie r , donnez E n se m b le com m e N om et O rd in a te u rs a sse m b l s com m e Libell. Pensez dcocher Le fich ie r p o ss d e u n id e n tifia n t a u to m a tiq u e puisque nous avons R e fe n s qui sera notre identifiant. G ard ez H y p e r F ile R se a u o u M o n o p o ste com m e Ty p e d e b a se
Page 31 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

d e d o n n e s et ne laissez coch que loption u n e fe n tre e n m o d e ta b le dans la dernire partie de lassistant. M aintena nt la fentre suivante apparat cest elle qui va vous perm ettre de saisir toutes les proprits de votre entit. Rem plissez-la pour quelle ressem ble ceci :

Pour RefEns, il faut tre en Cl unique et Texte taille 15, DsignationE est en Texte taille 80 et PrixVHT est en Montaire Windev.

U ne fois rem plies, cliquez sur O k et retournez sous lditeur de W indev. Enregistrez.
Page 32 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Attention un cran va vous dem ander si vous voulez crer une fentre ou allez sous lditeur, cliquez sur A lle z d ire cte m e n t d a n s l d ite u r d e W in d e v pour rester dans lanalyse. Si vous regardez bien votre diteur danalyse en haut vous devez dcouvrir une barre doutils com m e celle-ci :

Voyez les utilisations des diffrentes icnes en passant le curseur de la souris dessus. Com m e vous tes dgourdis et intelligents je vous laisse finir de concevoir le m odle ! Voil quoi vous devez arriver :

Vous venez donc de crer le M o d le Lo g iq u e d e D o n n e s (M LD ). Enregistrez. A tte n tio n : N oubliez pas que ce nest pas parce que lanalyse est cre que les fichiers sont physiquem ent crs sur votre disque dur A llez dans le code du projet Projet / C ode du projet et inscrivez la squence suivante dans la zone Initialisation de TP4 : H Cratio nSiInexistant(C om posant) H Cratio nSiInexistant(Ense m ble) H Cratio nSiInexistant(Int gre) H G reIntgrit("* ", "*", hCardinalit+ hE nM odification+ hEnSuppression, Faux) La dernire ligne indique W inD ev de ne pas se soucier de grer lintgrit rfrentielle, nous le ferons nous-m m e. M aintena nt que lanalyse est cre, nous allons com m encer construire notre application. C hoisissez F ich ie r / N o u ve a u / Fe n tre . Crez une fentre nom m e M e n u qui sera la prem ire fentre du projet. Faites en sorte qu'elle ait les caractristiques suivantes : O nglet G n ra l : N om logique : M enu D escription : Prem ire fentre du projet Titre : Bienvenue dans la M ini G p O nglet IH M : Taille : Taille 640*480 O nglet D ta il : Type de fentre : M re M di
Page 33 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

R e m a rq u e : U ne fentre m re M DI est obligatoirem ent la prem ire fentre d'un projet W inD ev. Cette fentre perm et d'affich er toutes les fentres de l'application. U ne fentre m re M D I a les caractristiq ues suivantes (non m odifiables) : bords m odifiables, bouton d'iconisation, d'agrandissem ent, m enu systm e, barre de titre, barre d'icnes, possibilit d'avoir un m enu droulant et des barres outils. Dans une fentre m re M D I, seuls les cham ps situs dans la zone "b arre d'icnes" peuvent tre en saisie. En dehors de cette zone, aucun cham p ne peut tre en saisie, aucun clic souris n'est actif. N ous allons placer une barre doutils dans cette fentre d p a rt , pour cela cliq uez sur lobjet C r e r u n e b a rre d o u tils et placez le dans le bord suprieur gauche de la fentre. Faites un clic d ro it sur ce nouvel objet et allez dans D e scrip tio n . N ous allons placer 5 boutons dans cette barre doutils (un pour saisir les nouveaux com posant, un pour crer des ensem bles, un pour im prim er la liste des com posants, un pour im prim er lensem ble et ses com posants, le dernier pour quitter lapplication). Vous allez donc cliq uer sur le bouton C r e r puis choisissez B o u to n . Le rsultat obtenu devrait ressem bler ceci :

Cliquez sur B o u to n 1 , puis sur le bouto n E d ite r , dans cette fentre D e s crip tio n d u n b o u to n saisissez n c dans la zone N o m , supprim ez le libell par dfaut, cliquez sur C a ta lo g u e pour la zone Im a g e . Le catalogue app arat, sur la gauche choisissez seulem ent 1 6 * 1 6 (nous naurons que des petites im ages), dans la zone R e ch e rch e frapp ez nouveau puis appuyez sur le bouton R e ch e rch e r . Pren ez le 4 me bouton de la 4 me ligne puis validez. D ans longlet A id e de la fentre descriptio n, dans la zone B u lle d a id e inscrivez S a isie d u n n o u v e a u co m p o sa n t

Page 34 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Pour les boutons suivants, faites de m m e en suivant les instructio ns suivantes : B o u to n s Bouto n2 Bouto n3 Bouto n4 Bouto n5 Nom Crer Im prim eC Im prim eE Ferm er B u lle d aid e Crer des ensem bles Im prim er les com posants Im prim er les ensem bles Q uitter lapplication

Vous choisirez les icnes les plus en phase avec le but du bouton. R e m a rq u e : S i vous avez des difficults pour placer les boutons (chevauc hem ent par exem ple), allez dans leur onglet D ta il et affectez leurs les dim ensions suivantes : largeur 32, hauteur 24. Voici un exem ple de ce que devrait tre la barre doutils :

N ous allons crer les 4 fentres filles ncessaires pour faire fonctionner notre application (fentre filles car elles doivent sexcuter lintrieur de la fentre m re. Pour le bouton Q u itte r , je vous laisse m ettre le code Correspondant , vous nav ez plus besoin de m on aide, sinon retour aux TP prcdents. Pour la prem ire fentre associe au bouton O nglet G n ra l d e la d e scrip tio n N om logique : G com po D escription : G estion des com posants Titre : G estion des com posants O nglet IH M Largeur : 500 H auteur : 350 Position : R elatif la m re O nglet D ta il Type de fentre : Fille M di Voici quoi elle devrait ressem bler : , respectez les consignes ci dessous :

Le code douverture de la fentre fille sera : OuvreFille(Gcompo)

Page 35 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Ces 3 champs sont lis avec les champs du fichier Composant (faites-les glisser depuis longlet droite de lcran). Si certains ont des difficults : retour au TP3. Faites en sorte que RefComp ait un masque de saisie TOUT EN MAJUSCULES.

Crez 2 boutons : BAjout et BSup

Nom de la table mmoire : Table1 RefComp : type texte longueur 15 Dsignation : type texte longueur 80 PrixAchat : type numrique (Titre : Prix dAchat) Choisir dans lassistant Je veux remplir moi-mme la table Mettez la table en Affichage seulement (sinon la saisie ne serait pas valide) voir TP3

M aintena nt analyso ns le com portem ent que devra avoir cette fentre louverture : Elle devra parco urir le fichier C om posant et afficher les tuples dans la table m m oire s'il y en a. Le bouton A jo u te r devra : . Inscrire la valeur des 3 cham ps dans le fichier correspondant en interceptant une erreur de doublonn age si lutilisateur saisi 2 fois une rfre nce existante, . Il devra aussi m ettre blanc les 3 cham ps pour prparer une nouvelle saisie, . Rafficher la table m m oire (supprim er le contenu existant et re-crire avec le contenu du fichier), . Et enfin avertir lutilisateur que tout sest bien pass. Le bouton S u p p rim e r devra : . Supprim er physiqu em ent la ligne pointe dans la table m m oire . Rafficher la table m m oire

Page 36 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Voici les diffrents codes (Ils ont dj t tudis la leon 3) : Nous allons crer une procd ure locale a ffic h e ta b le qui aura pour rle de rafficherla table m m oire (supprim er le contenu existant et re-crire avec le conte nu du fichier) : TableS u pp rim eTo ut(Table1) H LitPrem ier(Com posant,RefC om p) TANTQ U E H .trouve ET PAS H .EnD ehors TableA joute(Table1,Com p osant.RefC om p+ TAB+ C om posant.D signation C + TAB+ Com p osant.PrixAH T) H LitSuiva nt(Com posant,RefC om p) FIN Cette sq uence devrait vous tre fam ilire donc je ne vous la com m ente pas, sinon retour au cours 3. Rappel pour faire une procd ure locale cliquez sur Procd ures locales en bas de lcran :

Clic droit dans cette zone et Code pour activer le processus de cration de la procdure.

Initialisation de G com po (la fentre) : // A ppel de la procdure affich etable affichetable() M aintena nt on est sr que ds que cette fentre souvrira, la table m m oire sera en phase avec le conte nu du fichier.

R e m a rq u e : la table m m oire vous apportera plus de souplesse et une gestion plus fine des enregistrem en ts et des lignes dans certains cas. Voici le code du bouton B A jo u t : EcranVersFichier() // Transfre les valeurs contenues dans les cham ps de la fentre // dans la zone de structure du fichier H Ajoute(C om posant) // Passe la structure physiquem ent dans le fichier RAZ(Vrai)// Efface les valeu rs contenues dans les cham ps lis pour saisir un nouveau com posant affichetable()

Page 37 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Voici le code du bouton B S u p : H LitR echerche(C om posant,R efC om p,R efC om p) // Recherche dans la table Com p osant, // sur la rubrique R efCom p, la valeur contenue dans RefC om p de Table1 SI H Tro uve ALO RS // S i la valeur est trouve alors H Supprim e(Com posant) // O n supp rim e physiquem ent la ligne dans le fichier Com p osant Info("Sup pression russie") // O n inform e lutilisateur de la russite de la suppression affichetable() SINO N // S inon, on na pas trouv ?!! Info("Il y a un boulon dans le potage") // FIN Enregistrez la fentre et testez votre projet sans oublier de dfinir quelle est la 1 re fentre du projet ( M e n u ), norm alem e nt les com portem ents doivent tre cohrents. Dan s le cas contraire, reprenez le support et vrifiez que vous navez pas oubli quelqu es instructions. N ous allons m aintenant faire la fentre la plus intressante au niveau intellectuel, celle qui gre lassem blage dun ordinateur. Crez une nouvelle fentre (Fichier / N ouveau / Fentre). Pren ez une fentre vierge et enregistrez la sous G e n se m b le . N oubliez pas den faire une fentre fille (cf. : tap es identiques la fentre G co m p o ) et de m ettre le code douv erture de cette fentre dans le deuxim e bouton de la barre doutils de la fentre d p a rt . Voici la fentre telle quelle devrait tre :

1 3 4 5

7 9

10

11

12

13

Page 38 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

O b je t N 1 2 3 4 5 6 7 8 9 10 11 12 13

Nom RefEns PrixVH T D signation BPrem ier BPrecedent BSuivant BDernier Table1 BAjo ut BS upprim e BNouveau BValide BSupp

R le Li Ensem ble.RefEns (TO UT EN M AJUSCULES ) Li Ensem ble.PrixV HT Li Ensem ble.D signation Bouton nous positio nnant sur le prem ier enregistre m ent du fichier Ensem ble Bouton nous positionnant sur lenregistrem ent prcdent Bouton nous positio nnant sur lenregistrem ent suivant Bouton nous positio nnant sur le dernier enregistre m ent du fichier Ensem ble Table m m oire contenant des rubriqu es sim ilaires la structure de C om posant Bouton nous perm ettant dajouter un com posant lensem ble Bouton nous perm ettant de supprim er un com posant lensem ble Bouton nous perm ettant de crer un nouvel ensem ble Bouton nous perm ettant de valider un ensem ble Bouton nous perm ettant de supprim er un ensem ble

Analyse des lm ents de la fentre G e n s e m b le . A louv erture de la fentre dans le code dinitialisation, nous devrons nous positionner sur le prem ier ensem ble (sil existe) et recherc her tous ces com posa nts constitutifs. Voici com m ent faire : Il nous faut lire la rfrence de lensem ble (RefE ns), parco urir le fichier de liaison (Intgre) sur la cl RefEns, tant que lon trouve Ensem ble.R efEns= Int gre.RefEns il nous faut cherc her dans la table com posant la cl de liaison (Intgre.R efC om p = Com p osant.RefC om p) et rcup rer Intgre.Q t. Alors relisez en ayant lanalyse en tte. N ous allons crer une fonction (en fait une procd ure, W inD ev ne faisant pas de diffre nce entre fonction et procdure) qui, prenant en param tre le code RefEns, nous rem pli la table. Facile et efficace. PRO CEDURE rem plir (code) TableS u pp rim eTo ut(Table1) FichierV ersEcran(G e nsem ble) // on affecte aux cham ps de la fentre les donnes lies H LitR echerche(Intgre,R efEns ,code) // O n fait rechercher dans le fichier Intgre une valeur de RefEns gale code TANTQ U E H Trouve ET PA S H EnD ehors H LitR echerche(C om posant,R efC om p,Int gre.R efC om p) // A vous de trouver TableA joute(Table1,Com p osant.RefC om p+ TAB+ C om posant.D signation C + TAB+ Com p osant.PrixAH T + TAB+ Int gre.Q t) H LitSuiva nt(Intgre,RefE ns) FIN

Page 39 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

En fait, com m e vous pouvez le voir, nous veno ns de jongler avec 3 fichiers sans trop de difficults. R egardo ns le code dinitialisation de la fentre : H LitPrem ier(Ensem ble,R efEns) SI H NbEnr(Ensem ble)> 0 ALO RS // si le fichier Ensem ble contient au m oins un enregistrem ent rem plir(E nsem ble.R efEns) SINO N Info("Le fichier est vide") FIN Voyons le code ncessaire aux boutons 4, 5, 6 et 7 (pour les icnes, faites un tour du ct des flches en 16x16). Je vous donne le code du bouton 4 , vous tes Suffisam m ent aguerri pour pouvoir crer le code des bouto ns 5, 6 et 7. (Si vous ne savez pas retour, au TP 3). N ous allons traiter le bouton 9 . Ce bouton doit nous perm ettre de slectionner dans le fichier C o m p o sa n t le com posant que nous voulo ns insrer dans la table m m oire. N ous allons voir si W inD ev peut nous gnrer la fentre qui va bien. Allez sur Fichier / N ouveau / Fentre. Cherch ez une fentre nom m e V isio n p lu s et validez. Dans lA ssistant qui arrive, dcochez A ve c co d e d e ra frach isse m e n t a u to m a tiq u e , puis cliq uez sur S u iva n t 2 fois, ensuite cliquez sur C o m p o sa n t , cliquez encore sur S u iva n t , vrifiez que tous les cham ps soient cochs, cliquez encore sur S u iva n t 2 fois. Prenez une taille 640*480. Puis saisissez se le ctio n com m e N o m . Enfin cliquez sur Te rm in e r . Vous avez m aintena nt une fentre fonctionnelle dans laquelle on peut supp rim er le bouton N o u ve a u (on peut utiliser la cration de com posants avec notre 1 er bouton du m enu). R duisez-la pour quelle soit plus petite. Voici quoi elle pourrait ressem bler :

Page 40 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Regardons com m ent nous pourrions m odifier le code pour quil nous soit utile. Allez dans le code du bouton O K . V ous pouvez voir que la fentre retourne vra i si on clique sur O K , faux sur A n n u le r . Q ui dit band eau dplac dit structure m m oire du fichier contena nt les valeurs recherches ! Donc, nous naurons qu lancer la fentre et tester si elle retourne vra i . Ferm ez la et retournez sur G e n se m b le dans le code du bouton B A jo u t . S aisissez la sque nce de code suivante : resultat est un boolen= Faux resultat= O uvre(selection) SI resultat= Vrai ALO RS // la fentre nous a renvoy vrai, donc le bande au a t dplac TableA jouteLigne(T able1,C om posant.R efC om p,Com p osant.D signationC ,C om po sant.P rixA H T) FIN M ditez sur la diffrence entre ta b le a jo u te et ta b le a jo u te lig n e (laide, touche F1 ). Sauveg ardez et excutez la fentre, norm alem ent le clic sur le bouton B A jo u t lance bien la fentre se le ctio n qui nous retourne vrai ou faux selon le bouton cliq u. Pour saisir la Q t , cliquez dans la colonne pour saisir le nom bre souh ait. N oubliez pas de vrifier que la Table est En sa isie et davoir seule la rubrique Q t En sa isie / a ctif , les autres restant en m ode A ffich a g e se u le m e n t . Pour le bouton 10 ( B S u p p rim e ), la squ ence de code a dj t tudie lors du TP3. Pour le bouton N ouveau ( B N o u ve a u ), il vous faut program m er un traitem ent qui efface les cham ps 1, 2, 3 et la table m m oire, vous savez faire. Le bouton S upprim e ( B S u p p ) va nous obliger sca nner 2 tables et supprim er les rfrenc es Ensem ble recherches. Il faut donc prendre la valeur du cham p 1 (R efE ns), parco urir la table Intgre sur le cham p R efEns et supprim er tous ceux gaux au cham p RefEns. Et ensuite le supprim er dans la table Ensem ble. Voici une squence de code qui devrait tre efficace : SI O uiN on("Voulez vous vraim ent supprim er cet enregistrem ent ?")= O ui A LO RS H LitR echerche(In tgre,R efEns ,R efEns) TANTQ U E H Trouve ET PA S H EnD ehors H Supprim e(Int gre) H LitSuiva nt(Intgre) FIN H LitR echerche(En sem ble,R efEns,RefEns) SI H Tro uve ALO RS H Supprim e(Ensem ble) Info("La suppression est russie") H LitPrem ier(Ensem ble,R efEns) FIN FIN

Page 41 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

La squence du bouton V alid e r va tre un peu plus rude. En fait, lorsquun nouvel ensem ble est cr ou m odifi par ladjonction dun nouvea u com posant, il va nous falloir faire plusieurs actions diffrentes. Il faut supprim er lensem ble existant dans le fichier pour le recrer avec ses nouveaux com posants, donc on com m ence par une phase de suppression (voir code ci-dessus) et on achve par une phase dinsertion dans le fichier. Le code est long m ais nest pas com plexe, pren ez le tem ps de ltudier. i est un entier H LitR echerche(En sem ble,R efEns,RefEn s) SI H Tro uve ALO RS // l'enregistrem ent existait dans le fichier, on va le supprim er H LitR echerche(Intg re, R efEns, R efEns) TANTQ U E H Trouve ET PA S H EnD ehors H Supprim e(Int gre) H LitSuiva nt(Intgre) FIN H Supprim e(Ensem ble) FIN // M ainte nant inscrivons l'ensem ble dans le fichier Ensem ble.RefEns= RefEns Ensem ble.D signati onE= Dsig nationE Ensem ble.PrixVH T= PrixVH T H Ajoute(Ensem ble) // R em plissons le fichier Intgre PO U R i= 1 A TableO ccurrenc e(Table1) // Pour i= 1 aux m ax de la table m m oire Intgre.R efCom p= T able1.RefC om p[i] // [i] indique l'indice de la lig ne Intgre.R efEns= RefEns Intgre.Q t= Table1.Qt[i] H Ajoute(Intgre) FIN Info("L'ajout c'est bien pass") N o u b lie z p a s d e sa u ve g a rd e r vo tre u vre .

Le troisim e bouton de la barre doutils sert im prim er la liste des com posants, vous avez dj tudi la procd ure dans le TP 3 .

Page 42 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

N ous allons nous laisser guid er par lAssistant pour faire un tat avec des donnes prove nant des 3 tables. Allez dans Fich ie r / N o u ve a u / E ta t . C hoisissez ensuite un type dtat ta b le a u , cliquez sur S u iva n t . Vrifiez que les donnes proviennent bien dune requte et cliquez sur S u iva n t . Faites lui com pren dre que les donnes proviennent dune req ute que vous voulez dfinir m aintenant, cliquez sur S u iva n t . M aintena nt vous devez avoir cette fentre lcran :

Cliquez sur cette flche pour faire passer les champs de lanalyse dans la liste des lments de la requte

Cliquez ici pour indiquer ltat que vous dsirez un tri croissant sur RefEns

Cliquez ensuite sur S u iva n t . A la question Voulez -vous des ruptures dans ltat rpond ez O u i et cliquez sur S u iv a n t . La fentre suiva nte vous dem ande de slection ner la rupture, vrifiez que R f re n ce d e le n s e m b le soit bien coch, cliquez sur Su iv a n t .

Page 43 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Vous devriez avoir m aintenant une fentre qui ressem ble ceci :

Passez ces 2 champs appartenant Ensemble en Haut de Rupture. Les lments en haut de rupture apparaissent une seule fois. Les lments dans le corps apparaissent autant de fois quil y en a dans le fichier

Cliquez ensuite sur S u iva n t . La fentre suivante vous dem ande quels sont les cham ps num riq ues sur lesq uels vous voulez effectuer un calcul, essayer de faire en sorte quelle ressem ble ceci :

Page 44 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Cliquez sur S u iva n t . Les choix suivan ts concernent les form ats du papier, laissez les par dfaut et cliqu ez sur S u iva n t . C hoisissez un gabarit et S u iva n t . N om m ez cet tat Ie n se m b le (atten tion, le i est en m inuscule), com m e titre Etat des ensem bles . cliq uer sur Te rm in e r . Com m e votre tat est plus large que la feuille, passez en m ode paysage. Votre tat apparat m aintenant dans lditeur dtat. Si vous voulez faire quelqu es retouch es, cest m aintenant. Il ne vous reste plus qu activer ltat dans le bouton de la barre doutils avec la sque nce de code suivante : iAperu(i100) iIm prim e Etat(Ie nsem ble) Voil, ce m od este "M ini G P " est fini. Vrifiez que tous les boutons fonctionnent, que les traitem ents sont cohrents.

Page 45 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C ours W inD ev N um ro 5
Objectifs : tudes des Sockets, communication rpartie Rappels de notions rseaux, Tcp/ip, Ports.

Grce ce nouveau TP nous allons rentrer dans le monde merveilleux de la communication distante via rseau. Cette jolie introduction pour vous faire comprendre que ce support va nous apprendre faire discuter 2 (ou plusieurs ) Ordinateurs entre-deux. Nous allons employer les Sockets et les threads. Commenons par dfinir ces 2 termes : Les Sockets : Une Socket est dfinie comme une extrmit dune communication. Une paire de processus (ou de Threads ) communiquant sur un rseau emploie une paire de sockets, une pour chaque processus. Un socket est constitu dune adresse IP concatne un numro de port. En gnral les sockets utilisent Une architecture Client/serveur. Le serveur attend des requtes entrantes du client en coutant un port spcifique. Ds Rception dune requte, il accepte une connexion du socket du client. Les serveurs implmentant des services particuliers (par exemple, Telnet, ftp, mail, http), coutent des ports bien connus (Telnet coute le port 23, un serveur ftp le port 21, un serveur web [Http] le port 80 ). Les ports infrieurs 1024 sont considrs comme connus et sont utilisables pour les services standards. Lorsquun thread client commence une requte de connexion, il se voit assigner Un port par la machine hte. Ce port est un nombre suprieur 1024. Par exemple, lorsquun client de lhte X dadresse IP 192.168.5.20 souhaite tablir une connexion avec un serveur Web (qui coute le port 80) dadresse 192.168.6.10, lhte X peut se voir affecter le port 1625. La connexion est constitue dune paire de sockets : (192.168.5.20 : 1625) sur lhte X et (192.168.6.10 : 80) sur le serveur Web. Un thread peut tre peru comme un flot de contrle lintrieur dun processus. Dans notre cas il joue le rle dinterface entre les 2 ordinateurs, interceptant les donnes transmises. Notre exercice consistera crer 2 excutables, un client et un serveur. Le serveur sera en attente de rception de message et le client essayera de se connecter au serveur et de lui envoyer des messages. Pour cela il nous faudra 2 projets un pour le client, un pour le serveur
Je vous rappelle que plus on avance au fil des TP moins je dtaille les fonctionnalits que je considre comme Devant tre acquises. Donc si ce stade vous prouvez des difficults reprenez les cours prcdents.

Partie Serveur
Vous allez commencer par crer un nouveau projet nomm Serveur . Nous ne travaillerons pas sur des fichiers donc faites en sorte de n'utiliser aucune analyse. Nous naurons besoin que dune fentre que vous nommerez Depart et qui sera la premire fentre du projet. Faites en sorte quelle ressemble celle ci :

Page 46 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C ette zo n e est d es tin e recev o ir le n u m ro d u p o rt d co u te. C est u n o b jet ch a m p d e saisie q u e v o u s n o m m e re z portip

C es 2 b o u to n s sero n t n o m m s dem arre et arrete . A v o u s d e ch o isir q u i est q u i.

Ic i sa ffich e ro n t les p h rases en v o y es p ar le clien t. C est u n o b je t liste q u e v o u s n o m m e rez liste1

C ette zo n e d e tex te n o u s in d iq u era si le serv eu r est actif o u p as. C est u n o b jet ch a m p d e s aisie q u e v o u s n o m m e re z etatserveur

Analysons le fonctionnement du serveur : 1. Il faut lui donner un port a couter. 2. Il faut lancer la boucle dcoute (boucle infinie) et faire en sorte que les vnements dentrs ( demande de connexion) soient traits par des threads. 3. Une fois la connexion accepte le texte reu sera inscrit dans la liste droulante. Nous allons commencer par crer une procdure dattente ( la boucle dcoute ). Pour cela crez une procdure globale nomme attente

Page 47 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Voici le code que nous allons analyser.


P R O C E D U R E atten te() B O U C L E // d b u t d e la b o u cle S I S o ck etA tte n d C o n n ex io n ("serv eu r") A L O R S // si u n e d e m an d e d e co n n ex io n est en atten te can al est u n e ch an e can al= S o ck etA cc e p te("serv eu r") //C ette fo n ctio n p erm et d e c rer le can al d e co m m u n ic atio n en tre la so ck et serv e u r et la so ck et clien te. T h read E x cu te( th re ad cn x ,th read N o rm al,"affich e m es",c an a l) //L a n c e l'ex cu tio n d 'u n "th read " M u ltitac h e(-3 0 ) //L a fo n ctio n M u ltitac h e av e c u n n eg atif su sp en d lap p licatio n F IN F IN

Vous pouvez constater que nous nous trouvons devant une boucle sans fin ou en attente dite active. A lintrieur de cette boucle une fonction WinDev (SocketAttendConnexion), est charge de vrifier si des demandes de connexion se produisent. Comme paramtres cette fonction prend un argument qui est le nom du socket ici serveur. Vous allez voir o nous allons dfinir la socket nomme serveur. Pour linstant lessentiel est de comprendre le principe de la boucle dattente active. Donc si une demande de connexion se produit pour la socket serveur on laccepte en crant un canal de communication. Vous pouvez considrer ce canal comme un tunnel ou les donnes vont transiter. La ligne : ThreadExcute (threadcnx, threadNormal,"affichemes", canal), est charge de faire en sorte que le code de la fonction affichemes soit excute comme un Thread normal appel threadcnx utilisant le parametre canal) Multitache(-30) : L'excution de l'application est suspendue durant <Temporisation> 100me de seconde. D'autres traitements peuvent tre excuts durant cette priode de temps (r-affichage ou excution d'un code de clic par exemple). Dans notre cas la boucle est gele pour permettre aux threads de sexcuter durant leurs quantums. NB : la socket sappelle serveur , le canal cre sappelle canal , le thread gestionnaire se nomme threadcnx . Maintenant nous allons nous intresser la procdure affichemes .Cest elle le cur de notre serveur puisque cest la gestionnaire dvnement. Pour ce faire crez une procdure globale affichemes (affichemes pour affiche messages).
P R O C E D U R E affich e m es(c an al) tex te est u n e ch an e BOUCLE tex te = S o c k etL it(c an al,V rai) L iste A jo u te("liste 1 ",tex te) FI N T h re ad A rrte("",5 0 0 ) M u ltitac h e(-3 0 )

Comme vous pouvez le constater la procdure prend comme paramtre le nom du canal reliant les 2 sockets. Je vous rappelle que cette procdure est lance en temps que thread. La fonction WinDev SocketLit lit le contenu du canal et le mets dans la variable texte. Le paramtre vrai signifie SocketLit que la dure dattente sur canal est indfinie. Une fois le message rcupr il doit tre mis dans notre liste droulante liste1 . Le reste de la procdure nappelle pas de commentaires particuliers.

Page 48 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Continuons par le code du bouton demarre.


S I P A S S o ck etC r e("serv e u r",P O R T IP ,N etA d resseIp ()) A L O R S E rreu r("E rre u r d e cratio n " + E rreu rIn fo (errM essa g e)) E T A T S E R V E U R = " P ro b l m e lo rs d u d m arra g e d u serv e u r" S IN O N E T A T S E R V E U R = "S erv eu r d m arr" T h read E x cu te ("th read 1 ",th re ad N o rm al,atten te) F IN

Ce code lance lexcution du serveur. La procdure WinDev SocketCrer utilise plusieurs parametres : Le nom de la socket que lon va crer. Le port sur lequel on coute. Ladresse ip du poste serveur. Comme vous le voyez la lecture de ce code si la socket serveur est cre on fait de notre procdure globaleattente un thread qui appellera lui mme le thread affichemes. Voici le code du bouton arrter
S o c k etF erm e("serv e u r") E T A T S E R V E U R = " A rret d u serv e u r"

Voil la partie serveur est maintenant termine Il ne vous reste plus qua crer lexcutable (Menu Projet/Crerlexecutable). NB: Si vous avez des Warnings concernant une boucle sans condition de sortie ne vous en souciez pas ! Ds a prsent vous avez conu un serveur, il ne nous reste plus qua crer le client. Son rle est dessayer de se connecter au serveur et de lui envoyer des messages.

Partie C liente
Pour le client, comme ce doit etre une application autonome, il nous faut donc crer un projet, sans analyse ayant pour nom Client. Ce projet ne contiendra quune fenetre nomme Depart. Elle ressemblera ceci :
O b je t ch a m p d e saisie N o m : A D R IP

Objet : Champ de saisie. Nom : messa Objet : champ de saisie. Nom : Portip

Objet : Champ de saisie. Nom : ETATCNX

Page 49 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Comme vous pouvez le constater le client est vraiment minimaliste. On saisit ladresse ip du serveur, le port dcoute, le message transmettre. Le bouton Connexion nous servira pour tablir la liaison, le bouton envoyer transmettra le message. Intressons nous au bouton connexion. Son rle est de nous mettre en relation avec la socket du serveur. Voici le code du bouton.
S I P A S S o ck e tC o n n ec te ("s e rv eu r" , P O R T IP ,A D R IP ) A L O R S E rre u r(" e rreu r d e c o n n ex io n " + E rre u rIn fo (e rrM ess ag e )) S IN O N E T A T C N X = "V o u s etes en lig n e" F IN

On essaye de ce connecter la socket nomme Serveur, coutant le port dfini ( PORTIP), telle adresse IP (ADRIP). Si tout ce passe bien on crit Vous tes en ligne dans le champ de saisie Etatcnx. Sinon on envoie le message derreur. Maintenant voyons le code du bouton envoyer. S I S o ck etE crit("serv eu r", m essa) = F aux A L O R S In fo ("U n pro b lm e est surv en u ") F IN On envoit un message ( le texte contenu dans le champ de saisie messa ) la socket serveur. Si ca ne fonctionne pas on affiche une boite de dialogue davertissement.

Voil tout est fini, vous pouvez compiler, crer lexcutable et tester votre client/serveur. Pour la mise en uvre vous avez besoin de lancer le serveur, le mettre en coute dun port. Ensuite vous lancez le client que vous branchez sur le port dcoute et envoyez le message. Si vous tes en rseau utilisez la bonne adresse IP du serveur

Page 50 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

C ours W inD ev N um ro 6
Objectifs : Accs des bases de donnes tierces (Mysql) Langage Sql, Fonctions Sql de WinDev, gestion avance des tree-view, des tables mmoire, des chanes de caractres

A lheure actuelle, les bases de donnes de type Clients/Serveurs ont la faveur de plus en plus dinformaticiens. Une de ces bases se dtache du lot, il sagit de MySQL. Cette base de donnes offre plusieurs avantages non ngligeables. 1. 2. 3. 4. Elle est gratuite. Elle est rapide Elle est fiable. Elle est Multi-Plateforme

Le fait quelle existe sous plusieurs systmes dexploitations est apprciable, en effet lheure actuelle beaucoup de Fournisseurs dAccs Internet vous permettent de vous connecter une base de donne, dans la majorit des cas cette base de donne est MySQL. Pourquoi la choisissent-elles ? En fait, ils ont fait le choix du logiciel libre, donc le systme dexploitation est Linux, comme les internautes utilisent de plus en plus le couple PHP/MySQL, cette base de donnes Est le choix technologique le plus vident faire. Maintenant imaginez la situation suivante : Vous tes dveloppeur dans une socit qui a sur Internet un site o les clients peuvent passer des commandes. Le site utilise PHP et MySQL, comment faire pour que votre logiciel commercial puisse rcuprer les commandes directement dans la base de donnes MySQL qui est sur Internet ? Nous allons, ensemble, dvelopper un logiciel de connexion une base de donne MySQL, crer des requtes, rcuprer les rsultats..Elle n'est pas belle la vie ? Mais cependant certaines mises en garde sont ncessaires :
Je vous rappelle quil est inutile de faire cette leon 6 sans matriser les Tp prcdents. Je ne reviens pas sur les notions abordes dans les TP prcdents. Pour le bon droulement de ce support tlchargez et installez easyphp que vous trouverez ladresse Suivante : http://www.easyphp.org/

A tte n tio n : Si vous n'tes pas adm inistrateur de votre ordinateur une librairie de M ysql ne sinstallera pas correctem ent, il sagit de libm ysql.d ll, de plus le serveur M ysql sarrtera la m oindre tentative de connexion. A u tre p o in t im p o rta n t : S i des erreurs rcurre ntes se produisent alors que votre code est propre et que vous utilisiez Easyphp, tlchargez la dll libm ysql.dll directem ent chez M ysql. D e plus, allez sur w w w .pcsoft.fr dans la rubrique tlcharg em ent pour tlcharg er l'accs natif M ysql

Page 51 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Avant de commencer, vrifiez quEasyphp est actif (Vous devez apercevoir un E noir avec un point rouge clignotant dans la barre des taches). Sil nest pas en fonctionnement, vous ne pourrez pas accder au serveur MySQL. Je vous laisse lire la doc fournie avec pour le faire fonctionner, cest simple. Nous allons maintenant entrer dans le vif du sujet. Crez un nouveau projet nomm TP6 qui ne comporte aucune analyse, normal puisque nous allons accder des donnes distantes. Ce projet comportera 2 fentres : Une orient gestion de la base MySQL, lautre sur ldition de requtes.

Voici le prototype de la premire fentre que vous nommerez dpart et qui sera la premire fentre du projet.
Ic i v o u s tro u v ez 4 ch a m p s d e saisie n o m m s : N um ip , Login , M dp , Etatcnx . U n b o u to n n o m m C nx . C es ch a m p s so n t d an s u n ch am p lib ell d e sty le L ib e ll -A ch ev al_ D o u b leB , d o n t le lib ell est : C o n n ex io n au serv eu r M y sq l Ic i, c rez u n ch a m p arb re q u e v o u s n o m m e rez listebase . V o u s p o u v ez len cad re r p a r u n c h a m p lib e ll .

A tten tio n , ici c est u n e tab le m m o ire q u e v o u s n o m m e rez Table1 d o n t to u tes les co lo n n es so n t in v isib les. D a n s cette tab le sera a ffich le co n ten u d es tab les d e v o tre b ase d e d o n n e M y sq l. L a ffich ag e est activ p a r u n ch o ix d e tab le d an s la rb re listebase . C o m m e n o u s n e co n n aiss o n s p as p rio ri le n o m b re d e co lo n n es d e la tab le a a ffich e r n o u s allo n s em p lo y e r u n e g ro sse ru se C h e y en n e. O n v a c re r u n e q u in zain e d e co lo n n es tex te n o m m es c1 ,c2 ,c3 ..c1 5 et to u tes in v isib le , cap ito ? N o u s cr e ro n s la ffich ag e p a r p ro g ra m m atio n p lu s ta rd

In s rez 2 b o u to n s u n n o m m R equete , l au tre Q uitter . Je v o u s laisse tro u v e r le co d e d u b o u to n Q u itte r.

Page 52 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Maintenant que la scne est installe, voyons les comportements des objets et ce que lon attend deux. Pour ce connecter une base de donne MySQL nous avons besoin de divers renseignements : Ladresse Ip de lordinateur o est situe votre base de donnes MySQL. Si vous lavez sur votre ordinateur, plusieurs possibilits soffrent vous, soit vous inscrirez dans ce champ ladresse IP de votre ordinateur, soit localhost, soit une adresse de bouclage ex : 127.0.0.1. Le login : Si vous venez dinstaller votre base de donne le login par dfaut est : root. Sinon demandez un login votre administrateur rseau. Le mot de passe : Si vous venez dinstaller MySQL sur votre poste le mot de passe par dfaut nest pas dfini, donc cette zone restera vide. Donc, lorsque ces renseignements seront saisis nous essayerons de nous connecter la base de donne via le bouton de connexion, si la connexion russie nous remplirons larbre avec les bases MySQL et pour chaque bases, les tables constituantes. Dans le champ etatcnx nous mettrons un texte nous indiquant le succs de la connexion sinon lchec. Verifier que vous avez plac tous les objets et votre fentre ressemble la mienne .Vous lenregistre sous le nom de dpart .Vous la dclare comme premire fentre du projet. Nous allons avoir besoins de 2 variables globales la fentre, allez dans le code de la fentre et dans la zone dclaration globale de dpart inscrivez ceci :

GLOBAL mabase,matable sont des chanes

Ces 2 variables doivent tre connues ou vues par tous les objets de la fentre, cest pour cela que lon les dclare globales au plus haut dans le conteneur principal. Intressons nous maintenant au comportement du bouton de connexion. Son rle est dtablir une connexion avec la base de donnes MySQL. Il a besoin de ladresse ip de la base, du login et du mot de passe pour tablir le contact. Voici son code :
resultat est un entier resultat=SQLConnecte(Numip,login,mdp,"","MySQL") SI resultat=0 ALORS etatcnx="Votre serveur Mysql n'a pas repondu" SINON etatcnx="Votre connexion est active" lesbases() FIN SQLDeconnecte()// Une fois les traitements fait, on se dconnecte

La procdure WinDev importante est SQLConnecte son rle est de connecter l'application en cours une base de donnes interroger par SQL. Pour cela elle a besoin de paramtre qui sont le contenu du champ Numip, de login, du mot de passe. Le 4eme paramtre est vide (les 2 apostrophes), il est dvolu au nom de la base de donne souhaite. Le5eme paramtre est le type de base de donnes attaqu, dans notre cas MySQL. Appuyez sur F1 en tant positionn sur le mot SQLConnecte et regardez dans laide toutes les bases de donnes susceptibles dtre interfaces avec WinDev Cette procdure retourne un entier qui vaut 0 si la connexion na pas pu tre tablie (mauvaise adresse ip, mauvais login, mot de passe, serveur Mysql arrtetc). Une bonne habitude prendre est de tester la russite ou lchec Dune fonction. Donc, si resultat=0 on informe lutilisateur quil y a un boulon dans le potage. Sinon cest que tout va bien : on fait afficher dans le champ de saisie etatcnx que la connexion est active. Pour allger le code nous allons crer une procdure locale la fentre que nous nommerons les bases.
Page 53 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Le rle de cette procdure est de nous remplir larbre avec les bases de donnes MySQL et les tables les composants. Voyons son code :

P R O C E D U R E lesb ases() resu ltat est u n b o o l en resu ltat= S Q L E x e c("sh o w d ata b ase s","req u ete1 ") S I resu ltat A L O R S // L ex cu tio n d e la req u te est ru ssie T A N T Q U E S Q L F etc h ("req u ete1 ") = 0 A rb re A jo u te(listeb ase,"B ases" + T A B + S Q L L itC o l("req u ete1 ", 1 ),a D fa u t,a D fau t,S Q L L itC o l("re q u ete 1 ", 1 )) lesta b les(S Q L L itC o l("req u ete 1 ", 1 )) F IN S Q L F erm e("req u ete1 ") A rb re D ro u le(listeb a se,"B ases") S IN O In fo("V o u s av e z u n p ro b lm e d e co n n ex io n ") N F IN

Rsultat est un boolen qui va recevoir le rsultat dexcution de la procdure SQLExec. Celle ci va excuter la requte nomme requete1 , dont le texte associ est show databases (Cette commande SQL fait retourner lensemble des bases de donne prsentent sur votre serveur MySQL). Si la requte sexcute bien rsultat vaut vrai sinon faux.
T A N T Q U E S Q L F etc h ("req u ete1 ") = 0

La fonction SQLFetch ne lance pas la rcupration de toutes les lignes du rsultat de la requte : seul l'enregistrement en cours est rcupr par la fonction SQLFetch. Le hic est que tant quelle retourne 0 la lecture de l'enregistrement s'est bien passe. La procdure ArbreAjoute cre un tree-view avec les lments que lon va lui passer. Dans notre cas il faut remplir avec le contenu rsultant de la requte prcdente. En fait le rsultat de la requte est, dans ce cas l, une table dune colonne contenant un nom de base par ligne. SQLFetch parcourt les lignes de la table et SQLLitcol("req u ete1 ", 1 ) lit pour la requte passe en paramtre, le contenu dela colonne passe aussi en paramtre (ici 1). Regarder laide dArbreAjoute et comparer avec le code, vous allez vite comprendre son fonctionnement. Nous allons donc crer un arbre affichant les bases de donnes disponibles, mais pour chaque base il nous faut aussi insrer dans larbre les tables qui la composent. Cest le rle de la procdure globale lestable que nous allons crer. Comme vous le remarquez la procdure lestables prend comme paramtre le nom de la base de donne contenu dans S Q L L itC o l("requ ete1 ", 1)

Page 54 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Crez donc cette procdure


P R O C E D U R E lestab les(lab ase) resu ltat est u n b o o l en S Q L C o n n e cte(N u m ip ,lo g in ,m d p ,lab ase," M y S Q L ") resu ltat= S Q L E x e c("sh o w tab les","re q u ete2 ") S I resu ltat A L O R S T A N T Q U E S Q L F etc h ("req u ete2 ") = 0 A rb re A jo u te(liste b ase,"B ases" + T A B + lab ase + T A B + S Q L L itC o l("req u ete2 ", 1 ),a D fau t,a D fau t,S Q L L itC o l("req u ete2 ", 1)) F IN S Q L F erm e("req u ete2 ") A rb re D ro u le(liste b ase,"B ases" + T A B + lab ase) FI N

S Q L D e co n n e cte()

Comme vous pouvez le constater cette procdure rcupre comme argument une chane de caractre (labase) contenant le nom de la base de donne a traiter. Il faut ensuite se connecter cette base de donne (ligne 3) pour demander lensemble des tables la constituant (ligne 4).Une fois la requte excute, si elle a fonctionn, tant que des lignes existent dans le contenu du rsultat de la requte, on les ajoute au bon endroit dans le tree-view (larbre). On ferme la requte avec la commande SQLFerme. Et on droule larbre pour des raisons esthtiques. Pour des raisons de scurit on utilise SQLDeconnecte() qui ferme la connexion en cours et libre l'espace mmoire utilis par la connexion. La fonction SQLDconnecte doit tre appele systmatiquement pour fermer la connexion, mme si cette connexion a chou Arriv ce stade, vous pouvez tester le rsultat. Entrez les bons paramtres de connexion, appuyez sur le bouton connexion et vous verrez le tree-view est rempli de larborescence bases de donnes + Tables. Maintenant, ce serait super de pouvoir lister le contenu dune table dont on aurait cliqu sur le nom dans larbre. Pour cela il faudrait rcuprer le nom de la table choisie et remplir la table mmoire. Cest tout simple voici le code que vous allez inscrire dans la zone clic sur listebase de lobjet listebase (larbre).
resultat est une chane resultat=ArbreSelect(MoiMme) mabase=ExtraitChane(resultat,2) matable=ExtraitChane(resultat,3) SI matable<>EOT ET mabase <>EOT ALORS //Nous avons la base et la table remplirtable(mabase,matable) FIN

Page 55 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

ArbreSelect(MoiMme) renvoie llment cliqu sous forme dune chaine. La fonction ExtraitChaine va nous tre dun grand secourt. On lui donne la chane initiale et on lui dit de nous renvoyer le Xieme mot. Dans notre cas nous allons mettre dans la variable globale mabase le deuxime terme de la chane et dans la variable matable le troisime terme. Si jamais vous avez cliqu sur le nom de la base au lieu de cliquer sur le nom de la table, resultat sera compos de 2 mots et non de trois, dans ce cas ExtraitChaine (resultat, 3) renverra EOT. Nous allons pouvoir remplir la table si les 2 variables (mabase et matable) sont diffrentes de EOT. Pour allger la lecture et faciliter la comprhension, on va donc crer un traitant de remplissage de table, la procdure remplirtable qui va prendre 2 arguments : le nom de la base et le nom de la table. Voici le code de remplirtable(mabase,matable)
PROCEDURE remplirtable(labase,latable) resultat est un boolen numconnexion est un entier texte est une chane TableSupprimeTout(Table1) numconnexion=SQLConnecte(Numip,login,mdp,labase,"MySQL") texte=SQLColonne(numconnexion,latable,Faux) SQLExec("select * from "+latable,"requete3") SQLInfoGene() miseenforme(texte,SQL.NbCol) SQLTable("requete3", "Table1") SQLFerme("requete3") SQLDeconnecte()

Voici lexplication du code. On commence par vider la table mmoire nomm table1. Ensuite on se connecte la base de donne dont le nom fut pass en paramtre. Cette ligne : texte=SQLColonne(numconnexion,latable,Faux) renvoie dans la variable texte le nom des colonnes de la table choisie par lutilisateur dans le tree-view. Le nom des colonnes nous sera utile pour mettre en forme la table mmoire on mettra en entte de table le nom des colonnes, ce sera plus parlant que c1,c2,c3c15. La ligne suivante fait une requte select classique qui liste le contenu intgral dun fichier donn (latable). SQLInfoGene() va renseigner diverses variables sur la dernire requte lance (requete3). Nous ce quil nous intresse, cest de connatre le nombre de colonnes que va gnrer notre requte. Notre table slectionne contient-elle 5 colonnes, 2, 10 ? En fait, a priori nous nen savons rien, cest pour cela que je vous aidemand de crer une table mmoire de 15 colonnes par dfaut. Cest la variable SQL.NbCol qui va nous dire combien la requte a de colonnes. Mais noubliez pas que SQL.NbCol ne contient des infos quaprs lappel de SQLInfoGene() Nous allons commencer crer lentte de la table mmoire(table1) avant dy transfrer les donnes. Cest le rle de la procdure miseenforme(texte,SQL.NbCol)
PROCEDURE miseenforme(lescolonnes,nbcol) i est un entier=1 nomcol,exnomcol sont des chanes TANTQUE i<>nbcol nomcol=ExtraitChane(lescolonnes,i,RC) exnomcol="C"+i {exnomcol}..Titre=nomcol {exnomcol}..Etat=Visible i++ FIN
Page 56 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Le but de cette procdure est de remplacer les c1,c2, c3..nbcol par un le nom de la colonne renvoy par la requte. Nous allons donc affecter le nouveau nom lancien. Nous avons pass a la procdure 2 paramtres : Une chane contenant les noms des colonnes spars par un espace et le nombre de colonnes. Nous avons comme impratif de renommer la premire colonne (C1) par le 1er terme contenu dans la chane ( lescolonnes ), la deuxime colonne (C2) par le 2eme terme de la chane et cela jusqu' nbcol. Comme vous le voyez cest ce que fait la boucle tantque. On initialise une variable i 1, puis tant quelle est diffrente de nbcol on place dans nomcol le terme contenu dans la chane lescolonnes lindice i. Ensuite on recre le nom de colonne bas sur lindice pour tre en phase. La partie la plus surprenante est le fait de mettre entre accolades le nom de la colonne. Cest ce que lon appelle une indirection, comme le nom du champ est dans une variable on fait ainsi comprendre WinDev de traiter le contenu de la variable comme tant le nom du champ souhait. On modifie le nom de la colonne par la constante.Titre et on la rend visible par ..Etat=Visible. Voil la procdure a fait la mise en forme. Elle sarrte et repasse la main a la procdure appelante : la procdure remplirtable. Lexcution continue sur la ligne SQLTable( requete3 , Table1 ). Cette commande faitun transfert du contenu de la requte dans la table mmoire. Sauvegardez et testez votre travail. Mais tout cela serait plus magique si vous aviez une zone de saisie de requte sql pour crer des nouvelles bases de donnes, crer des nouvelles tables, insrer des enregistrements.. Cest ce que lon va raliser maintenant, mais tout dabord voici le code du bouton requete
SI mabase<>"" ALORS Ouvre(frequete,Numip,login,mdp,mabase) SINON Info("Choisissez une base de donne") FIN

Si lutilisateur a cliqu sur une base du Tree-view alors on peut lancer louverture de la 2eme fentre nomme requte. Fentre qui on passe 4 arguments de connexion : le numro ip, le login, le mot de passe et la base sur laquelle on dsire travailler. Voici limage de la nouvelle fentre que vous nommerez frequete

Champ de saisie nomm larequete

Bouton nomm execute

Champ liste nomm resultat

Voyons les lments :


Page 57 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Un champ de saisie nomm la requte dans lequel vous taperez le texte de votre requte Un champ liste nomm rsultat dans lequel le rsultat de votre requte apparatra. Un bouton execute qui contient le code charg de se connecter la base MySQL, de faire excuter la requte et dafficher le rsultat. Pour que les variables passes par le code du bouton requte de la fentre Dpart soient prisent en compte par la fentre frequete , il faut saisir dans la zone dclaration globale de frequete la ligne suivante : Procedure frequete (Numip,login,mdp,mabase) Voyons de suite le code du bouton execution i est un entier texte est une chane
ListeSupprimeTout(resultat) // on vide la liste resultat SQLConnecte(numip,login,mdp,labase,"MySQL")// on se connecte la base SI larequete<>"" ALORS // si du texte a t frapp SQLExec(larequete,"requete4") // on fait excuter la requte par Mysql SQLInfoGene() // on fait gnrer les variables concernant la requte SQLPremier("requete4") // on se positionne sur la premire ligne des donnes retournes par la requte TANTQUE PAS SQL.EnDehors // Tant quil reste des lignes lire i=1 texte="" // Je vais construire dans texte la ligne en concatnant les colonnes TANTQUE i<=SQL.NbCol // de i au nombre de colonnes texte=texte+TAB+SQLCol("requete4", i) // Je concatene i++ FIN ListeAjoute(resultat,texte) // Jajoute dans la liste rsultat la ligne que je viens de crer SQLSuivant("requete4") // je passe la ligne suivante FIN SQLFerme("requete4") // je dtruis ma requte SINON Info("Veuillez saisir une requte") FIN SQLDeconnecte() // Je me dconnecte

Page 58 sur 59

Tavaux Dirigs Windev9

Jean Claver MOUTOH

Page 59 sur 59