vba et les actions sur les tables cours de bernard coffin université paris 10 – nanterre / iup...
TRANSCRIPT
![Page 1: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/1.jpg)
VBA et les actions sur les tables
Cours de Bernard COFFINUniversité Paris 10 – Nanterre / IUP MIAGE 1ère année
Reproduction interdite sans l’accord de l’auteur
![Page 2: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/2.jpg)
Recordset
C’est un type de variable qui permet de mémoriser des informations complexes composées de :
1. Plusieurs enregistrements
2. Qui contiennent chacun plusieurs champs.
![Page 3: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/3.jpg)
Ça ressemble…
… à un fichier
Mais… ça n’en est pas un, car tout se passe en mémoire centrale.
Les modifications sur les tables via un
« recordset » nécessitent donc un ordre ad hoc.
![Page 4: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/4.jpg)
Plusieurs technologies
Pour utiliser une base de données relationnelles, il faut un « moteur de recherche ».
SQL est un langage commun aux moteurs
Mais, en dehors de la requête, les spécificités du domaine réapparaissent.
![Page 5: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/5.jpg)
ADO
Nous utiliserons seulement le moteur le plus récent : ADO
Abréviation de activeX Data Objects
Descendant de la technologie précédente : DAO.
Nombreuses similitudes. Se référer à Internet pour les différences.
![Page 6: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/6.jpg)
Ouvrir les bibliothèques ADODB
De nombreux environnements sont possibles sous ACCESS. Pour chacun, il faut des bibliothèques spécialisées.
Elles ne sont pas toutes ouvertes simultanément.
Il FAUT aller dans la commande Outils, puis Références, et là cocher l’option
Microsoft ADO Ext 2. etc.
Sinon, la compilation n’est pas possible.
![Page 7: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/7.jpg)
Déclaration d’un recordset
Syntaxe :
Dim Vue as New ADODB. Recordset
On voit que c’est en fait un pointeur.
![Page 8: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/8.jpg)
Connexion avec la base
Le type de la variable, son utilisation dans un projet lié à une BD ACCESS, ne suffisent pas à établir un lien entre la variable et les données qu’elle doit recueillir.
![Page 9: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/9.jpg)
Une connexion en deux temps
Il faut d’abord établir le lien avec la base de données globale. Le plus souvent c’est celle qui contient le projet qu’on est entrain de décrire, mais ce n’est pas obligatoire.
Ensuite, il faut établir un lien avec un sous-ensemble des données de la base, c’est-à-dire avec une vue.
![Page 10: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/10.jpg)
Connexion avec la base de données
Il est possible d’utiliser des options par défaut… mais ce n’est pas comme ça qu’on apprend.
Déclarer une variable de type connexion. C’est un pointeur. Donc :
Dim Ma_base as New ADODB.connection
…
Set Ma_base = CurrentProject.connection
![Page 11: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/11.jpg)
Réalisation de la vue
On exécute la méthode open de l’objet Recordset, en indiquant un certain nombre d’arguments.
L’assistant propose la liste des arguments au fur et à mesure de la frappe de l’instruction.
![Page 12: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/12.jpg)
1er argument : la requête
Vue.Open "Select [table étudiants].[Nom étudiant]," _
& "[table étudiants].[Prénom étudiant]" _& "From [table étudiants];",
Attention à la syntaxe : l'instruction SQL est une constante de chaîne de caractères de VBA (encadrée par des guillemets. Si elle ne tient pas sur une ligne, il faut la décomposer en sous chaînes concaténées.Possibilité aussi d'affecter la constante à une variable, et d'utiliser l'identificateur de ladite variable.
![Page 13: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/13.jpg)
2eme argument : la connexion
Vue.Open "Select [table étudiants].[Nom étudiant]," _
& "[table étudiants].[Prénom étudiant]" _
& "From [table étudiants];", Ma_base, _
![Page 14: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/14.jpg)
3eme argument : curseur
Le type du curseur, c'est-à-dire le mode d'ouverture de la vue.Utilisez des constantes :adOpenForwardOnly (lecture séquentielle et on ne peut revenir en arrière : lecture du début à la fin)
adOpenKeyset (simulation d’un fichier à organisation aléatoire; permet d’être tenu au courant des modifications apportées par d’autres utilisateurs. Si rajout d’un enregistrement ce n’est pas accessible)
adOpenDynamic (si un autre utilisateur ou une autre procédure du même projet ajoute une donnée, il permet de consulter ces nouveaux ajouts qui ont été faits depuis= rafraîchissement permanent de la vue)
adOpenStatic (on a une vue qui est statique : on recopie complètement la base de donnée, on continue à travailler sur les valeurs initiales, on est pas au courant de modifications effectuées).
![Page 15: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/15.jpg)
Vue.Open "Select [table étudiants]![Nom étudiant]," _
& "[table étudiants]![Prénom étudiant]" _
& "From [table étudiants];", Ma_base, _
adOpenKeyset,
![Page 16: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/16.jpg)
4eme argument : verrou
Le verrouillage des enregistrements assure leur protection (impossible de modifier dans certains cas).
Défini par des constantes.AdLockOPtimistic (pas en réseau, un seul utilisateur)
AdLockPessimistic (dans le cas de plusieurs utilisations simultanés
d'une donnée)
AdLockReadOnly (on peut lire seulement)
AdLockBatchOptmistic (mise a jour par lot: enregistré a la fin avec
les autres registres)
![Page 17: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/17.jpg)
Vue.Open "Select [table étudiants].[Nom étudiant]," _
& "[table étudiants].[Prénom étudiant]" _
& "From [table étudiants];", Ma_base, _
adOpenKeyset, adLockOPtimistic
![Page 18: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/18.jpg)
La méthode open constitue la vue
Après son exécution, l'ensemble des données décrit par la requête SQL est disponible.
Reste à l'exploiter.
![Page 19: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/19.jpg)
Méthodes de changements d'enregistrement
Il y en a toute une famille. Leur point commun : MoveNous utiliserons.MoveFirst (ouvre et déjà qchose dans tes cases)
.MoveLast(positionne sur le dernier)
.MoveNext
.MovePrevious
Ex. : Vue.MoveFirst Bien noter la syntaxe.
![Page 20: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/20.jpg)
2 propriétés bien utiles
.EOF et .BOF
Leur type : booléen.
Attention prennent la valeur Vrai si le pointeur d’enregistrement est positionné après le dernier enregistrement, ou avant le premier enregistrement, et non pas sur le premier ou le dernier.
![Page 21: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/21.jpg)
Accès aux champs
Deux syntaxes possibles :
1. Mettre le nom du champ entre parenthèses :
Vue ([Nom étudiant])
2. Faire précéder le nom du champ d'un point d'exclamation : Vue![Nom étudiant]
![Page 22: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/22.jpg)
Mise à jour de la base
On utilise la méthode .Update
Ce n'est qu'après son exécution que la mise à jour est reportée (qu'il s'agisse d'une modification de valeurs de champs, d'ajout ou de suppression d'enregistrements)
Pour ces deux derniers cas, utiliser (avant…) les méthodes .AddNew et .Delete
![Page 23: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/23.jpg)
Remarque :
AddNew crée un nouvel enregistrement qui devient l'enregistrement courant. Si on avait commencé une modification, ADO lance Update avant l'ajout.
Delete et Update ne modifient pas l'enregistrement en cours.
![Page 24: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/24.jpg)
Déconnexion
On utilise la méthode .Close
Après… le contenu du Recordset n'est plus disponible.
Attention : on ne peut pas rouvrir la requête avant de l'avoir fermée.
Pour savoir si le Recordset est ouvert, utiliser la propriété .State, et la comparer à l'une des deux constantes adStateOpen ou adStateClose.
![Page 25: VBA et les actions sur les tables Cours de Bernard COFFIN Université Paris 10 – Nanterre / IUP MIAGE 1ère année Reproduction interdite sans laccord de](https://reader035.vdocuments.pub/reader035/viewer/2022062312/551d9d7d497959293b8b5751/html5/thumbnails/25.jpg)
Et maintenant…
à vous de jouer !