Filtre formulaire [3stone] And Or arggh!!

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel_D
Le #6340531
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"
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






3stone
Le #6340381
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)
news.tiscali.fr
Le #6340171
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"
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)



3stone
Le #6340131
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)
news.tiscali.fr
Le #6369821
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" %
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)



Publicité
Poster une réponse
Anonyme