visual basic 6 et l`acces aux bases de donnees resume table

publicité
VISUAL BASIC 6 ET L’ACCES AUX
BASES DE DONNEES
JOHN COUNELL
RESUME
La plupart des développeurs Visual Basic travaillent sur des
applications faisant intervenir des bases de données. La
deuxième étape de toute formation à Visual Basic, après la
phas e d'apprentissage de la programmation visuelle orientée
objet, est donc l'utilisation des contrôles ActiveX dédiés a l'accès
aux données.
Ce livre traite des deux technologies qui coexistent dans la
version 6 de Visual Basic :
. DAO (Data Access Objects), qui existait déjà dans les versions
antérieures de VB, avec un usage limité aux bases de données
bureautiques de type Access.
. ADO (ActiveX Data Object), une nouvelle technologie, d'accès
aux données, à la fois plus simple d'emploi, plus performante et
plus universelle que DAO. ADO est aujourd'hui un élément
essentiel de tous les produits Microsoft permettant de
manipuler ou d'échanger des données: VB 6, VC++ 6, Access, Excel, IIS4/ASP2, Exchange, etc.
Au sommaire
. Introduction aux bases de données relationnelles
. Utilisation de l'assistant Feuilles de données
. Programmation de contrôles DAO et ADO
. Création d'une interface utilisateur
. Création de classes personnalisées pour une meilleure réutilisabilité
. Manipulation des données avec le langage SQL
. Principes de conception d'une base de données
. Modèle objet de DAO
. Exemple d'application: création d'un carnet d'adresses
. Accès universel aux données avec ADO et OLE-DB
. Création de contrôles ADO personnalisés
. Construction d'une application Internet avec VB6, ,'\00 et ASP
. Programmation ADO avancée: construction d'une application de datamining
. Exportation des données aux formats Excel et HTML.
. EN ANNEXE: corrigé des exercices.
TABLE DES MATIERES
Introduction
1
De quoi traite ce manuel ?
A qui s'adresse ce manuel ?
Les nouvelles fonctionnalités de Visual Basic 6.0 liées aux bases de données
Notre approche
De quoi avez-vous besoin pour utiliser ce Iivre ?
Servi ce clientèle
Où trouver le code source de cet ouvrage?
Conventions
Qu’ allez-vous découvrir ?
Chapitre 1
Qu'est-ce qu'une base de données?
1
2
3
4
4
5
5
5
6
9
Pourquoi utiliser une base de données?
Les bases de données
Stocker des informations dans notre armoire de classement
Obtenir l'information recherchée en effectuant une requête
dans notre base de données
Fichiers « à plat» et bases de données relationnelles
Les composants d'une base de données relationnelle
En savoir plus sur les bases de données relationnelles
Qu'est-ce qu'une table?
Fichiers et tables de base de données
Biblio.mdb
une base de données exemple
Les données de Biblio.mdb
Mettre à l index
Qu'est-ce qu'une relation ?
Les différentes relations qui existent entre les tables
La clé des relations réussies
Qui a la clé ?
Enregistrements orphelins
Normaliser nos données
Passons à autre chose
Rappel de quelques termes importants
Access et Visual Basic
Pourquoi utiliser Access ?
La base de donne es relationnelle Biblio.mdb
Créer un nouveau sous-repertoire
Ou faire intervenir notre programme VB ?
L'interface utilisateur
Le moteur de base de données
Jet: un moteur de base de donne es spécifique
Les DLL
l'essence du moteur Jet
Jet est autonome
Le magasin de données
Tentons une approche
Tables, enregistrements et champs de Biblio.mdb
La table Publishers (Editeurs)
La table Authors (Auteurs)
La table Title Author (Titre-Auteur)
Construire une relation
Mais comment fait-il?
Un bel avenir devant soi
DAO ou ADO ?
Au-delà. de l'enigme DAO-ADO
DAO et ADO pour ou contre?
Vive la diversité !
Faire votre choix en vue de la réutilisation
Quelques bonnes nouvelles
Résumé
En clair
L'étape suivante
Exercices
Chapitre 2
Faisons connaissance avec l'Assistant Feuilles de données de VB 6
Qu'est-ce que le contrôle de données ADO ?
Le jeu d'enregistrements
Découvrons l'Assistant Feuilles de données
Qu'est-ce qu'un complément?
Le produit final en mode creation
Le produit final au moment de l'exécution
Naviguer au sein du jeu d'enregistrements
Utiliser différentes méthodes pour consulter la même information
La feuille Principale /secondaire en mode création
La feuille Principale /secondaire au moment de l'exécution
La mise en page HflexGrid
La mise en page MS Chart
Ne vous fiez pas aux apparences !
10
11
11
13
14
16
16
17
17
18
18
20
21
22
22
24
25
25
25
25
26
26
27
27
28
29
29
29
30
31
31
31
32
32
33
33
34
35
35
35
36
36
37
38
38
38
39
39
39
41
42
42
44
45
57
58
59
61
66
67
68
73
79
Méfiez-vous de l' Assistant
Quelques précisions au sujet de la fonction tri
79
80
Initiation à l'ordre de tri ASCII
Résumé
A retenir
Exercices
80
82
83
83
Chapitre 3
Programmer le contrôle des données
Pourquoi ne pas laisser faire l'Assistant?
Le contrôle de données et les contrôles dépendants
Les contrôles intrinsèques
Qu'est-ce qu'une DLL ? Rappel
La liaison dynamique
Le contrôle intrinsèque de données DAO
Qu'est-ce qu'un jeu d'enregistrements ?
Qu'est-ce qu'un contrôle de données dépendant ?
Les différents types de contrôles dépendants mis à notre disposition
Les contrôles intrinsèques
Les contrôles ActiveX
Travailler avec les contrôles de données
Modifier les données
L'ordre des événements
Mais comment le sait-il?
Relation parent /enfant dans le contrôle de données
Le contrôle masqué
Présentation du nouveau contrôle de données ActiveX ADO
Le contrôle de données ADO et le contrôle dépendant DataList
La propriété BoundColumn
Le contrôle Hierarchical FlexGrid
Qu'ont en commun tous ces contrôles ?
Résumé
A retenir
Exercices
Chapitre 4
85
85
86
87
88
88
89
90
91
92
92
92
95
100
101
101
103
109
111
112
122
128
132
132
132
133
Concevoir une interface utilisateur pour le contrôle de données
135
Créer l'interface utilisateur
La feuille Visual Basic
Explication des propriétés
Explication de la programmation événementielle
L'importance de l'ordre des événements de la feuille
Retour a la programmation de bases de données
Au cœur du contrôle de données
Reproduire la fonctionnalité de l'Assistant
Alors, on essaie?
Les contrôles dépendants vus sous un autre angle
Que se passe-t-il réellement lors de l'exécution de notre programme?
Les jeux d'enregistrements vus sous un autre angle
Les groupes de contrôles
Dans les coulisses du contrôle de données
La propriété BOFAction
La propriété EOFAction
La propriété Connect
Un peu de code, et le tour est joué!
Réduire les points pour obtenir une référence d'objet efficace
La fonction IntelliSense
Pourquoi le code est-il placé dans Form_Activate() ?
L'événement Reposition du contrôle de données
Flatter les yeux de l'utilisateur
Apporter quelques améliorations
Et maintenant ?
A retenir
A suivre
Exercices
135
136
138
140
142
143
143
144
145
155
156
157
159
160
161
162
163
164
166
168
169
170
171
173
176
177
177
177
Chapitre 5
Programmer une interface utilisateur fiable
179
Le contrôle de données: adapté ou non?
Créer une interface utilisateur améliorée
179
180
Le système de classes
Revenons au contrôle de données
Propriétés du contrôle de données
Les méthodes du contrôle de données
Les propriétés du jeu d'enregistrements
Méthodes du jeu d'enregistrements
Le concept de machine à états
Créer une interface utilisateur fiable
Mais voilà, il y a un problème
Améliorer la navigation dans les enregistrements
Un niveau d'adressage indirect
Réutiliser le code
Construire le code de navigation pour l'interface utilisateur
L'instruction Case DbEditNone ne pas éditer ni ajouter d'enregistrements
Construire une chaîne
Instruction Case dbEditInProgress
éditer un enregistrement
Instruction Case DbEditAdd
Ajouter un nouvel enregistrement
Le sous-programme navigateButtons
Empêcher l'édition accidentelle d'un enregistrement: le sous-programme LockFields
Verrouiller et déverrouiller automatiquement nos champs de saisie de données
Tous les petits trucs ont été ajoutés a nos boutons
Ajouter les améliorations de l'interface à notre programme
Incorporer le sous-programme updateButtons
Attribuer un signet à un enregistrement
Améliorer la manipulation des données par le biais de l'interface utilisateur
Ajouter des enregistrements
Editer des enregistrements
Sauvegarder des enregistrements
Supprimer des enregistrements
Annuler les modifications apportées aux enregistrements
Ajouter une référence
S'amuser avec l'Explorateur d'objets
Résumé
A retenir
Exercices
181
181
181
182
183
183
185
185
192
193
194
194
195
199
199
202
202
203
207
209
213
213
213
215
216
216
217
218
220
221
224
225
228
228
228
Chapitre 6
Parfaire interface utilisateur
Ou en sommes-nous ?
Quelques questions sur le déchargement de la feuille
Assurer un déchargement uniforme de notre feuille
La fonction MsgBox
Utiliser App.EXEName
Quelques réflexions sur la saisie de données
Le focus, mais qu'est-ce que c'est exactement?
Mettre le bon champ en surbrillance
En savoir un peu plus sur le focus
Définir l'ordre de tabulation
Assurer le bon ordre des tabulations
La propriété TabStop
S'assurer que l'utilisateur ne change pas le champ PubID
Utiliser la touche Entrée pour se déplacer vers le contrôle suivant
Trouver un enregistrement particulier
Comment le trouver?
Ajouter un module de code à notre projet
Créer une feuille générale Rechercher
Mais comment y arriver?
Et voilà! Plus besoin de taper le code!
Tester la visionneuse d'Apl
Quelques mots sur les variables globales
Pourquoi ne pas utiliser de variables globales?
Créer la feuille Rechercher
Pourquoi ajouter des apostrophes doubles ("") à chaque champ?
Un descripteur ? Mais qu'est-ce que c'est?
231
232
232
234
236
236
239
239
242
243
245
245
248
250
253
254
255
256
257
257
259
260
261
262
264
270
272
Lancez-vous et exécutez votre programme!
Apporter la touche finale il la feuille Rechercher
Valider les données: le cauchemar du programmeur
L'évènement Validate
Chapitre 7
L'argument Action
L'argument Save
Créer du code de validation
Elargir l'utilisation du contrôle de données
Résumé
A retenir
Exercices
283
284
284
287
288
289
290
Construire un module de classe pour le contrôle de données
291
Contenu du chapitre
Les joies de la programmation répétitive
Les modules de classes à la rescousse
Composants réutilisables
Une classe, mais qu'est-ce que c'est exactement?
La terminologie POO
Polymorphisme
Héritage
Encapsulation
Copier votre programme
Ce que nous allons faire
Construire une classe dans Visual Basic 6.0
Ajouter du code à notre classe
Encapsulation des données
Les propriétés de notre classe
Attribuer des valeurs il nos propriétés de classe
Lire les propriétés de nos classes
Définir des objets dans notre classe DataClass
Définir une propriété en lecture seule ou en écriture seule
Observons les propriétés de plus près
La propriété Let Buttons
La propriete Set dataCtl
La propriete Let dbName
La propriete Set FormName
La propriete Let LabelToUpdate
La propriete Set ProgressBar
La propriete Let RecordSource
La propriete Let Tag
Retour au Générateur de classes
Les méthodes de notre classe de donnees
Ajouter du code à nos méthodes de classes
Ajouter du code
La méthode ProcessCMD
La méthode updateButtons
Le sous-programme d'aide navigateButtons
Recapitulons
Peaufiner le module de classe ClasseDonnées
Rendre nos modèles utilisables dans tous les projets Visual Basic
Validation de données... bis
L 'Explorateur d' 0bjets
Apporter la touche finale à notre classe ClasseDonnees
Une feuille mere-fille: la classe du contrôle de données en action
Les pièges d'une feuille de saisie de données mere-fille
Résumé
A retenir
Exercices
Chapitre 8
277
278
281
282
Extraire des données de la base
Faisons les présentations !
SQL: langage ou technologie? Non, SQL tout court!
SQL
un collègue souple et coopératif
Obtenir les données souhaitées
291
292
292
293
293
294
295
295
295
296
296
296
107
109
309
310
310
311
311
313
313
313
314
314
314
315
315
317
317
318
320
320
320
324
326
333
334
342
352
353
354
356
364
367
367
368
369
370
370
371
371
L'instruction SELECT
L'instruction SQL la plus simple
Construire le contrôleur de requêtes SQL
Sélectionner certains champs d'une seule table
Filtrer le jeu d'enregistrements retournés
372
372
373
380
382
La clause WHERE
Correspondance partielle: la clause Like
Enregistrements compris dans un intervalle la clause Between
Extraire des enregistrements avec la clause lN
Les conditions imbriquées
Les champs Null
La requête Delete
Champs uniques ou non ?
Trier le jeu d'enregistrements retourné
Les opérateurs ensemblistes
Attribuer un alias aux noms de la colonne
Les valeurs Null
Apparté statistique
Regrouper les valeurs à l'aide de la clause GROUP BY
Regrouper à l'aide de la clause HAVlNG
Fusionner des tables
La jointure interne
La jointure externe
L 'instruction SQL Update
Ne vous fiez pas aux apparences !
Utiliser dans Visual Basic le code SQL généré par Access
Assez de théorie! Créons un générateur d'instructions SQL dynamiques !
Que faire d' autre avec SQL ?
Résumé
A retenir
Exercices
382
383
384
385
385
386
187
387
388
389
391
392
393
394
395
396
397
398
399
404
407
408
412
413
413
414
Chapitre 9
Conception, construction et analyse d'une base de données
Règles générales relatives à l'utilisation des DAO et des ADO
Fournir à Visual Basic 6.0 les références aux DAO
Le carnet d' adresses personnel
La normalisation
Eléments de données non normalisés du Carnet d'adresses
Première forme normale: éliminer tous les groupes répétés
Deuxième forme normale: scinder les tables
Troisième forme normale: éliminer les colonnes qui ne dépendent pas de la clé
Créer notre base de données
Quelle est la relation entre Access, VisData, le contrôle de données ? Jet et les DAO?
Recommandations pour la création d'index
Créer une base de données avec les DAO
Serveur de fichiers ISAM et serveur client relationnel
Accès aux données ISAM
Accès aux données client-serveur de type relationnel
Définition du modèle d'objets DAO
0bjets et coIlections
Travailler avec des collections
Obtenir et utiliser des objets contenus dans les collections
Les objets base de données
ReIier Ies points
Les 0bjets Recordset
Options d'ouverture d'un jeu d'enregistrements
Analyser un fichier .mdb en utilisant les DAO
Résume
A retenir
Exercices
Chapitre 10
415
416
417
419
420
421
422
423
425
428
428
436
439
441
441
442
442
443
443
444
444
445
448
449
457
470
470
470
Programmer le Carnet d'adresses
473
Le contrôle Tab Micosoft
Le contrôle StatusBar
Le contrôle MaskedEdit
482
483
485
Passons à l'écriture du code
Quelques informations supplémentaires sur le contrôle StatusBar
La sous-routine clearFields
La sous-routine lockFields
La sous-routine updateTree
La sous-routine updateForm
489
496
498
500
501
506
La sous-routine setUpListView
Le programme Carnet d'adresses initialisé
La sous-routine populateFields
Convertir des dates
La sous-routine populateListView
Le code du contrôle ListView
Trier le contenu du contrôle ListView
La barre d'outils du Carnet d'adresses
Valider la saisie des données
Transmettre le contact a la base de données
Revenons au contrôle ToolBar
Ajouter des notes concernant un appel du contact courant
La feuille frmAppel, lieu d'enregistrement des appels
Juste quelques lignes de code
La sous-routine updatedescriptionCombo
Supprimer une description d'appel
Ajouter un appel ou annuler l'opération?
L ‘onglet Statistiques BD
Comment fonctionne tout cela? Récapitulation générale
A retenir
Exercices
508
509
511
513
514
517
517
519
521
523
525
527
528
530
531
534
538
540
541
546
546
Chapitre 11
Utiliser ADO pour l'accès universal aux données
Quelle est L’origine d' ADO ?
Les limites de DAO
A la recherche des données
Une seule constante: le changement
Retour vers le futur!
L'accès universel aux données
Pourquoi ADO est-il le moyen le plus simple d'accéder aux données?
Initiation a ADO (ActiveX Data Objects)
La clé de l'énigme: OLEDB !
Les propriétés du contrôle de données ADO
Comparer les propriétés des contrôles de données ADO et DAO
Le modèle objet ADO
Etape 1
l'objet Connection
Etape 2
ouvrir un jeu d'enregistrements
Programmer avec les objets ADO
Créer une source de données
Utiliser la méthode Exécute de l'objet Connection
Ouvrir les jeux d'enregistrements
S'amuser avec les schémas
A la recherche des types de données
Redécouvrir l'Explorateur d'objets
La collection Errors (ADO)
Tout savoir sur le fournisseur de données
A propos de la définition des références
Une autre approche du modèle objet ADO
L'objet Paramétrer
Qu'est-ce qu'un curseur?
Pourquoi les curseurs sont-ils importants dans ADO
Les types de curseurs
Ouvrir des jeu d'enregistrements ADO syntaxe
Les options ConnectionString
Les transactions et vous
Une transaction ADO
Utiliser quotidiennement les transactions
Résumé
A retenir
Exercices
547
547
548
548
552
552
553
554
555
555
567
567
568
569
570
571
576
585
587
588
593
594
595
598
600
601
603
603
606
606
608
609
609
610
613
614
615
615
Chapitre 12
Créer des contrôles de données ADO ActiveX dépendants
617
Bien sur, nous pouvions déjà créer des contrôles ActiveX
A la recherche d'un code réutilisable
C++ et Visual Basic: historique rapide... et subjectif
La liaison de données
618
618
619
620
Lier des champs à des contrôles
Ecrire le code du module de classe maClasseDépendante
L'événement Move Complete
La procédure MoveNext
Afficher l'état de Move Complete
Coder la feuille frmExempleDépendant
Coder l'événement Form Load
Afficher la raison et l'état de l'événement MoveComplete du jeu
d'enregistrements ADO
Un choix facile pour l'utilisateur
Exécuter le programme
Récapitulation
Créer notre propre contrôle de données
Fixer la taille du contrôle
Déclarer et générer des événements
Ajouter des propriétés et des méthodes au contrôle
Qu'en est-il lorsque la source des enregistrements n'est pas une table?
Le groupe de contrôles cmdBouton
Mettre à jour l'interface utilisateur
Activer et /ou désactiver les boutons sur notre contrôle
Verrouiller et déverrouiller les contrôles dépendants
Les propriétés UserControl
Les pages de propriétés: une petite touche de professionnalisme
Ajouter une boite À propos de
La ToolboxBitmap
Tester notre programme
La zone de texte liée
Valider nos données
Notre nouveau contrôle de données ADO ActiveX en action
Elaborer le fichier .ocx en vue d'une distribution
Notre contrôle dans le Registre
Le contrôle DataRepeater, une exclusivite Visu al Basic 6.0
Utiliser le nouvel outil DataRepeater
Ajouter des propriétés à notre contrôle
Définir les attributs de la procédure
Un dernier détour par l'Explorateur d'objets
Résumé
A retenir
Exercices
621
623
626
628
629
629
630
Chapitre 13
ADO et ASP
Les pages ASP
HTML
Créer des pages ASP
Exécuter des pages ASP
Comment installer le Serveur Web personnel sur votre machine
Préparer un dossier pour nos exemples
ASP, scripts et HTML
Comment se présente un script ASP ?
Notre premier script ASP
Le miracle est dans le % !
Exécutons notre premier script ASP
Les langages de script ASP
Un exemple plus pousse d'ASP fonde sur ADO
VBScript récupère les données et HTML les affiche
Une application ADO client /serveur élémentaire
Obtenir des données il partir du serveur
Code de la feuille de requête
Le côté serveur
631
631
632
633
634
639
642
644
646
647
655
657
658
659
664
669
673
674
678
679
681
682
684
685
686
689
691
699
699
700
700
701
701
703
704
705
705
711
712
713
713
715
716
720
720
724
728
729
730
732
Des données client permanentes grâce aux cookies
Elaborer une application pour des données permanentes
La feuille login.asp en action
La page visitor.asp en action
Créer la base de données site Visiteurs
Créer notre fichier visitors.dll
La fonction set Visitor
La méthode getVisitor
737
738
739
742
746
747
748
750
Enregistrer la DLL
La page newUser.asp en action
La feuille updateNewUser.asp en action
L'application en action
Résumé
A retenir
Exercices
752
754
757
759
760
760
760
Programmation avancée avec ADO ​le data mining
763
Des données, partout des données
Le data mining, ou comment exploiter au mieux les données
L'algorithme ID3
Un outil d'analyse de produits
Feuille de projet et initialisation du code ID3
Ouvrir la connexion il la base de données
Initialiser notre table ID3
Renseigner notre contrôle FlexGrid Région-Langue-Pays
Effectuer l'analyse
Déterminer l'entropie des valeurs que nous avons ajoutées
Trop d'entropie!
Un mot sur la création de notre instruction SQL
A retenir
Exercices
763
764
765
765
772
774
775
779
788
798
804
812
813
813
Chapitre 14
Chapitre 15
Rendre nos données universellement disponibles
Exporter des jeux d'enregistrements vers d'autres programmes
Les fichiers délimités par des virgules
Exporter en HTML
Exporter vers Excel
Exporter nos données vers un fichier délimité par des virgules
Créer un fichier d'exportation .csv
Exécuter le code
La puissance de csv
Exporter nos données en HTML
Créer le fichier HTML
Utiliser des objets pour envoyer des données ADO vers une feuille de calcul Excel
La liaison tardive
La liaison précoce
Envoyer à Excel des informations relatives au jeu d'enregistrements ADO
Le projet terminé
Les techniques ADO avancées
Qu'est-ce que les ADO avances?
Les jeux d'enregistrements ADO déconnectes
Les objets métier
Mettre à distance un jeu d'enregistrements
Créer un jeu d'enregistrements de connecte
Créer un jeu d'enregistrements de connecte, c'est facile
Tout est dans le curseur
Mettre à jour notre base de données à partir du jeu d'enregistrements ADO distant
La fonction createRecordset
Changer des données du côte client
Exécuter le programme
Obtenir la proprieté AbsolutePosition
Une autre merveille de ADO 2.0. les jeux d'enregistrements permanents
Résumé
A retenir
Exercices
815
815
816
816
817
819
821
827
832
832
836
838
839
840
841
849
849
849
850
850
851
852
852
852
853
857
859
860
861
863
867
868
868
Chapitre 16
Et maintenant?
RécapituIons
Ce que nous avons étudié
Ou en sommes-nous à présent?
Ou allons-nous?
Quelques mots d'avertissement
Les étapes suivantes
Le mot de la fin
869
869
869
870
871
871
871
872
Annexe A
Un standard, plusieurs variantes
La syntaxe [Field Name]
La clause BETWEEN
Les alias de colonne
Les jointures
Résumé
873
874
874
874
874
875
Annexe B
Solutions
877
Chapitre 1
Chapitre 2
Chapitre 3
Chapitre 4
Chapitre 5
Chapitre 6
Chapitre 7
Chapitre 8
Chapitre 9
Chapitre 10
Chapitre 11
Chapitre 12
Chapitre 13
Chapitre 14
Chapitre 15
Qu'est-ce qu'une base de données?
Faisons connaissance avec l'Assistant Feuille de données de Visual Basic 6
Programmer le contrôle de données
Concevoir une interface utilisateur pour le contrôle de données
Programmer une interface utilisateur fiable
Peaufiner l'interface utilisateur
Construire un module de classe pour le contrôle de données
Extraire les données de la base
Conception, construction et analyse d'une base de données
Programmer le Carnet d'adresses
Utiliser ADO pour l'accès universel aux données
Créer des contrôles de données ADO ActiveX dépendants
ADO et ASP
Programmation avancée avec ADO – le data mining
Rendre nos données universellement disponibles
877
878
879
880
881
883
884
885
886
888
890
891
892
894
894
Récapitulatif des types de données sous Access
897
Annexe C
TOP
Téléchargement