Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Etats paramétrés
Dans les exercices précédents, nous avons appris à domestiquer les
états Access, mais pas suffisamment encore. Néanmoins, nous avons créé des vues synthétiques, issues des informations de tables. Puis, nous avons appris à organiser l'information grâce aux
niveaux de regroupements. Ces regroupements constituent l'une des clés de voute de ces outils. C'est pourquoi, nous avons bâti certains états sur des
requêtes, capables de créer à la volée des niveaux de recoupements.
Nous le disions, les
états offrent une vue figée de l'information à l'instant T. Et pourtant, un même
état peut produire dynamiquement des rendus différents, selon les besoins au moment de la demande. Et ce sont encore les
requêtes qui ouvrent la voie. Grâce à ces démonstrations, nous comprendrons ensuite comment il est possible de produire la facture spécifique du client venant de passer commande.
Base de données source
Comme il est de coutume désormais, nous devons poursuivre les travaux en réceptionnant tout d'abord l'application au dernier indice.
- Télécharger le fichier clients-et-commandes-etats-parametres.rar en cliquant sur son lien,
- Puis, le décompresser dans le dossier de votre choix,
- Double cliquer ensuite sur le fichier résultant pour ouvrir la base de données Access,
- Dans la boîte de dialogue qui s'impose, taper et valider le mot de passe abc,
- Cliquer alors sur le bouton Activer le contenu du bandeau de sécurité,
- Du fait de la régénération, valider de nouveau le même mot de passe,
Les trois états que nous avons créés à ce stade sont listés dans le volet de navigation, dans leur catégorie propre.
Grâce à ces
niveaux de regroupements, ils proposent une organisation satisfaisante des informations pour une interprétation claire. Si les données des tables sources s'enrichissent, ces
états intègrent naturellement et automatiquement ces nouveaux éléments. Mais leur dynamisme ne va pas plus loin. Tels qu'ils sont conçus, ils ne permettent pas d'isoler une partie de l'information, pour des nécessités de traitements spécifiques à l'instant T. Et il n'est pas question de créer un nouvel état dès qu'un nouveau besoin se présente.
Requêtes paramétrées
L'astuce consiste une fois encore à utiliser une
requête intermédiaire. Mais cette
requête doit être paramétrée. Pour l'état des clients par exemple, un critère doit bien être posé sur le département à isoler. Mais cette condition doit être précisée au moment de l'exécution. C'est ainsi qu'un même état pourra livrer la vue de n'importe quel département, selon la demande énoncée. Nous avions appris à créer ce type de requêtes au cours des exercices sur les
requêtes paramétrées. Et comme l'
état E_Clients_Dpt est construit sur la
requête R_Clients_Dpt, nous proposons d'adapter cette dernière.
- Fermer le formulaire de navigation en cliquant sur la croix de son onglet,
- Dans le volet de navigation, cliquer sur la rubrique Requêtes pour la déployer,
- Cliquer droit sur la requête requête R_Clients_Dpt,
- Dans le menu contextuel, choisir Mode création,
Nous basculons ainsi dans l'
éditeur de requête Access. Tous les champs de la
table Clients sont posés à l'exception du
champ Client_id de la clé primaire. Nous avions créé, en dernière colonne, le
champ calculé Client_dpt. Il permet d'isoler les numéros de départements à partir des codes postaux, grâce à la
fonction Access Gauche. C'est donc ce dernier qui doit être exploité pour accueillir le
critère dynamique.
- Cliquer droit dans la zone Critères du champ Client_dpt,
- Dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
- Dans le générateur, taper l'expression suivante :
Comme [Quel département ex:13 ou rien pour tous] & '*'
Souvenez-vous, les crochets sont utilisés dans la
syntaxe Access pour identifier un champ. En guise de nom de champ, nous inscrivons une question destinée à l'utilisateur.
Access ne reconnaissant pas ce nom, restituera ce message dans une boîte de dialogue. L'utilisateur n'aura plus qu'à saisir le département souhaité pour préciser la condition. Et puisque cette expression est préfixée de l'
opérateur Comme et suffixée du
symbole de l'étoile par concaténation, s'il ne saisit rien, tous les départements seront considérés.
- Cliquer sur le bouton Ok du générateur pour valider l'expression du critère,
- Puis, enregistrer (CTRL + S) et fermer la requête,
- Dans le volet de navigation, double cliquer sur l'état E_Clients_Dpt,
Une boîte de dialogue s'affiche désormais et fort naturellement. L'état est construit sur la requête que nous avons paramétrée. Et cette dernière attend précision pour émettre une condition cohérente sur le champ calculé.
- Taper un numéro de département, par exemple : 83 et valider par Ok,
Il s'agit bien de l'état que nous avions construit et personnalisé. Mais cette fois, sur demande spécifique en amont, il offre le rendu uniquement pour les données recoupant le critère, soit le département du Var (83), dans cet exemple.
Il est donc tout à fait intéressant de constater qu'un même état peut fournir des synthèses adaptées, grâce à la conception d'une
requête paramétrée.
- Fermer l'état en cliquant sur la croix de son onglet,
- Puis, double cliquer de nouveau sur son nom dans le volet de navigation,
- Dans la boîte de dialogue, cliquer directement sur Ok pour ne fournir aucune condition,
La
requête paramétrée s'adapte grâce à l'expression de son critère. Elle juge qu'aucune condition n'est émise. De fait, tous les départements sont considérés et nous retrouvons le rendu complet de l'état, tel que nous l'avions conçu à l'origine.
Cette technique est donc particulièrement intéressante pour optimiser le nombre d'objets construits et notamment d'
états.
Fourchette de prix
Grâce aux opérateurs des expressions de critères, toutes les prouesses sont permises. Nous n'allons pas tous les passer en revue, d'autant que nous avons pris soin de les mettre en place à l'occasion de nombreux exercices.
L'
état E_Produits_Cat est construit sur la
requête R_Produits_Cat. Il offre une vue des articles regroupés par catégories. Et c'est encore un
champ calculé, exploitant la
fonction Access Gauche, qui isole les quatre premiers caractères de la référence, renseignant sur l'appartenance.
Pour parachever cette démonstration, nous souhaitons paramétrer cette requête. L'objectif est de pouvoir isoler tous les produits appartenant à une tranche de tarifs, à définir au moment de l'exécution. L'utilisateur doit donc pouvoir renseigner la borne inférieure du prix, ainsi que sa borne supérieure. La condition est donc émise sur le même champ mais doit poser deux questions.
- Fermer l'état E_Clients_Dpt en cliquant sur la croix de son onglet,
- Dans le volet de navigation, cliquer droit sur la requête R_Produits_Cat,
- Dans le menu contextuel, choisir Mode création pour basculer dans l'éditeur de requête,
- Ensuite, cliquer droit dans la zone Critères du champ Produit_prix,
- Dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
- Dans le générateur, taper l'expression suivante : Entre [Prix inférieur ?] Et [Prix supérieur ?],
Nous exploitons l'
opérateur Entre qui est la traduction de Between pour la version anglo-saxonne. Combiné avec l'opérateur ET (AND), il permet de définir les bornes de la plage numérique. Une fois de plus, comme ces bornes sont inscrites entre crochets,
Access cherchera la correspondance avec des noms de champs. Ne les reconnaissant pas, il demandera à l'utilisateur de préciser la valeur basse puis la valeur haute.
De retour dans l'éditeur de requête, vous notez la présence de la syntaxe dans la zone Critères du champ spécifié.
- Enregistrer (CTRL + S) et fermer la requête,
- Dans le volet de navigation, double cliquer sur l'état E_Produits_Cat,
Comme précédemment, une boîte de dialogue se déclenche. Grâce à l'indication que nous avons fournie, le message est clair (Prix inférieur ?).
- Saisir le nombre 20 par exemple et valider par Ok,
Comme vous le remarquez, une seconde boîte de dialogue lui emboîte le pas.
Il est donc possible de placer plusieurs critères paramétrés sur un même champ. La technique est toujours la même. Les précisions doivent être stipulées entre crochets.
- Saisir le nombre 30 par exemple et valider par Ok,
Nous retrouvons bien la vue des produits regroupés par catégories. Mais cette fois, l'énumération est limitée, pour respecter les conditions imposées par les bornes numériques définies. Pour retrouver une édition complète, il suffit de définir la borne inférieure à zéro et la borne supérieure sur un très grand nombre.