Bonjour,
J’ai des difficultés pour utiliser les conditions de recherche dans les collections,j’ai mis des mots clés pour designer 4 personnes et voudrais sélectionner dans un dossier les photos ou elles apparaissent soit seules soit par groupe de 2 3 ou 4.je bataille avec les conditions « et » « ou » « inclure » « exclure » mais je n’arrive pas au résultat voulu.est ce que c’est possible ?
Si j'ai bien compris : tu as des photos des personnes A, B, C et D que tu as indexées avec les mots clés A, B, C et D. Et tu voudrais retrouver toutes les photos ou au moins une de ces personnes apparaît. C'est bien ça ?
Dans ce cas, tu dois mettre un "ou" entre chaque condition.
Exemple en langue parlée : sélectionner si mot-clé "A" ou si mot-clé "B" ou si mot-clé "C" ou si mot-clé "D"
C'est bien ça sauf que je souhaite faire la sélection dans un dossier précis.
Donc je fais sélectionner si dossier "1" et si mot-clé "A" ou si mot-clé "B" ou si mot-clé "C" ou si mot-clé "D" .
en résultat j'ai bien toutes les photos ou au moins une de ces personnes apparaît mais dans tout le dossier racine de mes photos pas seulement dans le dossier spécifié.
C'est la ou je bloque
J'y suis arrivé mais il faut 8 conditions :
si dossier "1"
et si mot-clé "A"
ou si dossier "1"
et si mot-clé "B"
ou si dossier "1"
et si mot-clé "C"
ou si dossier "1"
et si mot-clé "D"
Je pensais qu'il était possible de faire plus simple.
Ce serait possible si on pouvait utiliser quelque chose comme des parenthèses pour prioriser les conditions. Un peu comme ça :
Si dossier X et (personne A ou personne B ou Personne C ou personne D).
Malheureusement ça n'existe pas, ni dans le module collections, ni dans le module filtres de collections
Bonjour,
un "in case ... of" serait bien utile, si ça existe en C.
Oui, bien sûr, il existe en C une structure de ce type :
Code :
switch (expression) {
case expression-constante : instructions
case expression-constante : instructions
...
default : instructions
}
Mais ce n'est pas si simple ! Actuellement, la résolution de la série de conditions est purement linéaire. Il n'y aucune gestion de priorité entre elles. Premier lu, premier traité ! Donc un simple switch convient. C'est d'ailleurs ce qui est codé aujourd'hui.
S'il fallait ajouter des parenthèses (appelons la chose comme ça par facilité), cela veut dire qu'il faudrait gérer des priorités : les parenthèses étant plus prioritaires que les "et", les "ou" et les "non". Il faudrait aussi tenir compte des parenthèses imbriquées. Cela signifie qu'il faudrait complètement réécrire cette partie du code pour, au choix :
- Coder à la main la récursivité du bidule.
- Où faire appel à des résolveurs externes, le couple YAcc et Lex, par exemple (Ce sont ceux que je connais, mais il en existe certainement d'autres).
J'ai travaillé dans le code de ce module il y a quelques années pour y ajouter les conditions sur les horodatages. Je peux te dire qu'il est 'un peu' chargé ! et ce n'a pas dû s'arranger depuis que le module "filtre de collections" a été ajouté. C'est d'ailleurs ce qui a fait vriller Aurélien l'année dernière.
J'aimerais bien faire ça, car j'ai déjà codé plusieurs analyseurs syntaxiques, mais ça me fait vraiment peur !
Bonjour,
Instinctivement j’aurai mis les « ou » en premier et fini par le « et ».
Personne A ou Personne B ou Personne C et Dossier I
Mais sans aucune assurance que ça fonctionne.
(01-06-23, 17:58)Phil7857 a écrit : [ -> ]Bonjour,
Instinctivement j’aurai mis les « ou » en premier et fini par le « et ».
Personne A ou Personne B ou Personne C et Dossier I
Mais sans aucune assurance que ça fonctionne.
Bonsoir,
ainsi que jpverrue l'annonce, avant d'effectuer un traitement informatique (je rajoute, de cosmétique ... à indispensable) il faut analyser ce qui est demandé, pour le faire le mieux possible, comme dans la vie. Je ne connais pas le C et surtout je n'ai plus le gnyak pour le suivi, mais j'avoue que ce genre de problème m'aurait tenté, il y a ... quelques temps Place aux jeunes.
(01-06-23, 18:36)FrançoisH a écrit : [ -> ] (01-06-23, 17:58)Phil7857 a écrit : [ -> ]Bonjour,
Instinctivement j’aurai mis les « ou » en premier et fini par le « et ».
Personne A ou Personne B ou Personne C et Dossier I
Mais sans aucune assurance que ça fonctionne.
Bonsoir,
ainsi que jpverrue l'annonce, avant d'effectuer un traitement informatique (je rajoute, de cosmétique ... à indispensable) il faut analyser ce qui est demandé, pour le faire le mieux possible, comme dans la vie. Je ne connais pas le C et surtout je n'ai plus le gnyak pour le suivi, mais j'avoue que ce genre de problème m'aurait tenté, il y a ... quelques temps Place aux jeunes.
Je vais suivre ton conseil, avant de répondre je vais essayer de bien analyser pourquoi tu me cites ... ben je ne comprends pas. Peux-tu s'il te plait éclairer ma lanterne ? Pourquoi tu me parles de C alors que je n'en fais pas mention ?
Désolé, je dois être trop vieux pour comprendre.