1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 12 Support de cours rédigé par Bernard COFFIN Université.

Slides:



Advertisements
Présentations similaires
VBA et les actions sur les tables
Advertisements

FORMATION BE1D Une fois, les identifiants entrés, vous vous retrouvez sur la page daccueil de lapplication. Ce nest quà partir de cette page que vous devez.
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
12 novembre 2012 Grégory Petit
Initiation aux bases de données et à la programmation événementielle
Formation Microsoft® Office Access 2007
JLMVPC Saisir une commande.
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Initiation au système d’information et aux bases de données
Appel d’offres DAFPEN ac-montpellier
Plusieurs possibilités
Par Fabrice Pasquier Cours IV
Recherche avancée multi-champs EBSCOhost
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
Initiation aux bases de données et à la programmation événementielle
TracenPoche Les fichiers >.
1 Initiation aux bases de données et à la programmation événementielle Cours N°9 : Gestion de la cohérence avec des sous-formulaires. Support de cours.
Publispostage Menu Outils / Lettres et publipostage
Partie II Sémantique.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation à la conception des systèmes d'informations
Création de menus. Depuis la page d’accueil de votre site, cliquez sur le lien [Login] puis saisissez les identifiants qui vous ont été attribués. Connectez-vous.
Initiation aux bases de données
Initiation MS Access 2010 Structures – Tables, schémas et Données
Tutorat en bio-informatique
Jean Paul CHANLON IUT1 Grenoble Génie Mécanique et Productique
 Formulaires HTML : traiter les entrées utilisateur
Saisie des absences en salles de classes par les enseignants
Informatique de Gestion part II – the dark macro
Introduction avec Access Quinio Nanterre 2008
Claude MOINE Chargé de mission SI1D 01/10. Adresse de connexion à l’application Claude MOINE Chargé de mission SI1D 01/10.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Comprendre le SGBDR Microsoft Access – partie 2
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
QCM VBA.
Suivi simplifié d’activité
Le menu « Albums photos » © Michel DURIEUX – Février 2007.
LE LOGICIEL ACCESS Créer une base de données avec Access 2010.
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Utilisation des formules de base
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
Formation.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 10 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 5 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 11 Support de cours rédigé par Bernard COFFIN Université.
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é.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 6 Support de cours rédigé par Bernard COFFIN Université.
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
Cerise Pro BTS COM Guide d’utilisation étudiants & enseignants
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 9 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 8 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 7 Support de cours rédigé par Bernard COFFIN Université.
Formation SGA Module Saisie des Demandes d’achat Durée : 0,5 jour.
La création des données d’exemplaire pour un exemplarisateur.
1 Initiation aux bases de données et à la programmation événementielle Construction d’un état Support de TD rédigé par Bernard COFFIN Université Paris.
Transcription de la présentation:

1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 12 Support de cours rédigé par Bernard COFFIN Université Paris 10 – Nanterre 2007/2008

2 Système d’information 1.Une mémoire 2.Une capacité de traitements

3 C’est la base de données proprement dite Ensemble cohérent de données élémentaires Cohérence assurée par les liens entre les données les liens sont porteurs de sens (dépendent du sens) les données enregistrées dans une même table sont liées (donc sont complémentaires) les données enregistrées dans des tables unies par un lien logique sont également liées (mais le lien est de 1 à n et non plus de 1 à 1) La mémoire

4 Permettent de mettre à jour et consulter la mémoire Les traitements aussi doivent être cohérents Qu’ils s’appellent directement ou non, ils sont complémentaires Les résultats d’un traitement donné (et leur sens) dépendent des traitements antérieurs La cohérence des traitements est assurée par le partage de la mémoire Les traitements

5 Pour les traitements n’ayant pas de lien (appel de l’un par l’autre, directement ou non) utilisation de la mémoire permanente : relations stables les tables Pour les traitements liés, on peut aussi utiliser une mémoire temporaire (elle n’existe que pour la durée de ces traitements) - relations construites à l’aide de requêtes sélections (pourvu que l’objet lié soit ouvert) - contrôles d’un formulaire ouvert accessibles depuis un autre formulaire - arguments - variables communes L’utilisation des tables a été abordée dans les cours précédents ; nous n’y ajoutons rien ici

6 Utilisation d’un champ ou d’un contrôle d’un autre formulaire Elle est toujours possible pourvu que le formulaire soit ouvert Il suffit de nommer correctement le champ ou le contrôle (et la propriété concernée) Rappel de la syntaxe forms!nom_du_formulaire!nom_du_champ forms!nom_du_formulaire!nom_du_contrôle.propriété Indique qu’on s’adresse à la classe des formulaires Attention ! Le point d’exclamation peut parfois être remplacé par un point, mais d’autre fois cela peut engendrer des confusions. Il est donc fortement conseillé de s’en tenir à cette syntaxe… Champ de la relation source du formulaire

7 Peut-on indifféremment utiliser un champ ou le contrôle qui lui est lié ? La réponse est NON ! Lors de l’ouverture du formulaire, la valeur du champ est attribuée à la propriété « valeur » du contrôle qui lui est lié (par la propriété Source Contrôle) La modification de la propriété valeur du contrôle entraîne la modification de la valeur du champ, mais… Cette modification n’est effective que lors de la mise à jour de l’enregistrement actif. Il est donc possible que les deux valeurs (champ et contrôle lié) ne soient pas identiques à un moment donné Comment savoir ? En réfléchissant avant d’écrire n’importe quoi !

8 L’échange d’informations directement (par champ ou contrôle) est-elle toujours possible ? La seule condition est que les deux formulaires concernés soient ouverts Mais elle peut se révéler insuffisante si plusieurs formulaires peuvent être concernés Exemple : on veut construire un formulaire qui permette d’ajouter de nouveaux enregistrements dans une table et l’utiliser dans des contextes différents Il faut savoir quel est le formulaire d’où on vient pour faire les mises à jour nécessaires au bon endroit L’utilisation d’un argument (lors de l’ouverture du formulaire par la méthode OpenForm) ou d’une variable commune permet d’adapter le traitement au contexte (c’est-à-dire en l’appelant d’autres formulaires)

9 tabCommande CP : N° Commande CE : Réf Client Date commande tabLigne_commande CP :CE : Réf Commande CE : Réf adresse livraison CE : Réf Produit Qté_commandée tabClient CP : N° client Nom client Prénom client Adresse client tabProduit CP : N° produit Nom produit Description PU HT tabAdresse CP : N° adresse CE : Client concerné Adresse livraison

10 Considérons l’enregistrement d’une nouvelle adresse de livraison On peut envisager trois contextes différents pour effectuer ce traitement 1.Création d’un nouveau client et de ses premières adresses 2.Ajout d’une adresse à un client déjà enregistré (sans prise de commande) 3.Ajout d’une nouvelle adresse lors de la saisie d’une commande On peut faire des formulaires complètement différents pour ces trois traitements On peut aussi préférer réutiliser le même formulaire de base (insertion d’une adresse dans la table) dans les trois contextes (l’exemple porte sur un formulaire simplissime – une seule zone de texte – mais c’est le principe de son utilisation dans des contextes différents qui est important) C’est une garantie de cohérence

11 Le formulaire de saisie d’une adresse [N° adresse] est déclaré NuméroAuto, c’est ACCESS qui lui donne sa valeur [Adresse livraison] est le champ source de la zone de texte [Cient_concerné] est la clef externe qui permet de relier une adresse à un client ; on utilisera différentes façons de la gérer en fonction du contexte d’utilisation du formulaire Le bouton de commande btFermer sert à fermer le formulaire si besoin est

12 1.Création d’un nouveau client et de ses premières adresses Utilisation d’un formulaire et d’un sous-formulaire La clef externe est gérée automatiquement par le couple champ père / champ fils Le bouton btFermer du sous-formulaire est sans objet, on le rend invisible au moment de l’ouverture du formulaire principal Private Sub Form_Load() sfAdresse_livraison!btFermer.Visible = False End Sub

13

14

15 2.Ajout d’une adresse à un client déjà enregistré (sans prise de commande) Utilisation de deux formulaires : le premier (lié à tabClient) appelle le second (Saisie_adresse décrit plus haut) grâce à un bouton de commande La clef externe est gérée par programmation. Sa valeur est transmise du premier formulaire au second par l’intermédiaire d’un argument de la méthode OpenForm

16 Source du formulaire : Select * From tabClient;Section En-tête (fonctionne comme les sections des états) Description d’un enregistrement Le formulaire est ouvert en mode « formulaires continus » ; on ne voit qu’un bouton « Rechercher » parce qu’il est dans l’en-tête, mais on voit un bouton « Ajouter… » pour chaque enregistrement affiché. btAjout_adresse Un click fait de l’enregistrement correspondant l’enregistrement courant ztSaisie et btRechercher pour trouver un enregistrement à partir d’une partie du nom

17 Programmation événementielle de la recherche d’enregistrement (rappel du cours N°9) Private Sub btRecherche_Click() ztNom_client.SetFocus DoCmd.FindRecord ztSaisie, acAnywhere, False, _ acSearchAll,, acCurrent, False End Sub Private Sub ztSaisie_Change() DoCmd.GoToRecord,, acFirst End Sub On recherche dans un seul champ, le nom du client, il faut donc qu’il soit actif Si l’enregistrement trouvé n’est pas satisfaisant, on peut continuer sur les enregistrements suivants En cas de modification de la zone de texte, on reprend le recherche à partir du premier enregistrement

18 Programmation événementielle de l’appel du formulaire Saisie_adresse Deux nouveaux arguments de la méthode OpenForm Private Sub btAjout_adresse_Click() DoCmd.OpenForm "Saisie_adresse",,, _ "Client_concerné=forms!Ajout_adresse_livraison![N° client]" _,,, Forms!Ajout_adresse_livraison![N° client] End Sub Quatrième argument : clause Where (Cf. même argument pour l’ouverture d’état) Il met à jour la propriété filtre du formulaire et exécute ce filtre Septième argument : passage d’une valeur au formulaire appelé Cette valeur se retrouve dans la propriété OpenArgs de Saisie_adresse

19 Programmation événementielle du formulaire Saisie_adresse Utilisation de la propriété OpenArgs pour la gestion de la clef externe Private Sub Form_BeforeInsert(Cancel As Integer) If IsNull(Me.OpenArgs) Then Exit Sub Client_concerné = Me.OpenArgs End Sub Quand le formulaire est utilisé comme sous-formulaire, la propriété n’est pas renseignée La clef externe est maintenant renseignée, l’enregistrement peut être ajouté à la table Private Sub Form_Load() If IsNull(Me.OpenArgs) Then btFermer.Visible = False Else btFermer.Visible = True DoCmd.GoToRecord,, acNewRec End If End Sub Gestion du bouton de fermeture et du premier enregistrement actif selon le mode d’ouverture Private Sub btFermer_Click() DoCmd.Close End Sub

20 On a cliqué sur cette occurrence de l’image du bouton, l’adresse sera ajouté au client Lenouveau

21 3.Ajout d’une nouvelle adresse lors de la saisie d’une commande Le principe est le même pour l’ajout d’un nouveau client La structure du formulaire de saisie de commande a déjà été étudiée (cours N° 9 – avec une donnée supplémentaire, le taux de remise permanente) Nous rajoutons deux boutons de commande pour appeler les formulaires de saisie d’un client (pas développé, ne pose pas de problème nouveau) et de saisie d’adresse

22 Le bouton d’appel de saisie d’adresse est dans la section en-tête du sous- formulaire de saisie des lignes de commande) Visible une seule fois (et non pas plusieurs comme dans le formulaire des diapos 16 à 20) il agit de la même façon Communication du N° client (pour la gestion du lien logique adresse / client) par l’intermédiaire de l’argument OpenArgs Au retour du formulaire saisie_adresse, recalculer le contenu de la zone de liste déroulante choix_adresse Comment gérer automatiquement un lien logique (ligne commande / adresse) avec la dernière adresse active ? OpenArgs ne fonctionne pas dans l’autre sens Utilisation d’une variable commune (Numéro_adresse_créée) mise à jour dans un formulaire et utilisée dans l’autre Le bouton d’appel du formulaire de saisie d’adresse

23 Private Sub btAdresse_Click() DoCmd.OpenForm "Saisie_adresse",,, _ "Client_concerné = forms!saisie_commande!Choix_client.Value", _,, Forms!saisie_commande!Choix_client.Value End Sub Programmation du bouton d’appel du formulaire de saisie d’une adresse Même principe que dans l’exemple précédent, seul le nom du fichier change Déclaration de la variable Numéro_adresse_créée

24 Gestion de la variable Numéro_adresse_créée dans le formulaire de saisie des adresses Private Sub Form_Load() Numéro_adresse_créée = 0 If IsNull(Me.OpenArgs) Then btFermer.Visible = False Else btFermer.Visible = True DoCmd.GoToRecord,, acNewRec End If End Sub Initialisation pour ne pas créer de lien erroné en cas de fermeture du formulaire sans création d’enregistrement Private Sub Form_AfterInsert() Numéro_adresse_créée = [N° adresse] End Sub Mise à jour du contenu de la variable

25 Private Sub btAdresse_LostFocus() If Numéro_adresse_créée = 0 Then Exit Sub Choix_adresse.Requery Choix_adresse.SetFocus Choix_adresse.Value = Numéro_adresse_créée End Sub Gestion de la variable Numéro_adresse_créée dans le formulaire de saisie d’une ligne de commande Il n’y a pas eu d’adresse créée FIN DU COURS