Jump to content
  • 0
andromar

Recherche avec cases à cocher

Question

Bonjour,

Sur le point de livrer une petite application (FMP 16 sous Mac) de conseil en plantes médicinales, les utilisateurs me posent un problème délicat, sur lequel je bute. Je vous l'expose si vous voulez bien le lire.

Chaque plante possède des caractéristiques précises. Par exemple une rubrique Sphère indique si la plante est efficace en ORL ou en sphère urinaire ou ... Une autre rubrique porte sur une autre caractéristique ... La saisie des informations se fait par le biais de listes en cases à cocher (plusieurs choix sont possibles). Quand on fait recherche, j'ai prévu un modèle qui s'ouvre en mode recherche évidemment, et qui présente les diverses rubriques dans lesquelles chercher.

Or ces rubriques se présentent sous forme d'une liste, mais l'utilisateur ne peut choisir qu'un seul item, alors que parfois il aurait besoin de chercher en cochant plusieurs items. Existe-t-il un moyen pour saisir plus d'un item dans une liste déroulante (avec une combinaison de touches par exemple ?). Ou une toute autre solution ?

Mille mercis par avance,

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

bonjour

pourquoi c'est pas des cases a cochez aussi lors de la recherche ??? 

Share this post


Link to post
Share on other sites
  • 0

Bonsoir Sergebo, et d'abord merci pour votre intérêt pour moi !

Dans la recherche, je présente aussi une rubrique sous forme de cases à cocher, mais justement l'utilisateur ne peut choisir qu'un seul item, même si lors de la création de la fiche, il a doté la plante de deux items.

Pour être clair dans un exemple (farfelu) : une fiche pour le thym : dans la rubrique Sphères, il va cocher la case Voie urinaire et la case Céphalées; lors d'une recherche, dans la rubrique Sphères, il ne va pouvoir choisir qu'une seule case, même s'il a besoin des deux. Existe-t-il un moyen de sélectionner plusieurs items et surtout de forcer FMP à chercher sur les deux ?

Merci par avance, à votre disposition pour plus de détails si nécessaire !

Share this post


Link to post
Share on other sites
  • 0

je comprend pas bien ton exemple  

je met un petit bout de programme  

tu as des fiches avec  des cases a cocher en mode utilisation

quand tu fais une recherche tu la possibilité de recherchez sur les même case a cochez 

 

case a cochez.fmp12

Share this post


Link to post
Share on other sites
  • 0

En lisant ta bienveillante réponse, j'y ai cru sur le coup, car en effet ton exemple fonctionne.

En réalité, je me heurte au fait que mes rubriques utilisent une liste trop importante pour l'afficher en clair comme dans ton exemple. C'est pourquoi mon utilisateur, en mode recherche, clique sur une rubrique qui déroule une liste (dont une avec près de 40 items possibles). Et là, il ne peut choisir qu'un seul item, impossible d'en sélectionner deux !

Confinement oblige, j'y retravaille ce jour, et je reviendrai ici régulièrement au cas où ...

Encore merci !

Share this post


Link to post
Share on other sites
  • 0

Pour Sergebo,

J'ignore si tu pourras me lire, mais ici à La Grande Motte il pleut, peut-être aussi à Lausanne ...

Je te joins une copie d'écran de mon problème : j'ai 2 fiches :

une Thym : Sphère = Musculo et ORL et Partie = Racines et Fleurs

- une Lotus Sphère = Musculo et Peau et Partie = Racines et Parties aériennes (je laisse de côté pour l'instant les Propriétés essentielles).

Mes essais donnent :

- si Sphère : Musculo ==> Lotus & Thym sortent, ok

- si Sphère : Peau + Partie utilisée : Parties aériennes ==> Lotus seul, ok

- si Sphère : Peau + Partie utilisée : Fleurs ==> Lotus & Thym, ok

- si Sphère : ORL + Partie utilisée : Fleurs ==> Thym seul, ok

Mais là où je ne comprends plus :

- si Sphère : ORL et Peau  ==> aucune fiche, alors que je devrais avoir Lotus & Thym !

- si Partie utilisée : Parties aériennes et Fleurs ==> aucune fiche, alors que je devrais avoir Lotus & Thym !

On dirait que FMP refuse de chercher quand on sélectionne plus d'un item dans une liste !!! Alors que dans le fichier exemple que vous m'avez transmis, cela fonctionne ...

Je précise que ma recherche se fait par script que je donne ici, au cas où j'aurais fait une erreur :

===

Mode recherche

Exécuter recherche :

     Rechercher enregistrements dont rubrique Sphère = $$Sphère

     Rechercher enregistrements dont rubrique Parties utilisées = $$Parties

Précision : comme j'ai plusieurs rubriques à liste longue, je fais choisir les valeurs par l'utilisateur dans une globale "Globale Sphère" que je transfère dans une variable "$$Sphère" que j'utilise ensuite dans la fonction Exécuter recherche.

Est-ce là que j'ai une erreur ? Mes deux "Rechercher enregistrement" ont l'air de fonctionner en mode ET, est-ce bien ainsi ? De toute façon, je ne réussi pas, par script, à faire du OU pour le tester ...

Sans aller à vous souhaiter de la pluie pour avoir le temps de me répondre, merci par avance, car je bloque vraiment !

Capture d’écran 2020-04-19 à 11.25.41 bis.jpg

Share this post


Link to post
Share on other sites
  • 0

Pour Sergebo encore : mille excuses, je t'ai tutoyé dans la foulée. Sans doute parce que je suis dans une situation similaire : après une activité professionnelle où j'ai utilisé FMP (en programmant en partie),  je profite de la retraite pour m'y intéresser plus profondément, et ici aider une association qui veut promouvoir les vertus médicinales des plantes !

Share this post


Link to post
Share on other sites
  • 0

pas de soucis   tu ou vous  pour moi ca me gène pas 

j'ai fais un bout avec une recherche par script   sans passé par une variable

si tu as une rubrique global  pas besoin de passé par une variable.

rech 1 = rech sur b

rech2 = rech sur  c 

case a cochez.fmp12

Share this post


Link to post
Share on other sites
  • 0

Bonjour

Il y a une manip. pour chercher facilement dans des case a cocher .

A la base, la liste de case a cochez ce présente en liste vertical a cause du retours chariot . Ont Peu alors créé une nouvelle rubrique qui vas rendre la liste horizontal en remplacent le retour chariot par un espace

commande  substituer ( rubrique , ¶ ," " ) 

Dans cette rubrique , un recherche multicritère est possible en une demande .

Voir ici dans mon exemple  avec les couleurs de fleures . Chercher par exemple "Blanc jaune"  ( 2 critère séparer par espace ) FM trouvera le ou les fleures qui ont ces 2 couleur.

 

caseacoche.fmp12

 

Apo

Share this post


Link to post
Share on other sites
  • 0

ps: Je fait la recherche dans cette rubrique , mais je l'affiche pas ...

Share this post


Link to post
Share on other sites
  • 0

Sergebo et Apophis, merci !

J'avais commencé à trouver une solution, en mettant sur mon modèle de recherche la rubrique en double, en l'associant à une seconde variable (car mes utilisateurs ont besoin d'entrer deux critères de recherche, pas plus) et là, miracle, cela marche, FMP n'y voit que du feu, il accepte de travailler deux fois sur la même rubrique !

Mais c'est un peu lourd, et je vais me plonger (j'ai le temps avec le confinement, et encore et toujours la pluie) dans vos deux solutions, qui me semblent bien plus simples et propres, ce que j'apprécie toujours.

Décidément ce forum est super, avec des personnes dévouées et compétentes. Je tenterai plus tard d'y rendre tout ce que j'y reçois, une fois plus aguerri !

Merci encore !

Share this post


Link to post
Share on other sites
  • 0

Bonsoir  Sergebo et Apophis (et à toute autre bonne volonté),

J'ai besoin de réouvrir un peu cette discussion, pour une question complémentaire. Grâce à vous, j'ai pu régler mon problème initial, à savoir permettre la sélection de plusieurs items dans une rubrique en cases à cocher pour lancer une recherche. En simplifiant maintenant, mon script se présente ainsi :

Mode recherche

Définir rubrique (Rub.A; $$VariableA)      => variable issue de mon modèle où l'utilisateur choisit l'item dans une rubrique en cases à cocher.

Exécuter recherche ()

Quand on travaille sur un seul item dans la rubrique, tout roule : je choisis l'item Blanc, je reçois les fiches taguées en Blanc. Pareil quand je travaille sur 2 rubriques : si j'ajoute un Définir rubrique (Rub.B; $$VariableB), j'obtiens les fiches taguées Blanc ET Vert, et il me suffit d'insérer entre les deux Définir rubrique une instruction Nouvel enregistrement pour obtenir les fiches taguées Blanc OU Vert.

Mais, mais si, dans une unique rubrique, je choisis 2 items : Blanc & Vert, je reçois toujours les fiches taguées Blanc ET Vert, mais je n'ai plus la possibilité d'insérer un Nouvel enregistrement ... Donc c'est peut-être bêtement simple, mais comment faire pour obtenir Blanc OU Vert ?

Mille mercis par avance,

Share this post


Link to post
Share on other sites
  • 0

Mode recherche

Définir rubrique (Rub.A; $$VariableA)

Nouvel enreg./requête

Définir rubrique (Rub.B; $$VariableB)

Exécuter recherche ()

 

Share this post


Link to post
Share on other sites
  • 0

Merci Apophis,

Je me suis mal exprimé : quand je cherche dans 2 rubriques différentes, ok, je sais faire comme tu le décris ici avec Rub.A et Rub.B et Nouvel enregistrement.

Mon problème : quand à la saisie une fiche a reçu pour Rub.A deux valeurs, la recherche me retourne ces deux valeurs avec ET et non pas OU. Même en testant la recherche rapide.

Donc pour résumer :

Mode recherche

Définir rubrique (Rub.A; $$VariableA) 

Nouvel enreg./requête

Définir rubrique (Rub.A; $$VariableB)

Exécuter recherche ()

     => au départ, ma rubrique est sous forme de liste en cases à cocher; je récupère le choix de l'utilisateur dans une variable en effet, mais cette variable récupère en une seule fois les 2 ou 3 cases qui ont été cochées.

Peut-on extraire de cette variable la valeur des cases ? Exemple : une liste de couleurs : l'utilisateur veut rechercher le Blanc et le Vert : ma variable est donc composée de Blanc / Vert. Que faire ensuite ?

Merci pour ton temps,

Share this post


Link to post
Share on other sites
  • 0

Pour "OU" effectivement c'est le premier que j'ai dis

Pour "ET" , ont met les 2 critère séparer d"un espace ( voir mon modèle précédant ) 

Mode recherche

Définir rubrique ( Rub.A; $$VariableA & " " & $$VariableB )

Exécuter recherche ()

Share this post


Link to post
Share on other sites
  • 0

Merci Apophis, mais cela ne marche pas chez moi. et je ne comprends pas comment cela pourrait marcher :

la rubrique Rub.A est conçue pour recevoir un item (dans $$VariableA) figurant dans sa liste de cases à cocher, alors que $$VariableB correspond à un item de Rub.B ?

En fait, il me faudrait une $$VariableA bis si je coche deux items dans A, mais comment ?

Share this post


Link to post
Share on other sites
  • 0

Le "ET" c'est aussi différent rubrique en une fois .

Mode recherche

Définir rubrique (Rub.A; $$VariableA)

Définir rubrique (Rub.B; $$VariableB)

Exécuter recherche ()

Share this post


Link to post
Share on other sites
  • 0

OK mais alors, dans l'hypothèse où dans Rub.A je cherche les items Blanc ou Vert, comment je peux dire à FMP que Blanc c'est $$VariableA et Vert c'est $$VariableB ?

En passant par une fonction style DecompteValeur ?

Merci par avance, et bonne nuit !

Share this post


Link to post
Share on other sites
  • 0

Vu que vous parlez de ses variable depuis le début , ont en avais déduit que se sont des élément acquit ...

Les variable peut être une rubrique global, crée par calcule ou simplement récupéré d'une rubrique .

Vous avez pas regarder mon exemple ?? 

Dans celui-ci j'utilise une rubrique global pour faire la recherche et que j'utilise directement dans le script de recherche  ( pas besoin de créé un variable dans ce cas si , la rubrique global peu être utiliser directement a la place d'une variable)

A Propos ... si les variable que vous utiliser , sont utiliser que dans le script en cour , il faut que $ et pas $$ devant .

 

Apo

Share this post


Link to post
Share on other sites
  • 0

Veuillez m'excuser de n'avoir pu revenir plus tôt pour vous dire que j'avais donc résolu mon problème, grâce à vos conseils à tous, et aussi à une recherche sur ce beau forum, qui m'a permis de télécharger un fichier de Puimisson qui répondait parfaitement à ma problématique !

Pour Apophis, bien sûr que j'ai regardé votre exemple, et il m'a beaucoup aidé à mettre de l'ordre dans mon raisonnement ! Oui, je maîtrise un peu les variables, comme les globales, mais pas toujours au niveau de ce que je trouve sur le forum !

Mille mercis encore, bonne fin de semaine, et portez-vous tous bien !

Share this post


Link to post
Share on other sites
  • 0

Bonjour à tous,

Je me permets de revenir sur cette partie du forum, parce que, grâce à elle - et à vous donc - j'ai pu régler mon lourd problème de recherche multicritères avec cases à cocher.

Voilà pourquoi : j'ai ajouter à mon script une recherche par Exécuter une recherche rapide. Après moult consultations du manuel et des discussions sur ce sujet, je pense avoir pas trop mal réussi. Principe simple :

- un modèle avec une rubrique globale où renseigner l'item recherché,

- puis un modèle comportant toutes les rubriques où je veux chercher mon item, et dans mon script : Exécuter une recherche rapide (rub. globale).

Mais je me heurte à deux petites difficultés :

1/ cela marche bien tant que je ne recherche qu'un seul mot dans ma globale. Mais si j'entre deux items, cela ne fonctionne bien ni en résultat ET ni en résultat OU, et que je renseigne ma rubrique globale

avec item1 (un espace) item2,  ou bien item 1 (retour chariot) item2.

2/ quand je veux gérer l'absence de résultat (gestion des erreurs : oui) avec Nbre d'enregistrement = 0 ou bien Obtenir code erreur = 401, rien ! Même si j'entre un mot dont je suis certain qu'il n'existe pas (ZZZZZ) le script saute allègrement le SI et réagit comme si des fiches avaient été trouvées ! Et dans ce cas, si le résultat est nul, au lieu de m'afficher la boite de dialogue ad(hoc, il affiche la totalité des fiches en service ... Comme si on ne pouvait utiliser Gestion d'erreurs Oui dans ce cas de figure. Mais je n'ai rien trouvé d'évident; Alors, avant que je ne retire cette fonction de Exécuter une recherche rapide, non fiable.

A moins que je passe à côté d'une caractéristique spécial à ce script, et que vous connaîtriez ... ? Merci par avance,

Share this post


Link to post
Share on other sites
  • 0

Bonjour,
Il serait plus simple de répondre si on avait un fichier "démo" présentant les éléments, et le(s) script(s) qui vont avec.
De ce que je comprend, une recherche rapide me semble incompatible avec une recherche multicritère (au moins directement). Pour le la gestion d'erreur, sans le script et le contexte, …

Share this post


Link to post
Share on other sites
  • 0

Bonsoir Puimisson,

Non, pas de crainte, j'ai un modèle de recherche multicritère qui fonctionne bien, et celui de recherche rapide est totalement indépendant. Merci de jeter un œil sur mon montage :

script 1 :

Figer fenêtre
Définir rubrique [ Plantes médicinales::Recherche rapide; "" ]
Activer modèle [ “RES : début recherche rapide” ]
Activer rubrique [ Plantes médicinales::Recherche rapide gl ] [ Sélectionner/exécuter ] /// rubrique globale

script 2 :

Figer fenêtre
Gestion erreurs [ Oui ]
Activer modèle [ “LAN : écran récapitulatif global” ] /// modèle sur lequel figurent toutes les rubriques objets de ma recherche
Afficher tous les enreg.
Définir variable [ $$RechercheRapide; Valeur :Plantes médicinales::Recherche rapide gl ]

Exécuter une recherche rapide [ $$RechercheRapide ]


#Si la recherche est vide
Figer fenêtre
Si [ Obtenir ( NombreEnregTrouvés ) = 0 ]
     Ouvrir boîte dial. person. [ Titre : "ATTENTION"; Message : "Aucune fiche ne contient cette recherche.¶¶"; Bouton par défaut : “Annuler”, Valider : “Oui” ]
     Gestion erreurs [ Non ]
     Exécuter script [ “RES/C : Stop recherche” ] Fin de script [ ] /// pour quitter la recherche
Fin de si
Gestion erreurs [ Non ]
Activer modèle [ “VIS : résultat recherche par nom” ]
Trier enregistrements [ Ordre de tri défini : Plantes médicinales::Nom vernaculaire; croissant ] [ Rétablir; Sans fenêtre ]
Afficher enreg/requête/page
[ Premièr(e) ]
Figer fenêtre
Activer modèle [ “RES : résultat recherche rapide” ]

nb : je sais qu'en utilisant une rubrique globale, je dois pouvoir me passer du recours à la variable $$RechercheRapide

C'est donc assez simple, mais ou est-ce mal écrit ? Merci par avance,

Share this post


Link to post
Share on other sites
  • 0

Bonjour,
Sans la structure, difficile de voir où est l'erreur.
Voici un exemple de démarche "classique" pour une recherche rapide qui doit être adaptable à votre problème.

RechRap.fmp12.zip

Share this post


Link to post
Share on other sites
  • 0

Merci beaucoup, je vais y passer la dernière (j'espère) semaine de confinement !

Meilleurs souhaits pour vous aussi !

Share this post


Link to post
Share on other sites
  • 0

Pour Puimisson (ou autre bonne volonté bien sûr),

Pour éviter de perdre mes derniers cheveux, je reviens vers vous, en joignant un condensé de mon fichier, opérationnel sur mon problème.

Ce fichier doit permettre de conseiller des plantes médicinales, donc la recherche est primordiale. Le bouton Recherche offre le choix entre une recherche multicritère qui fonctionne bien, mais problème sur ma recherche rapide. Je précise que les données déjà entrées sur les 3 fiches conservées dans l'exemple sont farfelues, elles ne sont là que pour suivre la création du fichier.

J'ai conservé 3 fiches, et je travaille sur une seule rubrique dans l'immédiat : celle du Parfum :

- camomille : Parfum lys

- reine des prés : Parfum lys

- thym : Parfum rose

Un clic sur Recherche rapide : lancement du script "RES : début recherche rapide" qui se contente d'afficher un modèle contenant une rubrique globale - et, cachés dessous, toutes les rubriques où je voudrais que la recherche rapide se fasse.

Une fois entré le mot recherché, un clic sur le bouton vert lance le script de recherche, très largement inspiré du fichier proposé par Puimisson (encore merci) : RES : Lancement recherche rapide.

Or, si vous le testez, comme moi :

je cherche le mot Lys et j'obtiens bien camomille et reine

je cherche le mot Rose et j'obtiens bien thym

(sur mon fichier complet, j'ai testé des dizaines de fois, cela marche sur toutes les rubriques)

Mais voilà : je cherche un mot que je sais parfaitement absent de toutes les rubriques (par exemple azerty ou plastic ou zzzzz) et là, au lieu d'aboutir sur le SI (Obtenir (NombreEnregTrouvés) = 0, ce qui serait logique, mon script "saute" ce SI comme s'il avait trouvé quelque chose, et donc il affiche la totalité du fichier alors qu'il n'y a rien ! Pourtant je crois avoir fidèlement suivi le script de Puimisson ... 

Au secours, où est mon erreur svp ?

 

 

Plantes médicinales pour FM Source.fmp12.zip

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...