803-étape 1
Extraction
Fichier à utiliser : 0803.accdb.
Création de requêtes : Extraction de données à l'aide de critères
Question
Ajoutez une requête sur la table Clients avec les colonnes Nom et Code Client.
Sauvegardez cette requête "Rq_01_01"
Dans la table Clients, combien de clients ont un nom qui débute par A ou B ?
Indice
Le critère Comme doit être utilisé
Indice
Les Crochets permettent de spécifier les valeurs cherchées, les cas alternatifs sont séparés par un -
Indice
Le caractère * est un masque qui laisse passer tous les caractères quelque soit leur nombre
Solution
Comme "[A-B]*"
On doit trouver 6 clients
SELECT Clients.Nom, Clients.Cp, Clients.Adresse
FROM Clients
WHERE (((Clients.Nom) Like "[A-B]*"));
Question
Afficher les clients (classés) selon le nom dont l'adresse contient le mot rue dans les département 34 et 35.
Nommez la requête Req_01_02
Attention au code postal qui est un champ numérique et non texte

Solution
SELECT Clients.Nom, Clients.Cp, Clients.Cp, Clients.Adresse
FROM Clients
WHERE (((Clients.Cp)>34000) AND ((Clients.Cp)<36000) AND ((Clients.Adresse) Like "*rue*"));
Regroupements
Création de requêtes : Regroupement d'enregistrements selon les valeurs identiques d'une colonne
Question
Ajoutez une requête sur la table Clients qui affiche le nombre de clients par département.
Sauvegardez cette requête "Rq_01_03"

Indice
Option "Affichage...totaux"
Indice
Le champs ou l'attribut "Département" doit être en "Regroupement"
Indice
Sélectionner un autre attribut (quelconque) avec l'opération "Compte"
Solution

SELECT Clients.Département, Count(Clients.Nom) AS nb
FROM Clients
GROUP BY Clients.Département;
Formulaire de recherche
Nous allons ajouter un formulaire de recherche de clients via un contrôle qui va être utilisé comme critère dans une requête qui sélectionne les clients d'un code postal donné.
Le formulaire sera nommé RechCp. Le contrôle de saisie du Code postal sera nommé NumCp
La requête filtre sera nommée Rq_RechCp
Question
Créer une requête qui filtre les clients d'un code postal.
Pour saisir le critère, il faut faire référence au contrôle NumCp de l'objet formulaire nommé RechCp
Pour faire référence à un contrôle on utilisera la synthaxe [Formulaires] ![nom du formulaire] ![Nom du contrôle]
Ici, le formulaire nommé Rechcp n'existe pas encore, le contrôle numcp non plus, donc lorsque la requête va s'exécuter, access demandera de saisir la valeur du code postal que l'on recherche.
Solution

SELECT Clients.*, Clients.Cp
FROM Clients
WHERE (((Clients.Cp)=[formulaires]![Rechcp]![numcp]));
Question
Créer un formulaire vierge, puis l'enregistrer avec )
Créer un contrôle (Menu Création) de type texte nommé numcp pour le dessiner sur le formulaire vierge
Afficher les propriétés du contrôle ajouté.
Dans l'onglet Autres, modifiez le nom par défaut Texte0 par numcp.
Dans l'onglet Données, la propriété source est vide : c'est normal, car le code postal que l'on va saisir ici est utilisé comme critère.
Faire glisser la requête Rq_RechCp dans le formulaire pour ajouter un sous-formulaire qui va afficher les clients retenus par la requête.
Notez bien le nom du contrôle du sous-formulaire, il porte le même nom que la requête que l'on a fait glisser dans le formulaire. Ce n'est pas une obligation, mais on peut ne pas le changer.
A ce stade, vous pouvez tester en mode feuille de donnée le formulaire, comme le code postal est vierge, le sous-formulaire est vide car la requête ne retourne aucun client sans code postal. Dès que l'on tente de rechercher les clients avec le code postal 44000, le sous-formulaire n'affiche toujours aucun client : la requête source doit en effet être ré-exécutée.
Pour ce faire, en mode création de formulaire :
Ajoutez un bouton
Dans l'onglet événement du bouton, sur Au clic, choisir procédure événementielle, puis cliquer sur le petit bouton ...
Dans le code VBA, ajoutez l'instruction ci-dessous
Forms![RechCp]![Rq_RechCp].Form.Requery
On lui demande , avec cette instruction, de relancer la requête source associée au contrôle sous-formulaire nommé Rq_RechCp, ce qui reviendra à exécuter la requête du même nom et à rafraîchir le sous-formulaire.
Vous pouvez maintenant faire plusieurs recherches avec les valeurs 17000, 16000, 44000.