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

1
SELECT Clients.Nom, Clients.Cp, Clients.Adresse
2
FROM Clients
3
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

1
SELECT Clients.Nom, Clients.Cp, Clients.Cp, Clients.Adresse
2
FROM Clients
3
WHERE (((Clients.Cp)>34000) AND ((Clients.Cp)<36000) AND ((Clients.Adresse) Like "*rue*"));
4

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

1
SELECT Clients.Département, Count(Clients.Nom) AS nb
2
FROM Clients
3
GROUP BY Clients.Département;
4

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

1
SELECT Clients.*, Clients.Cp
2
FROM Clients
3
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

1
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.