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

Bug : Filtrage sur une zone de liste

2 réponses
Avatar
dubois.g
Bonjour =E0 tous,

Je continu de d=E9velopper vaillament ma base avec votre aide =E0 tous et
je vous en remercie. Seulement l=E0 s=E8che...

Mon formulaire bugg=E9 est calqu=E9 point par point sur celui de
caf=E9ine. (http://cafeine.developpez.com/access/tutoriel/recherchemulti
- m=E9thode que je ne vous recommande gu=E8re apr=E8s avoir vu tout ce qui
cela peut engendrer comme probl=E8me.)

Mon bug :

- J'ouvre mon formulaire
- Toute ma liste est l=E0, pas de probl=E8me
- Je coche filtre par mois sans rentrer de crit=E8res (un champ vide
ind=E9pendant est apparu)
- Et =E0 ce moment l=E0 : dans ma liste deux entr=E9es ont disparus alors
que n'ai rien filtr=E9!
- Si je d=E9coche (que je reviens =E0 la situation du formulaire lors de
son lancement), tout va bien
- Si je recoche une nouvelle fois, mes entr=E9es sont l=E0, tout va bien.

Autrement dit :

on a rien coch=E9 =E7a marche
on coche une premi=E8re fois =E7a marche pas
on d=E9coche =E7a marche
on coche une deuxi=E8me fois =E7a marche
et tout =E7a alors qu'aucun crit=E8re n'est rentr=E9 =E0 aucun moment.

J'ai v=E9rifi=E9 :

- Ces deux entr=E9es n'ont aucune diff=E9rence avec les autres, elles
n'ont aucune similitude entre elles, ce qui veut dire que ce sont des
entr=E9es banales qui sont touch=E9es

- J'ai plus ou moins constat=E9 que ce bug touchait des entr=E9es au
hasard. Cependant lorsqu'elles sont touch=E9s, elle le sont pour la vie,
(tout le temps o=F9 elle sont pr=E9sentes dans la base). En cons=E9quence
si je referme mon formulaire et que je le r=E9ouvre, ce sont toujours
les m=EAme entr=E9es qui disparaissent.

Ma question :

Serait-ce un probl=E8me d'indexiation ? Comment puis-je forcer la
relecture de la base autrement qu'avec un requery ?

Solution barbare : Est il possible de simuler un "cochage d=E9cochage"
=E0 l'ouverture du formulaire.

Merci =E0 tous si vous avez lu jusque l=E0,
Merci pour l'attention que vous me porter,

Si il y a un =E9l=E9ment qui manque dans mon explication je vous
renseignerai illico...

GDUBOIS

_______________________________________

PS : J'ai cherch=E9 pendant des lustres comment faire une recherche
multicrit=E8re de mani=E8re simple. La m=E9thode de caf=E9ine m'a sembl=E9
la plus simple... en fait non. Je vous donne ce que j'ai finalement
trouv=E9 apr=E8s des semaines de recherche.

Mettre (Comme "*" & [Forms]![MonForm][MonChamp] & "*") sans les
parenth=E8ses en tant que crit=E8re dans une requ=EAte bien =E0 part que
vous appelez comme vous voulez, d'o=F9 vous voulez, quand vous voulez.
Vous pouvez mutliplier les criti=E8res et les champs =E0 l'infini : tous
sera interd=E9pendant ou d=E9pendant ou ind=E9pendant... bref tout sera
souple.

2 réponses

Avatar
pascal
Bonjour,

as tu essayer de modifier directement la requete source par rapport aux
critéres ensuite tu fais un requery du controle et si tu n'as pas tout
c'est qu'il ya un soucis au niveau des critéres de la requete.

Mais je ne connais pas le début donc si tu pouvais me détailler les
critéres de la requete .

voila a+
pascal



wrote:
Bonjour à tous,

Je continu de développer vaillament ma base avec votre aide à tous et
je vous en remercie. Seulement là sèche...

Mon formulaire buggé est calqué point par point sur celui de
caféine. (http://cafeine.developpez.com/access/tutoriel/recherchemulti
- méthode que je ne vous recommande guère après avoir vu tout ce qui
cela peut engendrer comme problème.)

Mon bug :

- J'ouvre mon formulaire
- Toute ma liste est là, pas de problème
- Je coche filtre par mois sans rentrer de critères (un champ vide
indépendant est apparu)
- Et à ce moment là : dans ma liste deux entrées ont disparus alors
que n'ai rien filtré!
- Si je décoche (que je reviens à la situation du formulaire lors de
son lancement), tout va bien
- Si je recoche une nouvelle fois, mes entrées sont là, tout va bien.

Autrement dit :

on a rien coché ça marche
on coche une première fois ça marche pas
on décoche ça marche
on coche une deuxième fois ça marche
et tout ça alors qu'aucun critère n'est rentré à aucun moment.

J'ai vérifié :

- Ces deux entrées n'ont aucune différence avec les autres, elles
n'ont aucune similitude entre elles, ce qui veut dire que ce sont des
entrées banales qui sont touchées

- J'ai plus ou moins constaté que ce bug touchait des entrées au
hasard. Cependant lorsqu'elles sont touchés, elle le sont pour la vie,
(tout le temps où elle sont présentes dans la base). En conséquence
si je referme mon formulaire et que je le réouvre, ce sont toujours
les même entrées qui disparaissent.

Ma question :

Serait-ce un problème d'indexiation ? Comment puis-je forcer la
relecture de la base autrement qu'avec un requery ?

Solution barbare : Est il possible de simuler un "cochage décochage"
à l'ouverture du formulaire.

Merci à tous si vous avez lu jusque là,
Merci pour l'attention que vous me porter,

Si il y a un élément qui manque dans mon explication je vous
renseignerai illico...

GDUBOIS

_______________________________________

PS : J'ai cherché pendant des lustres comment faire une recherche
multicritère de manière simple. La méthode de caféine m'a sembl é
la plus simple... en fait non. Je vous donne ce que j'ai finalement
trouvé après des semaines de recherche.

Mettre (Comme "*" & [Forms]![MonForm][MonChamp] & "*") sans les
parenthèses en tant que critère dans une requête bien à part que
vous appelez comme vous voulez, d'où vous voulez, quand vous voulez.
Vous pouvez mutliplier les critières et les champs à l'infini : tous
sera interdépendant ou dépendant ou indépendant... bref tout sera
souple.


Avatar
dubois.g
Si j'ai bien compris ta suggestion, je crois que c'est exactement ce
que fais mon formulaire.

De manière shématique j'ai ça :

8 case à cocher
8 champs indépendants qui contiennent mes critères
Un code VBA qui contient ma requête

Le code VBA fait le test suivant pour chaque binôme case à cocher /
champ :

If Me.CaseACocher Then
SQL = SQL & "And maTable!maColonne LIKE '*" & Me.monChamp & "*' "
End If
If Me...

La requête se construit bloc par bloc en fonction de ce qui est
coché. Il n'y a aucun problème sur ça.

A la fin du code VBA j'ai :

Me.lstResults.requery

Je fais donc tout bien comme tu le dis.

Ce que je trouve étonnant c'est que lorsque l'on coche une première
fois, ça ne marche pas (deux lignes manquent sans aucune raison),
lorsque je décoche ces deux lignes reviennent et lorsque je coche une
deuxième fois cela marche.

J'en déduis donc que ce n'est pas la requête qui bug puisqu'elle est
capable de filtrer correctement.

Pour le détail de mes critères les voici :

Rien n'est coché sauf un critère. C'est un peu compliqué :

La case qui est coché rend visible deux champs, le mois et l'année.
En fonction de ce qui est coché dans une option box on filtre soit les
entrées soit les décaissements (bref).

Tous les deux sont des combo box. Voici le code que j'ai inséré dans
VBA pour faire le filtrage :

If Me.chkMoisAn Then
If Me.optDate = 1 Then
SQL = SQL & "And tblADP!MoisEntrée LIKE '*" & Me.cmbMois & "*'
"
SQL = SQL & "And tblADP!AnnéeEntrée LIKE '*" & Me.txtAnnée &
"*' "
ElseIf Me.optDate = 2 Then
SQL = SQL & "And tblADP!MoisDécaissement LIKE '*" &
Me.cmbMois2 & "*' "
SQL = SQL & "And tblADP!AnnéeDécaissement LIKE '*" &
Me.txtAnnée2 & "*' "
Else
End If
End If

J'insiste sur le fait qu'au deuxième "cochage", la requête fait
parfaitement son boulot.

Merci pour ton aide,

GDUBOIS