       

    
CODES
SOURCES

- MODIFICATION D'UNE BASE AVEC A.D.O.-
Dans cet exercice, on utilise une interface VB pour remplir une table
d'une base de données Access. On utilise A.D.O (Active X Data Object") pour
ce connecter à la base de données.
Exercice :
Au démarrage de l'application, la liste des candidats est chargée à
l'aide de la table "candidat" de la base de données "BdVbGenerator". Un
candidat peut être engagé, pour cela, il faut sélectionner le nom du
candidat dans la liste des candidats, puis cliquer sur "ajouter" pour
transférer le nom dans la liste des engagés. Une fois la liste des
engagés complètes, il ne reste plus qu'à cliquer sur "Mettre à jour"
pour actualiser la table des engagés dans la base de données. Tout les
noms de la liste des engagés se retrouvent inscrits dans la base de
données.
Remarques : les clés primaires des deux tables sont de types
"numéros automatiques", leurs gestions n'est par conséquent pas à la
charge du programmeur, par contre, si vous utilisez un type numérique
classique, vous devez en tenir compte et intégrer la gestion de ces
champs dans le programme.
Pour utiliser le modèle A.D.O, il faut également
ajouter une référence au projet, c'est à dire ajouter la bibliothèque
d'objets correspondante. Pour cela cliquez sur "Références" dans le menu
contextuel "Projet". Cochez la bibliothèque d'objets "Microsoft ActiveX
Data Objects Library 2.1" puis cliquez sur "Ok" pour ajouter la
bibliothèque.
La plupart du code concernant la modification d'une table via une connexion A.D.O
est situé dans le code du bouton "Mise à jour".
Ce programme incorpore une gestion des erreurs, ce qui alourdit le
programme en code.
L'interface :
Elle contient 2 listes "ListBox" et 4 boutons de commande "Command
Button".

Code de la section
"général" :
Option Explicit
Dim Mabase As New ADODB.Connection
'Déclaration d'une connexion à la base de données
Dim CandidatRst As New ADODB.Recordset
'Déclaration des jeux d'enregistrements
Dim EngageRst As New ADODB.Recordset
Code du bouton
CmdAjouter :
Private Sub CmdAjouter_Click()
'Ajout du candidat dans la liste des engagés
engagelst.AddItem candidatlst.List(candidatlst.ListIndex)
'Retrait de l'engagé de la liste des candidats
candidatlst.RemoveItem (candidatlst.ListIndex)
'Sélection du dernier élément de chaque liste
If candidatlst.ListCount > 0 Then
'Si il reste au moins un element
candidatlst.Selected(candidatlst.ListCount - 1) = True
'selectionner
End If
If engagelst.ListCount > 0 Then
'Si il reste au moins un element
engagelst.Selected(engagelst.ListCount - 1) = True
'selectionner
End If
'Test de sécurisation permettant de verouiller le
bouton _
"ajouter" si il n'y a plus de candidat à ajouter et inversement
If candidatlst.ListCount = 0 Then
'Si il n'y a plus de candidats
CmdAjouter.Enabled = False
'Désactiver le bouton
Else
CmdAjouter.Enabled = True
'Activer le bouton
End If
'Test de sécurisation permettant de verouiller le
bouton _
"enlever" si il n'y a plus de candidat à enlever et inversement
If engagelst.ListCount = 0 Then
CmdEnlever.Enabled = False
Else
CmdEnlever.Enabled = True
End If
End Sub
Code du bouton
CmdEnlever :
Private Sub CmdEnlever_Click()
'Ajout du candidat dans la liste des engagés
candidatlst.AddItem engagelst.List(engagelst.ListIndex)
'Retrait de l'engagé de la liste des candidats
engagelst.RemoveItem (engagelst.ListIndex)
'Sélection du dernier élément de chaque liste
If candidatlst.ListCount > 0 Then
'Si il reste au moins un element
candidatlst.Selected(candidatlst.ListCount - 1) = True
'selectionner
End If
If engagelst.ListCount > 0 Then 'Si il reste au moins un element
engagelst.Selected(engagelst.ListCount - 1) = True
'selectionner
End If
'Test de sécurisation permettant de verouiller le
bouton _
"ajouter" si il n'y a plus de candidat à ajouter et inversement
If candidatlst.ListCount = 0 Then
'Si il n'y a plus de candidats
CmdAjouter.Enabled = False
'Désactiver le bouton
Else
CmdAjouter.Enabled = True
'Activer le bouton
End If
'Test de sécurisation permettant de verouiller le
bouton _
"enlever" si il n'y a plus de candidat à enlever et inversement
If engagelst.ListCount = 0 Then
CmdEnlever.Enabled = False
Else
CmdEnlever.Enabled = True
End If
End Sub
Code du bouton CmdMAJ
(Mise à jour) :
Private Sub CmdMAJ_Click()
Dim x As Integer
'On vide la table, on efface les anciens
enregistrements à l'aide d'une instruction SQL
Mabase.Execute "DELETE ENGAGES.* FROM ENGAGES" 'Execution
d'une _
requête SQL de suppression
'On remplit les champs du jeu d'enregistrement
Engages
For x = 0 To engagelst.ListCount - 1
EngageRst.AddNew
'Ajout d'un enregistrement
EngageRst("NOM") = engagelst.List(x) 'Inscription
dans la table
EngageRst.Update
'Enregistrement des modifications
Next
End Sub
Code du bouton
CmdQuitter:
Private Sub CmdQuitter_Click()
End
'Fermer l'application
End Sub
Code du chargement de
la feuille
Private Sub Form_Load()
'Définition du provider
Mabase.Provider = "Microsoft.jet.OLEDB.4.0"
'Ouverture de la base de données
Mabase.Open "data source =C:\BdVbGenerator.mdb"
'Ouverture des jeux d'enregistrements
CandidatRst.Open "MEMBRES", Mabase, adOpenStatic
'Ouverture en statique
'Ouverture en dynamique avec verrouillage
optimiste
EngageRst.Open "ENGAGES", Mabase, adOpenDynamic, adLockOptimistic
'Chargement de la liste des candidats par _
un test de type "For" : "Pour x allant de ... à ..."
'On parcourt le jeu d'enregistrement et on ajoute chaque enregistrement
Dim x As Integer 'Déclaration
d'un compteur
For x = 1 To CandidatRst.RecordCount
candidatlst.AddItem CandidatRst("NOM")
'Ajouter l'enregistrement à la liste
CandidatRst.MoveNext
'Passer à l'enregistrement suivant
Next 'Fin du test
'Sélection du dernier élément de la liste
If candidatlst.ListCount > 0 Then
'Si il y a au moins un élément
candidatlst.Selected(candidatlst.ListCount - 1) = True
'selectionner
End If
End Sub
Code du déchargement de la feuille
Private Sub Form_Unload(Cancel
As Integer)
'Fermeture des jeux d'enregistrements
CandidatRst.Close
EngageRst.Close
'Fermeture de la base de données
Mabase.Close
End Sub

©Copyright Webmaster 2002

|