aide pour Access

« Forum technique (liste des messages)12

02/08-2006 à 11:59Bonjour à tous,

je propose cette demande à qui voudra, je ne suis pas sûre d'être à la bonne place...mais merci d'avance si vous pensez pouvoir m'aider. [:)(]

Je travaille sous Access 2000 et je souhaiterais faire apparaitre une boite de dialogue dans un formulaire de consultation.

Je dispose de plusieurs formulaires de consultation destinés à permettre aux futurs utilisateurs de consulter la base facilement.

Dans un de mes formulaires, lorsque je sélectionne un enregistrement qui ne renvoie aucun résultat (car l'enregistrement concerné ne correspond pas aux critères de la requête associée), on tombe sur une page "vide" (il n'y a pas résultats).
Je voudrais donc éviter aux utilisateurs qui consultent la base en mode consultation de se retrouver devant un fond de page vide (dans les cas où les enregistrements sélectionnés ne renvoient aucun résultats) et pour cela je voudrais ajouter une boîte de dialogue qui s'ouvre en cas de requête "vide" et dise gentiment "il n'y a pas de résultats pour cet enregistrement" en fait.
Suis-je claire ?
Merci beaucoup si vous pouvez m'aider ou m'orienter pour aller chercher la solution.
Bon courage à tous et bonne journée ! image



02/08-2006 à 12:31Bonjour,

Une excellente adresse pour Access: http://www.developpez.com/


----------
http://www.raslfront.org/


aide pour Access
02/08-2006 à 14:29Oui, merci beaucoup pour cette oientation..;j'y suis allée. image
bonne fin de journée !!
[;)]

  • Galeric
02/08-2006 à 14:43Bonjour,
Pas simple de répondre précisement lorsque qu'il s'agit d'une base que l'on ne connait pas.
Mais d'après ton explication lorsque la requète trouve des résultats à afficher, l'affichage se fait soit dans un formulaire, ou dans un état.
Si tu vas dans les propriétés de cet état ou formulaire, sous l'onglet "Evenement" tu dois avoir des lignes qui indiquent ce que doit faire cet état ou formulaire suivant plusieurs condition possibles qui sont par exemple :
-Sur ouverture
-sur fermeture
-sur aucune données
-sur erreur

image
propriété Etat

Si c'était pour moi, je construirait un petit formulaire qui contiendrait le message que tu veux que les utilisateurs lisent avec en plus un petit bouton ok lié à une procédure événementielle qui fermerait ce formulaire aprés lecture (ou / et tout ce que tu voudras lui faire faire d'autre).
Tu écris ensuite une petite macro qui ouvre ce formulaire (et/ou qui fait tout ce que tu veux d'autre)
une fois enregistrée cette macro apparaitra dans la liste des macros disponibles que tu verras en déroulant la liste de choix sur la ligne que tu auras choisi (décrite ci-dessus), sur aucune donnée, ou sur erreur etc....
Comme d'habitude avec access, il faudra certainement aussi que dans ce cas tu élargisse ta macro pour lui faire fermer l'état ou le formulaire sur lequel apparait le message d'erreur lorsqu'il n'y a aucune donnée à afficher.

Avec juste un tout petit espoir d'avoir pu t'aider, bon courage...

02/08-2006 à 16:41Merci pour ce long mail explicatif Galeric, et je vais opter pour ta méthode très claire pour la débutante que je suis.
Seulement, s'il y a bien une ligne absence de donnée dans les propriétés des états, il n'y en a pas pour les formulaires : on a plusieurs choix mais pas celui là.

Hier j'ai essayé de rajouter un bout de code VBA dans le code de mon formulaire pour rajouter une boite de dialogue en cas de selection vide mais un message d'erreur ("Erreur d'accès au fichier. Il se peut que la connexion réseau ait été perdue" ; apparement lié à un bug d'Access 2000 si j'en croit ce que raconte le site support.microfsoft.com) m'empêche de vérifier qu'il fonctionne...c'est pourquoi ta solution me plait, je n'ai plus accès au code VBA en fait. Donc si on trouve cette fameuse ligne "absence de données" pour un formulaire, je serais ravie ! [:)(]

Quoi qu'il en soit, je te remercie encore pour ta patience et ton aide. image

Modifie par Modifié par sophie.dupont le 0


aide pour Access
  • Galeric
02/08-2006 à 17:23

Dans un de mes formulaires, lorsque je sélectionne un enregistrement qui ne renvoie aucun résultat (car l'enregistrement concerné ne correspond pas aux critères de la requête associée), on tombe sur une page "vide" (il n'y a pas résultats).


Je ne suis pas certain d'avoir bien compris.

Le message d'erreur survient-il, parce que la selection dans le formulaire n'existe pas ou est erronnée ?
dans ce cas il faudrait remplacer le champ de selection de départ par une zone de liste modifiable avec l'option : limiter le choix à la liste.

Ou alors, l'erreur intervient ensuite (après que la requète ait été exécutée), donc au moment de l'affichage du résultat ?
Dans ce cas, où s'affiche le resultat ? Sur un état? un Formulaire ? un Sous Formulaire ?
D'ailleurs dans ce cas ce n'est pas une erreur, la base n'affiche que ce qui existe, et s'il n'y a rien c'est qu'il n'y a probablement rien à afficher. Dans ce cas une simple précision inscrite dans une zone texte de manière permanente sur le formulaire peut renseigner l'utilisateur sur la raison de l'absence de résultat.


03/08-2006 à 11:10Bonjour !
[;)]
Je crois bien que grâce à ton aide nous touchons au but : en fait il n'y a pas d'erreur tu l'as bien compris :
je reprend clairement :
nous avons une base de données destinée à être consultée par des non initiés à Access donc tout est mis sous forme de formulaires de consultation.
Dans un des formulaires (F_recherche criteres communes), nous proposons aux personnes de d'obtenir, en sélectionnant le nom de leur commune dans une liste déroulante, les infos concernant cette commune mais seulement si elle répond aux critères d'une requête (R_critères communes) que nous avons associée au formulaire.
Le résultat qui s'affiche alors dans un autre formulaire ne permet d'obtenir que les enregistrements concernant les communes qui correspondent aux critères de la requête : il n'y en a plus que 288 alors le nombre de communes enregistrées proposés dans la liste déroulante du formulaire sont plus nombreuses : 694
Donc, comme tu dis la base n'affiche que ce qui existe dans la requête. C'est donc logique en effet.
Mais ce que je voudrais si c'est possible c'est que lorsque l'utilisateur choisi dans la liste déroulante des communes une commune qui ne figure pas dans la requête associée au formulaire, on puisse faire ouvrir alors (pour toutes les communes qui ne figurent pas dans la requête) une boîte de dialogue qui informe l'utilisateur que c'est normal si la page du formulaire est vide.
ci jointe plus bas une impression d'écran (des 2 formulaires principal, la liste déroulante et l'écran "vide" dont je te parle quand on sélectionne une commune absente de la requête associée).
Suis je plus claire dis moi ? image

Merci encore pour ton temps et ta gentillesse. image
galeric
(+)

  • Galeric
03/08-2006 à 11:42J'y vois un peu plus clair, avec Acess il vaut mieux être précis, surtout à distance et lorsqu'en plus on ne connait pas la base ce n'est pas simple.

Pour ton souci, a mon avis le plus simple, le plus rapide, et le plus efficace serait d'ajouter, par exemple en dessous de la zone ou il est écrit "Base d'Inéligibilité de etc..."
un message qui sera visible en permanence et qui dirait un truc du genre : "si la liste ci-dessous est vide c'est parce que je n'ai pas encore eu le temps de saisir les éléments concernant votre commune, parce que je n'ai que dix doigts, que cinq d'entre eux sont occupés avec la tasse de café, que les journées sont courtes, les nuits difficiles etc.....) [;)]

C'est là uniquement une suggestion de message, bien sur tu dois pouvoir faire plus court, plus précis, plus adapté à la réallité de la situation.

Si cette solution ne te convient pas, il sera toujours possible de faire apparaitre un autre formulaire qui dira la même chose, mais c'est comme cela que l'on transforme une base de donnée en usine à gaz en perdant de vue complétement la philosophie d'une base de données, qui est de mettre un maximum de renseignements sur le minimum de place dans un minimum de temps pour une efficacité maximum.

Tiens nous au courant ..

aide pour Access
03/08-2006 à 15:06Bonjour,

Je pense plutôt à une macro avec arrêt de la macro (annulation de l'ouverture du formulaire contenant le résultat du tri) en cas d'erreur (abscence de données).

Par exemple, ici, un programme permettant la tenue de comptes (plusieurs comptes de banque gérés). Un bouton permet de lister les écritures passées sur une période dont on choisi le début et la fin de période... un formulaire contenant les résultats s'affichant ensuite. Si aucune écriture ne correspond à la période donnée, cela provoque l'affichage d'une boîte de dialogue avec le message : "Aucune donnée ne semble correspondre aux critères retenus" :

http://img152.imageshack.us/my.php?image=5jf2.jpg

Ton soucis est le même que le mien.

Il faut créer une macro qui renfermera seulement le message d'erreur : "Aucune données ne correspond... etc"

Il faut créer une deuxième macro associée au bouton qui déclenche l'ouverture de ton formulaire contenant les données : dans les propriétés de ce formulaire, associer la macro à la ligne "sur erreur"


Le formulaire d'ouverture de données :

image



La macro du message d'erreur :

http://img400.imageshack.us/my.php?image=2tm9.jpg



La macro qui ouvre le formulaire :

http://img400.imageshack.us/my.php?image=4er1.jpg


Difficle à distance comme l'écrit Galéric, et une base est forcément différente d'une autre... mais le but est d'essayer de te donner une nouvelle orientation pour ta recherche.

Modifie par Modifié par mylene. le 03/08/2


----------
image


  • Galeric
03/08-2006 à 16:03A vérifier si l'absence de données sera considéré comme une erreur au niveau du fomulaire ( je n'ai pas le temps de faire cette vérif), si oui la solution de mylène fait assez pro.

03/08-2006 à 18:01Merci beaucoup pour cette solution vraiment parfaite pour moi aussi Mylène, c'est vrai que c'est quasiment le même problème.
Avant d'en venir à ta super méthode qui me plait vraiment, je vous explique ce que j'ai essayé de faire depuis le dernier message d'aide qui m'est parvenu (vous êtes tous vraiment secourables [;)] et c'est génial !) ?

Alors voilà je me suis dit qu'il suffisait que je rajoute une Msgbox dans la macro qui ouvre mon formulaire basé sur la requête, et elle s'affiche sans problème dès que le formulaire s'ouvre, mais du coup elle s'affiche même quand la requête retourne des enregistrements... [;)]
par contre quand je veux lui dire de n'afficher la boite de dialogue que si le champ commune recherché "est null", dans la colonne conditions : "[Formulaires]![F_recherche_commune_ineligible]![Ville] est null", plus rien ne s'affiche jamais. Je ne dois pas utiliser la bonne instruction j'imagine ?
image
macro ouverture formulaire

Sinon, tes explications à toi me plaisent beaucoup mais je me demande pourquoi 2 macros sont nécessaires ?
est ce que la première qui ouvre le message d'erreur ne peut pas tout simplement se placer sur la ligne "sur erreur" des propriétés de mon formulaire associé à la requête ? image
MERCI BEAUCOUP pour vos explications et votre aide.
(+) [:)(]

aide pour Access
  • Galeric
03/08-2006 à 18:09[QUOTE][Formulaires]![F_recherche_commune_ineligible]![Ville] est null"[/QUOTE]tu mets comme condition que le champ du formulaire soit vide. Ce qui n'arrive que lorsque rien n'est selectionné sur le formulaire.

03/08-2006 à 18:59ah ok....merci pour cette nouvelle lumière.
Et donc si c'est possible, l'instruction qu'il faudrait mettre en condition ce serait quoi ?
merci encore.
bonne soirée !
sOphie [;)]

03/08-2006 à 22:09Bon... j'ai été un peu vite.

A décortiquer ma propre base de données, je m'aperçois que la condition est appliquée sur un premier formulaire dans lequel on doit donner deux dates (donc deux champs sur un formulaire, la condition d'ouverture étant basée sur ces simples champs).

Or, pour ton cas, la condition doit s'appliquer sur un sous-formulaire (si je comprends bien), un premier tri ayant déjà été fait sur le formulaire de sélection de la commune, avec : [Ville]=[Formulaires]![F_recherche_commune_ineligible]![Ville]

Je n'ai pas encore trouvé la solution pour poser une condition sur un sous-formulaire... image , et comme Galéric posait la question... l'ouverture sur un sous-formulaire - même vide de données - n'est pas considéré comme une erreur.... mon idée tombe donc à l'eau.

Alors là.... [°)] ... à mon humble avis deux solutions :
1- Tu ne changes rien au programme comme le suggérait Galéric au début, et tu créées la même boîte de dialogue que moi, sur ouverture du formulaire en prévenant le lecteur : "Attention, certaines communes ne sont pas encore renseignées. Logiquement, si tel est le cas, aucun informations n'apparaîtra" (un peu plus austère que la tasse à café... [;)] )

2- Ou alors, tu changes l'affichage des résultats obtenus en troquant le formulaire par un état - plus agréable d'ailleurs pour le lecteur - (le problème se résoud de lui-même... puisque l'on a ainsi la possibilité, sur un état, de trier sur absence de données - avec apparition de la même boîte de message que moi)

Désolée de cette fausse joie Sophie, je n'ai pas assez fait attention avant de répondre, méa culpa.

Modifie par Modifié par mylene. le 03/08/2


----------
image


aide pour Access
04/08-2006 à 10:18A nouveau merci pour ces messages. J'essaie de régler l'histoire de la boite de dialogue aujourd'hui et je vous informe de la solution utilisée (j'aime assez l'idée de l'état merci Mylène et ne t'inquiète surtout pas tous tes messages sont très bienvenus) image .

Si vous souhaitez vous mettre d'autres casses têtes sous la dent, je vous propose ceux ci:
1) dans un sous formulaire présenté sous forme de liste de choix (Formulaire recherche canton) dont la source est une requête regroupant le nom des cantons), quand on clique sur le nom d'un canton pour farie afficher les infos s'y rattachant, Access nous demande par une boite de dialogue 'entrer la valeur du paramètre' de retaper le nom du canton choisi avant de pouvoir accéder aux données.
image
canton
pour information, quand on retape dans cette boite de dialogue le nom du canton, les données apparaissent ensuite très bien. Comment éviter de devoir retaper le nom du canton sélectionné dans la liste avant d'accéder aux données ? je voudrais qu'un simple clic sur le nom du canton dans la zone de liste suffise pour ouvrir directement le sous formulaire des données associées....

2) nous voulons permettre aux utilisateurs de consulter dans un sous formulaire (en rajoutant un bouton "par téléphone" à notre formulaire principal qui comporte déjà plusieurs boutons d'accès aux données : "par communes", "par canton") les données se rapportant à une table regroupant des infos concernant leur numéro de téléphone. Or, dans cette table le champ du numéro de téléphone se présente sous la forme internationale +33 (1) 00 00 00 00
et on voudrait éviter que les utilisateurs aient à taper leur numéro de cette façon là ; est il possible de rajouter un champ dans la table des numéros de téléphone et de copier le numéro international en enlevant le +33 (1) ? comme ça on ferait le lien dans le sous formulaire avec ce champ là pour ouvrir la table des données ? si c'est possible, quelle est l'instruction a rentrer dans le nouveau champ ?

Voilà, vous savez tout. Merci encore et davantage pour votre aide et votre temps. image
Bon courage et bonne journée à tous [;)]

Modifie par Modifié par sophie.dupont le 0


  • Galeric
04/08-2006 à 11:06Pour le premier problème, si access affiche la boite de dialogue demandant le paramétre, c'est que tu as mal renseigné le champ "critère" de ta requête. Ce peut être simplement une erreur de syntaxe, mais ce qui est certain c'est que la requête ne reconnait pas le critère selectionné.

Pour le deuxième point, qui doit saisir quoi et où, tu parles d'un formulaire de consultation, est-ce sur ce formulaire que les utilisateurs doivent saisir quelque chose ?

04/08-2006 à 12:17j'ai bien pensé à cette raison là aussi mais si tu regardes la requête, tu verras que je ne sélectionne aucun critère :image
requête canton
donc c'est bizarre... image

aide pour Access
  • Galeric
04/08-2006 à 12:55

quand on clique sur le nom d'un canton pour farie afficher les infos s'y rattachant

Les infos attendues s'affichent dans un formulaire ou un état.
Ce formulaire ou cet état a pour origine source une requête qui apparement ne doit pas être celle que tu nous présente ci-dessus.
Ta requête se contente de regrouper les cantons, mais rien n'indique qu'elle soit capable d'extraire les infos liées à chaque canton comme tu nous le dis au dessus.
.Ton formulaire final doit avoir comme origine source une autre requête qui elle selectionne tes infos, peut être à partir aussi de tes cantons regroupés par la requête présentée ci-dessus.
Dans la requête origine de ton formulaire tu doit avoir dans le champ NOM CANTON, un critère qui a mon avis doit être sous la forme :
[Formulaires]![NOM DU FORMULAIRE OU SE FAIT LE CHOIX DU CANTON]![NOM CANTON]

C'est à ce niveau qu'il y a un problème qui génère l'affichage de la boite de dialogue qui te demande de retapper le nom du canton.

  • Galeric
04/08-2006 à 13:19Mylène,

1- Tu ne changes rien au programme comme le suggérait Galéric au début, et tu créées la même boîte de dialogue que moi, sur ouverture du formulaire en prévenant le lecteur : "Attention, certaines communes ne sont pas encore renseignées. Logiquement, si tel est le cas, aucun informations n'apparaîtra" (un peu plus austère que la tasse à café...)
2- Ou alors, tu changes l'affichage des résultats obtenus en troquant le formulaire par un état - plus agréable d'ailleurs pour le lecteur - (le problème se résoud de lui-même... puisque l'on a ainsi la possibilité, sur un état, de trier sur absence de données - avec apparition de la même boîte de message que moi)



Tu as raison, ces deux solutions me semblent les plus simples à mettre en oeuvre.
Si vraiement il fallait retenir la solution du formulaire il serait toujours possible de le faire mais cela va devenir un tout petit peu plus complexe et comme je le disais au début cela va encore ajouter un peu de tuyaux à l'usine à gaz.
Il ne faut pas perdre de vue qu'une bonne base de données doit rester simple, et que ce mot est le mot clé d'une base qui fonctionne et qui saura évoluer.
Ce qui se conçoit bien s'énonce clairement et les mots pour le dire viennent aisément


04/08-2006 à 15:54Merci à vous, vous êtes d'un grand soutien vraiment mais je suis sur d'autres tâches à effectuer actuellement...je vous tiens au courant dès que je m'y remets promis...
bonne fin de journée

Merci de vous identifier

« Forum technique (liste des messages)12

40 Enregistrements / Page 1/2