Transcript L`objet Command
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
1
Cours VB 2007/2008
Le modèle ADO Modèle DAO
Data Access Object
Modèle ADO
ActiveX Data Object L’objet
Connection
L’objet
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
connections) se base sur l’utilisation du modèle ADO mais offre plus de possibilités (exemple: possibilité de faire plusieurs 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.
concepteur.
Définissez les propriétés de connexion pour le
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 cliquant sur Tester la connexion.
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
Cours VB – ISG 2007/2008
6
Recap
BD Access
JET 4.0 OLE DB
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 l'objet Command bouton droit sur 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
1.
Exemple: Créez une requête qui retourne des informations sur les commandes des clients français 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 commande.
DataGrid, Visual Basic crée automatiquement une grille de données qui affiche les enregistrements du jeu d'enregistrements de la 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 Recordset qui représente retournés par ce dernier les associé un objet enregistrements L'objet Recordset utilise le Command mais lui même nom que l'objet 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
enregistrements qu'ils (=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 ont Recordset.
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
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 Recordset.
(=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
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
BD Access
JET 4.0 OLE DB
Projet VB 1 ou ++ Data Environnement Objet command .
.
.
Objet command RecordSet .
.
.
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 :
recordse
t.Update [
Field s, 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 : recordse t.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 End Sub
Cmdvalider_Click
SSTab1.Enabled = True () DataEnvironment1.rsCTProduits.Update
Private Sub End Sub
CmdAnnuler_Click
SSTab1.Enabled = True () DataEnvironment1.rsCTProduits.CancelUpdate
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