Jump to content
  • 0

Recherche à Plusieurs Critères


Guest Guest
 Share

Question

Petite question :

J'ai une table TABLE 1

Cette table contient une rubrique RUBRIQUE 1 qui contient des noms de villes

J'ai une zone de saisie g_recherche sur mon modèle qui me permet de rechercher tous les enregistrement de TABLE 1 qui contiennent cette ville

exemple : je tappe Paris dans g_recherche et les résultats correspondants s'affichent

Mon script est du type

Mode Recherche[]

Definir rubrique[RUBRIQUE 1;g_recherche]

ExecuterRecherche[]

Si je tappe Paris Marseille dans g_recherche, aucun résultat pour ma recherche

J'aimerai pourtant pouvoir afficher tous les enregistrements de TABLE 1 qui contiennent Paris OU Marseille...

D'après l'aide de Filemaker Pro il faut utiliser l'action de script Développer l'ensemble trouvé.

Malgré de multiples tentatives, je n'arrive toujours pas à trouver un script qui réponde à mes attentes. Si quelqu'un pouvait m'aider, il me retirerait une sérieuse épine du pied.

Je rêve d'un jour où je saisi " Paris Marseille Caen " dans ma rubrique de recherche. Je clique sur le bouton recherche et hop, tous les enregistrements ayant une ville correspondant à Paris, Marseille ou Caen s'affichent à l'écran.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Mouais... C'est normal, hein ! une recherche se fait sur une chaine de caractère... <_<

solution 1 (la base) : ton champ de recherche n'est pas une globale (très pratique au demeurant), mais ta rubrique 1. C'est du basique : en mode recherche, tu tapes Paris, CTRL+N, Marseille, CTRL+N, Caen, ENTER, et le tour est joué.

solution 2 (plus mieux) : on en reste à la globale, mais on y met non pas Paris Marseille Caen sur une seule ligne, mais :

Paris (retour chariot)

Marseille (retour chariot)

Caen

Dès lors, dans ton script, tu fais:

-mode recherche

-définir une première recherche en extrayant la première ligne

-nouvelle requête

-définir une deuxième recherche en extrayant la deuxième ligne

-nouvelle requête

-définir une troisième recherche en extrayant la troisième ligne

-exécuter recherche

HTH

Christian

Link to comment
Share on other sites

  • 0

Le topic date d'il y a 16 ans 😆 ...

 

Vous pouvez extraire avec cette fonction

ValeursExtraites ( rubrique avec la liste ; 1 ; 1 ) 

le 1er 1 pour le 1er élément , et le 2em 1 pour le nombre d’élément a extraire ( ici un seul )

Link to comment
Share on other sites

  • 0

16 ans !! Ah Ouais :)
Ben j'en suis là :)

J'arrive pas faire un script qui fasse une rechercher "ou".
Je vais regarder si j'arrive à le construire avec ce topic :) 

 

Link to comment
Share on other sites

  • 0

Le principe de multi-recherche avec un script est d'utiliser " nouvel enreg./requête "

 

exemple

00rechMult.png.a5b09236230395d424c18cd3ff0e465f.png

pour faire virtuellement ceci

00rechMult2.png.944ea865d198de8f3c69536aba42c7dc.png

 

 

Link to comment
Share on other sites

  • 0

Voilà j'ai fais ceci et ca fonctionne du tonnerre :)
Merci Apophis000 de m'avoir mis sur la piste (Je connaissais pas Valeurs Extraires()

Le principe est de saisir des mots clefs de recherche séparés par une virgule du genre

bateau, camion,école
 

995970948_Capturedecran2021-04-01a22_38_26.png.6a350ab5316af33293d4fa85e67160cd.png

Link to comment
Share on other sites

  • 0

… il faut juste noter que la fonction ValeursExtraites() renvoie un résultat terminé par un retour chariot; ce qui en soit n'est pas forcément pénalisant dans le cadre d'une recherche mais ne correspond pas à ce que tu as cherché à extraire. Cette fonction est plutôt destinée à extraire des blocs de données destinés eux-même a être concaténés à d'autres blocs ou listes de valeurs.

Dans le cas de traitement de valeurs "à l'unité", je lui préfèrerais la fonction ObtenirValeur ( listeDeValeurs ; numéroValeur ).

En ce qui concerne ta boucle, essaye de ne garder le traitement de la création de de toutes les requêtes à l'intérieur de la boucle… et comme la portée (scope) des variables ne dépasse pas le script préfère l'emploi de variables locales $ à des variables globales $$.

Définir variable [$_liste ; Valeur: …ton traitement… ]
Définir variable [ $_compte ; Valeur: DecompteValeurs ( $_liste)  ]
Définir variable [ $_index ; Valeur: 0 ]
Mode Recherche [ Pause: Non ] 
Boucle
	Fin de boucle si [ $_index >= $_compte ] 
	Définir variable [ $_index ; Valeur: $_index + 1 ] 
	Nouvel enreg./requête 
	Définir rubrique [ OT::taRubrique; ObtenirValeur ( $_liste ; $_index ) ]
Fin de boucle
Exécuter la recherche [] 

script que tu peux également compacter en initialisant les variables de boucle en un seul passage à l'aide de la fonction Definir():

 # ~~~~~ initialisation variables
Définir variable [$_liste ; Valeur: …ton traitement… ]
Définir variable [ $_void ; Valeur: Definir ( [     $_index = 0 ;     $_pas = 1 ;     $_compte = DécompteValeurs ( $_liste ) ] ; $_void ) ] 
Mode Recherche [ Pause: Non ]
Boucle
	Fin de boucle si [ Definir ( [     $_index = $_index + $_pas ] ; $_index >= $_compte ) ] 
	Nouvel enreg./requête
	Définir rubrique [ OT::taRubrique; ObtenirValeur ( $_liste ; $_index ) ]
Fin de boucle
Exécuter Recherche []

 

Link to comment
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...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...