PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Contenu du Chapitre II Propriété des champs et requêtes SQL Introduction à Microsoft ACCESS Création d’une base de données Propriété des champs et requêtes SQL Les formulaires Les états Introduction à VBA Access
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Durant la création des relations nous avons rencontré les propriétés "Format", "Valide si...", "Masque de saisie". Dans cette section nous allons approfondir leur fonctionnement. Nous étudirons les rudiments de la construction de requêtes SQL qui permettent d'interroger et de manipuler les données d'une ou plusieurs relations.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Supposons que dans la relation "Employés" que nous avons déjà définie (bd2_V2000.mdb), nous voulons ajouter un champ qui contient un code en majuscules de 2 lettres qui identifie la province de résidence d'un employé. Ce champ doit être ajouté après le "Code postal". Il suffit d'insérer une ligne (avant) une ligne sélectionnée en pressant le bouton droit de la souris
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL )
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL )
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Symboles utilisables dans le format: Symbole Description Exemple @ Un caractère ou un espace obligatoire @@@-@@ 12345 devient 123-45 > Transforme les lettres en majuscules "qc" devient QC < Transforme les lettres en minuscules & Un caractère optionnel
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Supposons que nous voulons ajouter un champ pour le code postal et utilisons la propriété "Masque de saisie":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Caractères du masque: Caractère Description 0 chiffre de 0 à 9, obligatoire, signe interdit 9 chiffre ou espace, facultatif, signe interdit # chiffre ou espace facultatif, signe autorisé. L lettre obligatoire ? lettre facultative A lettre ou chiffre obligatoire a lettre ou chiffre optionnel & un caractère obligatoire ou espace C un caractère ou espace facultatif ,.:;-/ caractères réservés pour les décimales, les séparateurs, les dates, les heures < convertit les caractères en minuscules > convertit les caractères en majuscules ! dans le cas de caractères facultatif au début d'un masque, inverse le masque d'entrée, mais pas les données enregistrées \ \A s'affiche sous la forme A (pour avoir des caractères réservés)
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Les caractères du masque de saisie du champ Code postal concernent la première partie (à gauche avant le ";") du masque de saisie. Par exemple, dans le masque >L0L\ 0L0;0;_ la deuxième partie est vide et la troisième partie est le caractère de soulignement _. Dans la deuxième partie, 0 signifie d'enregistrer les caractères spéciaux du masque et 1 ou vide signifie le contraire. La troisième partie donne le caractère d'affichage des espaces; par défaut, le caractère de soulignement est affiché; si on veut un espace, on doit mettre " ".
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) La propriété "Valide si" permet d'imposer des règles de validation aux données entrées. Par exemple, si nous voulons valider l’introduction des données du champ Province et le limiter aux provinces de l’Ontario (ON), Québec (QC), Terre-Neuve (TN), Nouveau-Brunswick (NB), Nouvelle-Écosse (NE).
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Génération de l'expression de validation:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Génération de l'expression de validation:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Génération de l'expression de validation (Ajout d’un message d’erreur):
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Génération de l'expression de validation: Les expressions de validation peuvent être composées de plusieurs opérateurs. Nous pouvons aussi utiliser des identificateurs de champ entre parenthèses carrées. Des constantes doivent apparaître entre guillemets. Une date doit s'écrire "#95/12/31#". Des listes de fonctions, de constantes et d'opérateurs pré-définies, sont aussi disponibles en bas à gauche.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Le filtrage permet de sélectionner des enregistrements dans une table. Nous pouvons utiliser des expressions basées sur les caractères génériques suivants: Caractère Utilisation Exemple * une séquence de caractères Sim* représente tous les mots qui quelconques commencent par Sim ? 1 caractère quelconque rad?o trouvera radio et ne trouvera pas radion [ ] un des caractères entre b[ae]* trouvera balle, beau, mais pas crochets bien ! tout caractères qui n'est pas b[!ae] trouve bien, mais pas entre crochets balle et beau - sert à définir des plages de [a-g]* trouvera tous les mots qui caractères entre crochets commencent par une des lettres de a à g # un caractère numérique quelconque
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Supposons que nous ayons ouvert la table de données des employés et que nous voulions trouver tous les employés qui vivent dans une ville dont le nom commence par "M". Nous sélectionnons le menu "Filtrer/Options avancées/Filtrer par formulaire":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Puis, dans le champ "Ville" nous entrons par exemple "M*" et par la suite nous sélectionnons "Appliquer le filtre":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Puis, dans le champ "Ville" nous entrons par exemple "M*" et par la suite nous sélectionnons "Appliquer le filtre":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la recherche:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Pour effacer le filtre il faut sélectionner le bouton "Effacer tous les filtres":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Pour effacer le filtre il faut sélectionner le bouton " Effacer tous les filtres ":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Les filtres que nous venons de voir sont en fait un cas particulier de requêtes. Les requêtes sont manipuler avec l'onglet "Requêtes" d'ACCESS. Elles sont basées sur le langage de requêtes qu'on appelle SQL (Structured Query Language). Les requêtes permettent de sélectionner des enregistrements et/ou de modifier des enregistrements à l'aide de menus ou d'expressions en SQL.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Pour les exemples suivants nous utilisons (créé au préalable) le champ Date d’embauche à la table Employés
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Pour générer une requête, nous sélectionnons l'onglet "Assistant Requête", puis nous sélectionnons l’assistant approprié: Une requête simple permet de sélectionner des enregistrements. Une requête croisée combine des informations provenant de plusieurs relations. Les doublons sont des valeurs qui se répètent dans un champ. Une "non correspondance" arrive si une valeur qui se trouve dans un champ d'une relation ne se retrouve pas dans un autre champ d'une autre relation.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Dans l'exemple suivant nous avons choisi "Assistant requête simple" et par la suite choisi les 4 champs de la relation "Employés" avec le bouton ">":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Donnons un titre approprié à la requête et sélectionnons le bouton "Terminer":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Nous pouvons observer qu'une nouvelle requête a été créée:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Ensuite, pour modifier la requête nous sélectionnons "Mode création" qui fait apparaître la fenêtre qui permet de modifier la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Ensuite, pour modifier la requête nous sélectionnons "Mode création" qui fait apparaître la fenêtre qui permet de modifier la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Modification de la requête initiale pour permettre le tri des résultats par ordre croissant des dates d’embauche:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête modifiée:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) SQL (Structured Query Language) est un langage de manipulation standardisé des bases de données. Le menu "SQL direct" devient accessible en sélectionnant le "Mode création" sur la requête "EmployésDateEmbaucheReq" :
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête "EmployésDateEmbaucheReq":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Analyse de la requête "EmployésDateEmbaucheReq": L’énoncé en langage SQL, "SELECT" permet la sélection des colonnes (champs) qui nous intéressent L’énoncé "FROM" identifie la relation qui est la source des données L’énoncé "ORDER BY" demande de trier les données selon le champ "Date d'embauche".
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Générateur d'Expressions Dans la propriété "Critères" d'une colonne de la requête, nous pouvons ajouter une expression qui sert à sélectionner un sous ensemble d’enregistrements. Par exemple, si nous voulons tous les employés embauchés entre 1979 et 1990, nous devrions utiliser un critère de la forme: ">= #1/1/79# et < #1/1/90#". L'option "Créer ..." du menu contextuel (bouton droit de la souris), nous permet d’obtenir une forme qui permet de construire des expressions plus complexes:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL )
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Générateur d’expression
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Générateur d’expression
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la nouvelle requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) En ajoutant ce critère, la requête SQL initiale a été modifiée comme suit:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Analyse de cette nouvelle requête "EmployésDateEmbaucheReq": L’énoncé en langage SQL, "WHERE" permet de définir une condition énoncée entre parenthèse () L’énoncé "AND" est l’opérateur logique ET L’énoncé "OR" est l’opérateur logique OU Les énoncés "<", ">", "<=", ">=", "<>" sont des opérateurs relationnels
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Nous pourrions aussi utiliser plusieurs expressions dans d'autres champs. Les expressions sur une ligne doivent être satisfaites simultanément (Et). L'une des lignes "Critères" ou "Ou" doit être satisfaite. Si, en plus des employés embauchés entre 1979 et 1990, nous désirons connaître aussi les employés dont le nom commence par une lettre de "a" à "m", alors nous plaçons le critère < "n" sur la ligne "Ou":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Génération de la requête
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Si, nous voulons connaître la liste des employés embauchés entre 1979 et 1990, étant nés avant 1955
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la nouvelle requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Requêtes sur plusieurs relations Nous pouvons aussi créer des requêtes qui combinent les informations contenues dans plusieurs relations. Par exemple, si nous avons une relation "Commandes" qui contient le numéro de l'employé qui a reçu la commande et qu'on veuille avoir le nom et le prénom de l'employé ainsi que le code du client. Nous créons alors une nouvelle requête dans laquelle nous ajoutons les 2 relations et choisissons ensuite les champs qui nous intéressent:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Requêtes sur plusieurs relations
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de cette requête sur plusieurs relations
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Pour que cette requête puisse s’effectuer correctement, il importe d'avoir défini lors de la création des tables, les liens "1 à N" entre les tables impliquées dans des requêtes sur plusieurs relations. Ce type de requête utilise ce qui s'appelle des "jointures" entre tables. Pour spécifier les liens (jointures) entre les tables, nous pouvons utiliser l’énoncé SQL "INNER JOIN". L’énoncé "ON" permet de spécifier le champ de chaque relation impliqué dans la jointure.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Exemple de requête sur 3 relations Nous cherchons pour chaque commande le nom et prénom de l’employé ayant préparé la commande, le code du client et le nom de la société
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Liste de choix Les principes de génération d’expressions et de requêtes que nous venons de présenter peuvent servir à faciliter l'entrée des données dans les tables en permettant d'offrir à l'utilisateur des listes de choix. Par exemple, il n'est pas facile d'entrer un code de client dans la table suivante:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Il serait plus facile d'offrir à l'utilisateur une liste de choix dans laquelle apparaissent les noms des clients au lieu des codes des clients. Pour ce faire, lors de la spécification du champ auquel nous voulons associer une liste de choix (création de la table), nous devons sélectionner l'onglet "Liste de choix" et l'option "Zone de liste déroulante", pour l'attribut "Code client":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Spécification d’une liste de choix:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Puis, nous enfonçons le bouton "..." à droite de Contenu, ce qui permet de spécifier la source des données de la liste. Cette spécification est en fait une requête SQL.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) La génération de cette requête requiert d’abord la table "Clients" qui contient l'association entre le code d'un client et son nom de société:
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Puis, nous ajoutons les champs Code client et Société (nom de la société du client). La requête générée: SELECT Clients.[Code client], Clients.Société FROM Clients ORDER BY Clients.Société;
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Nous modifions aussi le nombre de colonnes à 2 qui correspond au nombre de colonne du résultat de la requête et "0cm" comme largeur de la colonne 1 (Code Client). La liste de choix n’affichera alors que le nom des Sociétés.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Maintenant, au lieu des codes de clients, nous voyons apparaître une liste de choix contenant le nom de la société des clients et il suffit de choisir le client dans cette liste. Par contre, le Code client obtenu aussi de la requête et associé à chaque Société sera stocké dans la table Commandes2 et non le nom de la société.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Vous pouvez trouver plusieurs exemples de listes déroulantes dans la base de données "Comptoir.mdb" de l'installation d'OFFICE. Nous pourrions aussi dans une requête, combiner des champs comme le nom et le prénom d'un employé dans un champ calculé appelé "NomPrénom". La notion de champ calculé pourrait aussi être utilisé dans le cas du calcul des quantités d’items restant à livrer d’un produit (voir exemple de conception d’une base de données du chapitre I)
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Création d’une nouvel requête (champ calculé)
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Après avoir sélectionné les champs de la relation et le champ calculé, vous cliquez sur "NomPrénom" et choisissez l'option "Créer...":
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Vous pouvez alors générer l'expression qui définit la valeur du champ "NomPrénom". L’opérateur & représente dans le cas de chaînes de caractères, un opérateur de concaténation.
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête L’énoncé "AS" permet de faire correspondre l’expression à gauche avec le nom du champ calculé
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) À partir de la base de données "Comptoir.mdb" , nous pourrions aussi dans une requête, combiner des champs comme le prix unitaire, la quantité et le pourcentage de remise dans un champ calculé appelé "PrixTotal". Schéma de la table "Détails Commandes"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Contenu de la table "Détails Commandes"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Création de la requête "Détails Commandes Complets" avec le champ calculé "Prix Total"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Expression du champ calculé "PrixTotal"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultats de la requête "Détails Commandes Complets"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête "Détails Commandes Complets"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Création de la requête "Sous totaux Commandes" avec le champ calculé "SousTotal"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Expression du champ calculé "SousTotal"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Résultat de la requête "Sous totaux Commandes" avec le champ calculé "SousTotal"
Introduction à ACCESS (Retour sur les propriétés des champs et requêtes SQL ) Code SQL de la requête "Sous totaux Commandes" avec le champ calculé "SousTotal"