1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université Paris 10 – Nanterre 2007/2008
2 ACCESS SGBD sous Window’s Regroupe les deux composantes d’un SI (système d’information) - Mémoire (base de données) - Capacité de traitements
3 ACCESS Dispose d’outils qui lui sont propres Tables (éléments de la mémoire du SI) Formulaires États etc. Utilise deux langages auxiliaires : SQL VBA
4 Visual Basic sous Access Permet de programmer certains traitements Langage de programmation impérative Langage procédural (Un minimum à savoir pour les traitements à programmer dans ce cours)
5 VBA Les sous-programmes (procédures et fonctions) sont regroupés en « modules » Pas de programme principal Les sous-programmes sont « lancés » - Par un autre sous-programme (on s’en passe dans ce cours) - Parce qu’il se passe quelque chose dans l’application Une programmation dite « événementielle »
6 VBA - rappels Variable : zone de la mémoire centrale permettant d’enregistrer une valeur et de l’utiliser ensuite pour faire des calculs identificateur type
7 Déclaration Se fait au niveau d’un module ou d’un sous- programme A l’aide d’un mot clef, la déclaration précise la portée de la variable Public la variable est utilisable dans tous les modules Private la variable est utilisable dans tous les sous-programmes du module Dim la variable est utilisable dans l’élément de programme (module ou sous-programme) et les sous- programmes qu’il contient Utilisé au niveau du module, Dim est équivalent à Private ou du sous-programme
8 Déclaration de variable Syntaxe : as Exemple : ’ début du module Option Explicit Dim Taux as Single ’ ici on aurait pu utiliser Private Private Sub txPrixHT_AfterUpdate Dim Résultat as Double ’ ici on ne peut pas utiliser Private Dim A, B as Boolean ’ ici A est du type Variant !! ’ ici les instructions à exécuter End Sub
9 Le minimum pour nos besoins Le type Variant qui permet de travailler avec tous les types Mais, éviter la déclaration automatique Une garantie : commencer le module par Option Explicit
10 Affectation Symbole = N’est pas symétrique ! A gauche ce qui doit changer de valeur A droite une expression qui permet de calculer un résultat La syntaxe des expressions est celle de la plupart des langages
11 Séparateur d’instructions Changer de ligne signifie le début d’une nouvelle instruction … sauf si on termine la ligne par un espace suivi d’un blanc souligné (touche du chiffre 8) Sur une même ligne on sépare deux instructions par :
12 Instruction conditionnelle Plusieurs syntaxes possibles La plus générale : If expression booléenne Then instructions Else instructions End if Passages à la ligne obligatoires Facultatif
13 Pas d’instruction d’entrée-sortie C’est ACCESS qui gère la communication entre l’ordinateur et l’utilisateur au moyen d’interfaces le formulaire l’état Il y a aussi la feuille de données (seulement en phase de mise au point de l’application)
14 Ceci est un Formulaire (Interface entre le SGBD et l’utilisateur) Étiquettes / le SGBD informe l’utilisateur Zone de texte / l’utilisateur peut saisir une information (nouvelle) Zone de liste déroulante / l’utilisateur sélectionne une information (de la BD) Boutons de commande / en cliquant, l’utilisateur déclenche un traitement
15 Notion d’ « OBJET » L’objet est complexe (composé d’éléments)
16 « OBJET » Appartient à une classe d’objets Formulaire Étiquette Zone de texte Zone de liste déroulante Bouton de commande Sont des classes. Toutes les instances d’une classe ont les mêmes caractéristiques
17 Un « OBJET » A des propriétés nom de l’objet, légende (caption) de l’étiquette, valeur (value) de la zone de texte, contenu (row source) de la zone de liste déroulante, etc. Les propriétés varient d’une classe à l’autre
18 Un « OBJET » Réagit à des événements un clic sur l’objet, avant ou après une mise à jour, en arrivant ou en quittant l’objet, etc. Les événements varient d’une classe à l’autre
19 Un « OBJET » Dispose de méthodes (traitements de base liés à la classe de l’objet) devenir actif, changer d’enregistrement (ensemble de données de la base), exécuter la requête, etc.
20 Événement On décrit le traitement déclenché par un événement à l’aide d’une - macro (pas étudiée dans ce cours) - procédure événementielle en VBA
21 Contrôle Les éléments du formulaire s’appellent des « contrôles » ; ce sont aussi des objets Les procédures événementielles des contrôles d’un formulaire et celles du formulaire lui-même sont regroupées dans un même module Un contrôle a un nom C’est un identificateur « classique » : suite de lettres, de chiffres, de « _ » commençant par une lettre
22 Noms des contrôles Il faut prendre à garde à ne pas confondre les noms des différents concepts utilisés en ACCESS Une bonne précaution : commencer le nom du contrôle par deux ou trois lettres indiquant de quoi il s’agit suivies de son nom proprement dit. Exemples : ztPrix, étCommentaire, btStop, zldChoix_étudiant
23 Noms des propriétés, méthodes, événements Le nom d’une propriété d’un objet est composé du nom de l’objet suivi d’un point puis du nom de la propriété Ex : étCommentaire.Caption, ztPrix.Value
24 Noms des propriétés, méthodes, événements Le nom d’une méthode d’un objet est composé du nom de l’objet suivi d’un point puis du nom de la méthode Ex : ztPrix.SetFocus
25 Noms des propriétés, méthodes, événements Le nom de la procédure liée à un événement d’un objet est composé du nom de l’objet suivi d’un blanc souligné puis du nom de l’événement Ex : Private Sub ztPrix_AfterUpdate
26 VBA et les objets d’ACCESS VBA interagit avec les contrôles du formulaire (on ne déclare pas un contrôle ; si on l’a dessiné, il existe) Modification des propriétés Ex : ztRésultat.Value = 0
27 Si on peut modifier la valeur d’une propriété, on peut aussi l’utiliser dans une expression Ex : étPrixTTC.Caption = ztPrixHT.Value * VBA et les objets d’ACCESS
28 Exécution d’une méthode Une méthode décrit un traitement, on l’appelle exactement comme on appelle une procédure en utilisant son nom, sans aucun mot clef. Ex : zldChoix_élève.Requery VBA et les objets d’ACCESS