Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre formulaire [3stone] And Or arggh!!

5 réponses
Avatar
news.tiscali.fr
Bonjour,

je vous presente tous mes voeux pour cette nouvelle année 2008.

Je reviens vers vous avec mes problèmes de filtrage sur plusieurs champs. Je
pensais avoir résolu le problème en plaçant des OR à la place des AND mais
en fait ca ne resoud pas tout.

Cela fonctionne très bien si dans le filtre je n'ai que des OR

par ex : ([T_fonction1]='1er ASSISTANT REAL' OR [T_fonction2]='1er ASSISTANT
REAL')

ou si j'ai que des AND :
([T_Pays]='France' AND [T_ville]='BEAUVAIS' AND [T_fonction1]='1er ASSISTANT
REAL')

Dès que je commence a mélanger les deux, cela ne remonte plus les
enregistrements correctement

par ex : dans ma table j'ai 5 enregistrements de test.

Je filtre sur la fonction et les outils (Je sais qu'un seul enregistrement
coresspond au critères)

voici le filtre généré : ([T_fonction1]='1er ASSISTANT REAL' OR
[T_outil1]='AFTER EFFECT' AND [T_outil2]='AFTER EFFECT')

resultat : il m'affiche 3 enregistrements au lieu d'un seul.

Mon probleme se situe sur la contruction du filtre je sais pas comment m'y
prendre pour gérer dynamiquement les AND et les OR...


pour mémo :

je dois filtrer des fiches Candidats en fonction de leur nom / ville / pays
mais également sur leur fonctions (en sachant qu'un candidat peut avoir
jusqu'à 10 fonctions)
et sur les outils maitrisés (en sachant qu'un candidat peut maitriser
jusqu'à 10 outils)


Bref, une belle prise de tete

5 réponses

Avatar
Michel_D
Bonjour,

1ère régle :
Mettre des parenthéses afin de bien délimiter les opérations logiques.

2ème régle :
Mettre des parenthéses ...

3ème régle :
...

"news.tiscali.fr" (paslamarque).fr> a écrit dans le message de news:flit34$dbf$
Bonjour,

je vous presente tous mes voeux pour cette nouvelle année 2008.

Je reviens vers vous avec mes problèmes de filtrage sur plusieurs champs. Je
pensais avoir résolu le problème en plaçant des OR à la place des AND mais
en fait ca ne resoud pas tout.

Cela fonctionne très bien si dans le filtre je n'ai que des OR

par ex : ([T_fonction1]='1er ASSISTANT REAL' OR [T_fonction2]='1er ASSISTANT
REAL')

ou si j'ai que des AND :
([T_Pays]='France' AND [T_ville]='BEAUVAIS' AND [T_fonction1]='1er ASSISTANT
REAL')

Dès que je commence a mélanger les deux, cela ne remonte plus les
enregistrements correctement

par ex : dans ma table j'ai 5 enregistrements de test.

Je filtre sur la fonction et les outils (Je sais qu'un seul enregistrement
coresspond au critères)

voici le filtre généré : ([T_fonction1]='1er ASSISTANT REAL' OR
[T_outil1]='AFTER EFFECT' AND [T_outil2]='AFTER EFFECT')

resultat : il m'affiche 3 enregistrements au lieu d'un seul.

Mon probleme se situe sur la contruction du filtre je sais pas comment m'y
prendre pour gérer dynamiquement les AND et les OR...


pour mémo :

je dois filtrer des fiches Candidats en fonction de leur nom / ville / pays
mais également sur leur fonctions (en sachant qu'un candidat peut avoir
jusqu'à 10 fonctions)
et sur les outils maitrisés (en sachant qu'un candidat peut maitriser
jusqu'à 10 outils)


Bref, une belle prise de tete






Avatar
3stone
Salut,

"news.tiscali.fr"
| je vous presente tous mes voeux pour cette nouvelle année 2008.


Bonne année aussi ;-)


| Je reviens vers vous avec mes problèmes de filtrage sur plusieurs champs. Je
| pensais avoir résolu le problème en plaçant des OR à la place des AND mais
| en fait ca ne resoud pas tout.
|
| Cela fonctionne très bien si dans le filtre je n'ai que des OR
|
| par ex : ([T_fonction1]='1er ASSISTANT REAL' OR [T_fonction2]='1er ASSISTANT
| REAL')
|
| ou si j'ai que des AND :
| ([T_Pays]='France' AND [T_ville]='BEAUVAIS' AND [T_fonction1]='1er ASSISTANT
| REAL')
|
| Dès que je commence a mélanger les deux, cela ne remonte plus les
| enregistrements correctement
[...]


Si tu n'arrive pas à le créer malqré les indications, utilise un formulaire tout fait...
http://www.mvps.org/access/forms/frm0045.htm

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
news.tiscali.fr
merci, je vais essayer de placer des paranthèses comme indiqué...

Je viens de me rendre compte que si je filtre sur les noms et que celui-ci
comporte un apostrophe (par ex : L'hermite)
le code plante.

If (Not IsNull(LM_Nom)) Then
strFiltre = "[T_Nom]='" & LM_Nom & "' AND "
End If

j'ai essayé de remplacer les ' par des " mais ca ne vas pas..




"3stone" a écrit dans le message de news:

Salut,

"news.tiscali.fr"
| je vous presente tous mes voeux pour cette nouvelle année 2008.


Bonne année aussi ;-)


| Je reviens vers vous avec mes problèmes de filtrage sur plusieurs
champs. Je
| pensais avoir résolu le problème en plaçant des OR à la place des AND
mais
| en fait ca ne resoud pas tout.
|
| Cela fonctionne très bien si dans le filtre je n'ai que des OR
|
| par ex : ([T_fonction1]='1er ASSISTANT REAL' OR [T_fonction2]='1er
ASSISTANT
| REAL')
|
| ou si j'ai que des AND :
| ([T_Pays]='France' AND [T_ville]='BEAUVAIS' AND [T_fonction1]='1er
ASSISTANT
| REAL')
|
| Dès que je commence a mélanger les deux, cela ne remonte plus les
| enregistrements correctement
[...]


Si tu n'arrive pas à le créer malqré les indications, utilise un
formulaire tout fait...
http://www.mvps.org/access/forms/frm0045.htm

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
3stone
Salut,

"news.tiscali.fr"
| Je viens de me rendre compte que si je filtre sur les noms et que celui-ci
| comporte un apostrophe (par ex : L'hermite)
| le code plante.
|
| If (Not IsNull(LM_Nom)) Then
| strFiltre = "[T_Nom]='" & LM_Nom & "' AND "
| End If


Lorsque la saisie peut contenir une apostrophe, il faut doubler cette dernière...

'ici les espaces sont destinés à la visualisation !
Replace(LM_Nom , " ' " , " ' ' " , 1 , -1 , vbTextCompare)

ce qui donne pour toi :

If (Not IsNull(LM_Nom)) Then
strFiltre = "[T_Nom]='" & Replace(LM_Nom , "'", "''", 1, -1, vbTextCompate) & "' AND "
End If

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
news.tiscali.fr
merci,

Cela fonctionne parfaitement et je m'en suis sorti avec mes pranthèses.

Merci encore pour vos prècieux conseils et les codes que vous m'avez
fournis.

seb



"3stone" a écrit dans le message de news:
%
Salut,

"news.tiscali.fr"
| Je viens de me rendre compte que si je filtre sur les noms et que
celui-ci
| comporte un apostrophe (par ex : L'hermite)
| le code plante.
|
| If (Not IsNull(LM_Nom)) Then
| strFiltre = "[T_Nom]='" & LM_Nom & "' AND "
| End If


Lorsque la saisie peut contenir une apostrophe, il faut doubler cette
dernière...

'ici les espaces sont destinés à la visualisation !
Replace(LM_Nom , " ' " , " ' ' " , 1 , -1 , vbTextCompare)

ce qui donne pour toi :

If (Not IsNull(LM_Nom)) Then
strFiltre = "[T_Nom]='" & Replace(LM_Nom , "'", "''", 1, -1,
vbTextCompate) & "' AND "
End If

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)