L`objet Command

publicité
Chapitre 6
Les Bases de Données en VB
Intéraction avec les données dans une
base de données Microsoft Jet/Microsoft
Access
Et
gestion des enregistrements
Cours VB 2007/2008
1
Le modèle ADO
Modèle DAO
Data Access Object
Modèle ADO
ActiveX Data Object
L’objet
L’objet
Connection Commmand
L’objet
RecordSet
La collection
Errors
• Le modèle ADO est une bibliothèque
d’instructions qui permet de gérer de nombreux
paramètres pour se connecter et de manipuler
des sources de données.
• DataEnvironment se base sur l’utilisation du
modèle ADO mais offre plus de possibilités
(exemple: possibilité de faire plusieurs
connections)
Cours VB – ISG 2007/2008
2
Objet Connection
Cours VB 2007/2008
3
L’objet Connection


L’objet Connection est utilisé pour
établir une connexion avec une source
de données : par exemple une base de
données Access ou une base orientée
Client-Serveur de type SQL Server ou
Oracle.
Différents paramètres peuvent être
indiqués à l’objet Connection :




Le fournisseur de données
Le nom utilisateur
Le mot de passe
Les autorisations d’accès
Cours VB – ISG 2007/2008
4
Création d'une connexion à un
fichier de BD Access (1)
Lorsque vous travaillez avec les données d'une base
Microsoft Access, vous devez commencer par créer
une connexion vers un fichier de base de données
Microsoft Jet/Microsoft Access :

1. Ajoutez à votre projet un concepteur Data
Environment (Ajouter Data Environnement dans Plus
de connexion Activex dans le menu Projet.) ou ouvrir
un projet de données (ProjetData).
2. Remarque : Si le concepteur d'environnement de
données n'est pas disponible dans le menu Projet,
ajoutez-le à votre environnement Visual Basic. Cliquez
sur Composants dans le menu Projet, cliquez sur
l'onglet Concepteurs, puis activez la case à cocher
correspondant à son nom dans la liste des
concepteurs.
Cours VB – ISG 2007/2008
5
Création d'une connexion à un
fichier de BD Access (2)
2. Définissez les propriétés de connexion pour le
concepteur.
 cliquez à l'aide du bouton droit de la souris sur l'objet
Connection dans votre concepteur Data Environment, puis
choisissez Propriétés depuis le menu contextuel :
 Sélectionnez un fournisseur JET 4.0 OLE DB sur l'onglet
Fournisseur de la boîte de dialogue.
Puis cliquez sur Suivant et entrez le chemin d'accès au
fichier de la base de données
Remarque
Vous
pouvez
définir
les
propriétés
supplémentaires de connexion en cliquant sur les onglets
Paramètres avancés ouTous, ou tester la connexion en
cliquant sur Tester la connexion.

Cours VB – ISG 2007/2008
6
Recap
JET 4.0 OLE DB
BD
Access
Projet VB
1 ou ++
Data
Environnement
Cours VB – ISG 2007/2008
7
Objets commandes
Objets Recordset
Cours VB 2007/2008
8
L’objet Command


Dans la hiérarchie ADO l’objet
Command se place après l’objet
Connection et détermine le type de
tables ou les requêtes SQL qui
interpelleront les tables.
En fonction des différents fournisseurs
de données ces paramètres peuvent
varier :







Table
Vue
Texte d’une requête SQL
Relation
Regroupement
Type de position du curseur
Type de verouillage ..
Cours VB – ISG 2007/2008
9
Création d'un objet Command
d'environnement de données


Une fois créée la connexion à votre BD,
vous pouvez utiliser le concepteur Data
Environment pour créer les objets
Command qui vous donneront accès aux
données. Par exemple, vous pouvez créer
un objet Command simple qui vous donne
accès aux données d'une table et un
autre objet Command, plus complexe,
basé sur une requête.
Pour
créer
un
objet
Command
d'environnement de données simple:
1.Ouvrez un concepteur Data Environment
2.Créez
l'objet
Command
Data
Environment bouton droit sur la connexion 
Ajouter une commande  bouton droit sur
l'objet Command  Propriétés  spécifier le
nom de l'objet Command, la connexion qu'il
utilise et la source de ses données dans la boîte
de dialogue Propriétés de Command.
Cours VB – ISG 2007/2008
10
Objet commande basée sur une
table
 Par exemple, pour créer un objet Command basé sur
la table Clients de la base Les comptoirs, définissez
les propriétés suivantes :
Cours VB – ISG 2007/2008
11
Objet commande basée sur une
requête

Ouvrir un concepteur Data Environment existant ou
en créer un nouveau.

Créez l'objet Command mais au lieu de sélectionner
un objet base de données spécifique comme base
de la commande, sélectionnez comme source de la
commande Instruction SQL. Ensuite, cliquez sur le
bouton Générateur SQL pour ouvrir le Concepteur
de requêtes dans lequel vous spécifiez les tables, les
champs et les critères de la requête.
Cours VB – ISG 2007/2008
12
Exemple –
Client français

1.
2.
3.

Créez une requête qui retourne des informations sur
les clients français
Glisser la table Client de la fenêtre Fenêtre
Données (disponible dans le menu Affichage)
Cliquez sur la case à cocher à côté des champs que
vous voulez inclure dans la requête.
Spécifiez les critères de la requête en entrant
« France » dans la case Critère du champ Pays dans
la grille du Concepteur de requêtes. Lorsque vous
spécifiez les champs et les critères, le Concepteur de
requêtes crée automatiquement l'instruction SQL
sous-jacente de la requête
Pour afficher les résultats de la requête, cliquez avec
le bouton droit de la souris sur le Concepteur de
requêtes et sélectionnez exécuter. Le Concepteur de
requêtes affiche le résultat produit.
Cours VB – ISG 2007/2008
13
Exemple –
Client français
SELECT Adresse, `Code client`, `Code postal`, Contact,
Fax, Fonction, Région, Société, Téléphone, Ville
FROM Clients
WHERE (Pays = 'france')
Cours VB – ISG 2007/2008
14
Exemple –
Commandes des Client français
Exemple: Créez une requête qui retourne des
informations sur les commandes des clients français
1. Glisser les tables Clients et Commandes
2. Cliquez sur la case à cocher à côté des champs que vous
voulez inclure dans la requête.
3. Spécifiez les critères de la requête en entrant « France » dans
la case Critère du champ Pays dans la grille du Concepteur de
requêtes.
Cours VB – ISG 2007/2008
15
Exemple –
Commandes des Client français

1.
2.


Pour créer une grille de données qui affiche les
commandes des clients français:
Sélectionnez l'objet Command ClientsFrancais.
Glissez l'objet Command vers une feuille vide à l'aide
du bouton droit de la souris:
Visual Basic affiche un menu contextuel dans lequel
vous choisissez de créer une grille de données
(DataGrid) ou un contrôle dépendant. Lorsque vous
sélectionnez
DataGrid,
Visual
Basic
crée
automatiquement une grille de données qui affiche
les enregistrements du jeu d'enregistrements de la
commande.
Lorsque vous exécutez la feuille, Visual Basic affiche
les enregistrements retournés par l'objet Command
ClientsFrancais dans une grille de données.
Cours VB – ISG 2007/2008
16
L’objet Recordset (1)

A chaque objet Command est associé un objet
Recordset qui représente les enregistrements
retournés par ce dernier

L'objet Recordset utilise le même nom que l'objet
Command mais lui ajoute un préfixe «rs»
(Recordset).

Exemple: lorsque le concepteur d'environnement de
données crée la commande TableClients, il crée
aussi un objet Records et nommé "rsTableClients."

Chaque ligne d’un objet Recordset comprend un ou
plusieurs champs représentant un ou plusieurs objet
Field.
Cours VB – ISG 2007/2008
17
L’objet Recordset (2)



Le Recordset se base sur l’utilisation
de quatre types de curseurs définis dans
ADO :
Curseur dynamique (=2): permet de visualiser les
ajouts, les modifications et les suppressions
effectués par d'autres utilisateurs. Il permet
également tout type de déplacement ne nécessitant
pas l'utilisation de signets dans l'objet Recordset. Ce
type de curseur permet l'utilisation de signets si le
fournisseur est en mesure de les prendre en charge.
Curseur à jeu de clés (=1) : son fonctionnement est
identique à celui d'un curseur dynamique mais il ne
permet pas de visualiser les enregistrements
ajoutés par d'autres utilisateurs ou d'accéder aux
enregistrements
qu'ils
ont
supprimés.
Les
modifications effectuées sur les données par les
autres utilisateurs sont néanmoins visibles. Ce type
de curseur prend toujours en charge les signets et il
permet donc tout type de déplacement dans l'objet
Recordset.
Cours VB – ISG 2007/2008
18
L’objet Recordset (3)


Curseur statique (=3) : fournit une copie
statique d'un jeu d'enregistrements que vous pouvez
utiliser pour rechercher des données ou créer des
rapports. Il permet l'utilisation de signets et rend donc
possible tout type de déplacement dans l'objet
Recordset. Les ajouts, modifications et suppressions
effectués par d'autres utilisateurs ne sont pas visibles.
Ce type de curseur est le seul autorisé si vous ouvrez
un objet Recordset côté client .
Curseur à défilement en avant (=0) : son
fonctionnement est identique à celui d'un curseur
dynamique, mais vous pouvez uniquement parcourir
les enregistrements vers l'avant. Ce type de curseur
permet d'obtenir de meilleures performances lorsque
vous devez parcourir une seule fois un objet
Recordset.
Cours VB – ISG 2007/2008
19
L’objet Recordset (4)
 Important : Vous pouvez faire référence à l'objet
Command dans le code comme à une commande du
Data Environment, et faire référence à son jeu
d'enregistrements comme à une propriété du Data
Environment.
 Exemple: si vous créez la commande TableClients
dans un DataEnvironment nommé DataEnvironment1,
vous pouvez faire référence à la commande dans le
code de la façon suivante :
DataEnvironment1.TableClients Vous pouvez faire
référence au jeu d'enregistrements sous-jacent de
l'objet Command de la façon suivante :
DataEnvironment1.rsTableClients
Cours VB – ISG 2007/2008
20
Recap
JET 4.0 OLE DB
Projet VB
BD
Access
1 ou ++
Data
Environnement
Objet command
RecordSet
.
.
.
.
.
.
Objet command
RecordSet
Cours VB – ISG 2007/2008
21
Création d'une feuille
dépendante des
données simple
Cours VB 2007/2008
22
Création d'une feuille
dépendante des données
simple(1)


Glissez un objet Command (basé sur une table
ou une requête) du concepteur Data
Environment vers une feuille vide.
Visual Basic
créée automatiquement des contrôles TexBox pour
afficher les données à partir du Recordset de l'objet
Command et définit des propriétés de données qui
lient les contrôles aux champs du Recordset.
On dit, il crée des champs dépendants
Cours VB – ISG 2007/2008
23
Création d'une feuille
dépendante des données
simple(2)
Si vous regardez dans les propriétés de ces
différents champs, dans la catégorie "Données"
vous remarquerez 3 propriétés intéressantes
qui sont:
 Datasource
 Datamember
 Et datafield
Dans l'exemple de la Table Clients, les 2 premiers
champs ont les valeurs suivantes:
Datasource = DataEnvironment1
DataMember = TableClients
 Puis, pour chaque champ de saisie, la propriété
Datafield va variée et prendre le nom du champ
auquel il est lié.
 Exemple: Pour le champ 'tctCodeClient' la
propriété Datafield = 'Code Client'

Cours VB – ISG 2007/2008
24
Création d'une feuille
dépendante des données
simple(3)
Cours VB – ISG 2007/2008
25
Création d'une feuille
dépendante des données
simple (4)
Remarque:


Si une feuille contient des contrôles
dépendants alors si on modifie la valeur
d’un champ puis on navigue dans les
enregistrements alors c’est comme si on a
fait update
Deux solutions sont possibles:


bloquer les zones textes dépendantes
(locked=true) et ajouter un bouton modifier
ne pas utiliser les contrôles dépendants et
utiliser les fields avant le update
Cours VB – ISG 2007/2008
26
Ouverture des recordsets


Il faut lors du chargement de la
feuille ouvrir les objets commandes
concernés et les fermer à la fin
Exemple:
DataEnvironment1.rsCTProduitsCritères.Open
…….
…….
DataEnvironment1.rsCTProduitsCritères.Close

Remarque: Si un objet commande
est lié à des contrôles alors ils sont
ouverts par défaut
Cours VB – ISG 2007/2008
27
Consultation
ou
Navigation
Cours VB – ISG 2007/2008
28
Navigation dans les
enregistrements

Un RecordSet offre plusieurs méthodes
qui permettent de naviguer dans les
enregistrements :




MoveFirst déplacement vers le
premier enregistrement
MoveLast déplacement vers le
dernier enregistrement
MoveNext déplacement vers
l’enregistrement suivant
MovePrevious déplacement vers
l’enregistrement précédent
Cours VB – ISG 2007/2008
29
Exemple de navigation dans
les enregistrements (1)
Private Sub CmdPremier_Click()
If DataEnvironment1.rsTableClients.RecordCount > 0 Then
DataEnvironment1.rsTableClients.MoveFirst
End If
End Sub
Private Sub CmdDernier_Click()
If DataEnvironment1.rsTableClients.RecordCount > 0 Then
DataEnvironment1.rsTableClients.MoveLast
End If
End Sub
Cours VB – ISG 2007/2008
30
Exemple de navigation dans
les enregistrements (1)
Private Sub CmdPrécédent_Click()
With DataEnvironment1.rsTableClients
If .RecordCount > 0 Then
.MovePrevious
If .BOF = True Then
.MoveLast
End If
End If
End With
End Sub
Private Sub CmdSuivant_Click()
With DataEnvironment1.rsTableClients
If .RecordCount > 0 Then
.MoveNext
If .EOF = True Then
.MoveFirst
End If
End If
End With
End Sub
Cours VB – ISG 2007/2008
31
Ajout
Cours VB – ISG 2007/2008
32
Ajout



La méthode AddNew ajoute un nouvel enregistrement
au recordset (vide)
Remarque: il faut que la propriété locktype de la
commande soit différente de lecture seule (exemple
Optimiste)
Syntaxe : recordset.AddNew [FieldList, Values]



Où FieldList et Values sont des paramètres
facultatifs permettant d'entrer directement des
valeurs dans le nouvel enregistrement.
Dès l'appel de AddNew, l'enregistrement créé devient
l'enregistrement en cours.
Nouveau (AddNew) vide les champs puis
 Valider (Update) valide l'ajout
 ou
 Annuler (CancelUpdate) annule l'ajout
Cours VB – ISG 2007/2008
33
Exemple
With DataEnvironment1.rsTableClients
.AddNew
.Fields(“Code client") = “C1"
.Fields("Société") = "RABILLOUD"
.Fields("Ville") = "Paris"
.Fields("Code postal") = 750014
.Update
End With
ou
With DataEnvironment1.rsTableClients
.AddNew
![Code client] = “C1"
![Société] = "RABILLOUD"
![Ville] = "Paris"
![Code postal] = 750014
.Update
End With
Cours VB – ISG 2007/2008
34
Ajout


Si on appelle AddNew avec
paramètres le Update est lancé
implicitement.
Exemple:
DataEnvironment1.rsProduits.addnew
array("Réf produit", "Nom du
produit"), array(144, "Ordinateur")
Permet d'ajouter directement le
nouveau enregistrement dans la
table produits
Cours VB – ISG 2007/2008
35
Modification
Cours VB – ISG 2007/2008
36
Modification

La méthode Update sauvegarde les
modifications apportées à
l'enregistrement en cours.
Syntaxe :
recordset.Update [Fields, Values ]
 Où Fields et Values sont la liste
des champs et des valeurs à
modifier (facultatif).
 Remarque: on ne peut pas modifier
la clé

Cours VB – ISG 2007/2008
37
Annulation



La méthode CancelUpdate annule les modifications
apportées à l'enregistrement en cours (annule aussi
l'ajout si l'enregistrement en cours vient d'être créé)
Syntaxe : recordset.CancelUpdate
Remarque: si les MAJ sont directement faite sur un
datagrid CancelUpdate ne marche pas donc si on
a une feuille qui contient des champs dépendants et
datagrid on peut lier les champs dépendants à un
objet commande et le datagrid à un autre objet
commande. Ou bien on peut utilisé l’instruction
Cancelbatch.
Cours VB – ISG 2007/2008
38
Exemple
Private Sub Cmdvalider_Click()
DataEnvironment1.rsCTProduits.Update
SSTab1.Enabled = True
End Sub
Private Sub CmdAnnuler_Click()
DataEnvironment1.rsCTProduits.CancelUpdate
SSTab1.Enabled = True
End Sub
Cours VB – ISG 2007/2008
39
Suppression
Cours VB – ISG 2007/2008
40
Suppression



La méthode Delete permet de supprimer
l’enregistrement courant
Syntaxe recordset.Delete
Remarque: On ne peut pas supprimer des
enregistrements liés (intégrité référentielle)
il faut dans ce cas supprimer les
enregistrements connexes avant (il faut
parcourir ces tables en supprimant les
enregistrements connexes )
Cours VB – ISG 2007/2008
41
Exemple
Private Sub cmdsupprimer_Click()
If MsgBox("Voulez vous supprimer", vbYesNo +
vbQuestion, "GSC") = vbNo Then
Exit Sub
End If
DataEnvironment1.rsTCentre.Delete
If DataEnvironment1.rsTCentre.RecordCount > 0 Then
DataEnvironment1.rsTCentre.MovePrevious
Else
DataEnvironment1.rsTCentre.AddNew
DataEnvironment1.rsTCentre.CancelUpdate
End If
End Sub
Cours VB – ISG 2007/2008
42
Téléchargement