L`objet Command

Download Report

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.DeleteRemarque: 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