OVH Cloud OVH Cloud

Critère dans requête

8 réponses
Avatar
Domi
Bonjour à toutes et tous,

Une requête(graphique) qryPublipostage basée sur une table tblClients et un
formulaire permettant de filtrer les enregistrements selon divers critères.

La table Clients possèdent 2 champs de type Oui/Non PubliPostage et
PubliInternet qui peuvent être remplis indistinctement.

Des clients peuvent donc avoir les 2 champs à Oui.

La requête Publipostage n'affiche que les clients dont le champ PubliPostage
est Oui.

Ce que je cherche, c'est avec une case à cocher sur le formulaire, pouvoir
inclure ou exclure les clients qui ont également le champ PubliInternet à Oui
(et non pas afficher les uns ou les autres).

J'espère avoir été assez clair...

Merci pour votre aide.

Domi

8 réponses

Avatar
Eric
Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub

Bonjour à toutes et tous,

Une requête(graphique) qryPublipostage basée sur une table tblClients et un
formulaire permettant de filtrer les enregistrements selon divers critères.

La table Clients possèdent 2 champs de type Oui/Non PubliPostage et
PubliInternet qui peuvent être remplis indistinctement.

Des clients peuvent donc avoir les 2 champs à Oui.

La requête Publipostage n'affiche que les clients dont le champ PubliPostage
est Oui.

Ce que je cherche, c'est avec une case à cocher sur le formulaire, pouvoir
inclure ou exclure les clients qui ont également le champ PubliInternet à Oui
(et non pas afficher les uns ou les autres).

J'espère avoir été assez clair...

Merci pour votre aide.

Domi


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Domi
Bonjour et merci Eric,

Effectivement, la requête est bien telle que tu la décris. La valeur de
PubliInternet n'est pas testée.

J'ai essayé ton code, mais cela visiblement, il reste sans effet.

Je dis bien "visiblement, car immédiatement après, j'exécute Me.requery pour
remettre la liste affichant les clients sélectionnés à jour. Cela
annulerait-il le filtre ?

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...

Je continue à chercher.

Domi


Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub

Bonjour à toutes et tous,

Une requête(graphique) qryPublipostage basée sur une table tblClients et un
formulaire permettant de filtrer les enregistrements selon divers critères.

La table Clients possèdent 2 champs de type Oui/Non PubliPostage et
PubliInternet qui peuvent être remplis indistinctement.

Des clients peuvent donc avoir les 2 champs à Oui.

La requête Publipostage n'affiche que les clients dont le champ PubliPostage
est Oui.

Ce que je cherche, c'est avec une case à cocher sur le formulaire, pouvoir
inclure ou exclure les clients qui ont également le champ PubliInternet à Oui
(et non pas afficher les uns ou les autres).

J'espère avoir été assez clair...

Merci pour votre aide.

Domi


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?

...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...





Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Domi
Re,

Je n'exécute pas d'autre action que de passer des critères à la requête, du
style [Formulaires]![formPublipostage]![LimiteAchats] dans le champ
"Critères" que je veux évaluer.

Et dans le formulaire, j'ai une zone de liste qui affiche le résultat de la
requête et qui est rafraîchit après chaque changement des valeurs passées à
la requête.

Domi


re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?

...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...





Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Eric
re,

Si je comprends bien, tu reconstruis le sql de la zone de liste alors ?
Dans ce cas, tu peux faire un truc du genre:
Private Sub chkInternet_AfterUpdate()
Dim strsql As String
' au départ le sql de la requête - Adapter
strsql = "select * from latable where PubliPostage =true"
If chkInternet.Value = -1 Then ' critere supplémentaire
strsql = strsql & " and PubliInternetúlse"
End If
Me.Liste0.RowSource = strsql
Me.Liste0.Requery
End Sub

Re,

Je n'exécute pas d'autre action que de passer des critères à la requête, du
style [Formulaires]![formPublipostage]![LimiteAchats] dans le champ
"Critères" que je veux évaluer.

Et dans le formulaire, j'ai une zone de liste qui affiche le résultat de la
requête et qui est rafraîchit après chaque changement des valeurs passées à
la requête.

Domi



re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?


...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...





Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Domi
Merci, je vais tester ça ce week-end...

Par contre, si tu as une explication.

J'ai essayé de faire avec une simpe condition VraiFaux dans ma requête, soit :

VraiFaux([Formulaires]![formPubliPostage]![CPubliInternet]=0;-1 Ou 0)

Et bien cela ne fonctionne pas, il ne renvoie que les enregistrements dont
la valeur est vraie. Alors que -1 ou 0 tout seul renvoie bien la totalité des
enregistrements ???

Je ne comprend pas trop bien ;-((

Merci encore pour ton aide

Domi


re,

Si je comprends bien, tu reconstruis le sql de la zone de liste alors ?
Dans ce cas, tu peux faire un truc du genre:
Private Sub chkInternet_AfterUpdate()
Dim strsql As String
' au départ le sql de la requête - Adapter
strsql = "select * from latable where PubliPostage =true"
If chkInternet.Value = -1 Then ' critere supplémentaire
strsql = strsql & " and PubliInternetúlse"
End If
Me.Liste0.RowSource = strsql
Me.Liste0.Requery
End Sub

Re,

Je n'exécute pas d'autre action que de passer des critères à la requête, du
style [Formulaires]![formPublipostage]![LimiteAchats] dans le champ
"Critères" que je veux évaluer.

Et dans le formulaire, j'ai une zone de liste qui affiche le résultat de la
requête et qui est rafraîchit après chaque changement des valeurs passées à
la requête.

Domi



re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?


...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...





Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







Avatar
Eric
Bonsoir,

La syntaxe de ton VraiFaux() n'est pas bonne.
Si tu veux faire une condition avec VraiFaux(), tu dois mettre sur le
champ PubliInternet en critere:
{Pour mémoire - Syntaxe : VraiFaux(Test_logique;ValeurSiVrai;ValeurSiFaux)}

VraiFaux([Formulaires]![formPubliPostage]![CPubliInternet]=0;[PubliInternet];-1)
ce qui signifie:
Si le controle CPubliInternet du formulaire n'est pas coché, alors tu
acceptes toutes les valeurs de PubliInternet (0 ou -1 puisque booléen)
sinon que le cas où PubliPostage est Vrai (cad -1)

Ce qui renverra si CPubliInternet n'est pas coché dans le formulaire
tous les enregistrements pour lesquels PubliPostage est coché (de base
dans la requête) peu importe la valeur de PubliInternet, dans le cas
contraire les seuls enregistrements pour lesquels PubliPostage ET
PubliInternet sont VRAI

Merci, je vais tester ça ce week-end...

Par contre, si tu as une explication.

J'ai essayé de faire avec une simpe condition VraiFaux dans ma requête, soit :

VraiFaux([Formulaires]![formPubliPostage]![CPubliInternet]=0;-1 Ou 0)

Et bien cela ne fonctionne pas, il ne renvoie que les enregistrements dont
la valeur est vraie. Alors que -1 ou 0 tout seul renvoie bien la totalité des
enregistrements ???

Je ne comprend pas trop bien ;-((

Merci encore pour ton aide

Domi



re,

Si je comprends bien, tu reconstruis le sql de la zone de liste alors ?
Dans ce cas, tu peux faire un truc du genre:
Private Sub chkInternet_AfterUpdate()
Dim strsql As String
' au départ le sql de la requête - Adapter
strsql = "select * from latable where PubliPostage =true"
If chkInternet.Value = -1 Then ' critere supplémentaire
strsql = strsql & " and PubliInternetúlse"
End If
Me.Liste0.RowSource = strsql
Me.Liste0.Requery
End Sub


Re,

Je n'exécute pas d'autre action que de passer des critères à la requête, du
style [Formulaires]![formPublipostage]![LimiteAchats] dans le champ
"Critères" que je veux évaluer.

Et dans le formulaire, j'ai une zone de liste qui affiche le résultat de la
requête et qui est rafraîchit après chaque changement des valeurs passées à
la requête.

Domi




re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?



...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...






Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Domi
Bonjour Eric,

Ca marche super. En modifiant les critères, je peut également inclure ou
exclure les enregistrements désirés.

Un grand merci pour ton aide.

Domi


Bonsoir,

La syntaxe de ton VraiFaux() n'est pas bonne.
Si tu veux faire une condition avec VraiFaux(), tu dois mettre sur le
champ PubliInternet en critere:
{Pour mémoire - Syntaxe : VraiFaux(Test_logique;ValeurSiVrai;ValeurSiFaux)}

VraiFaux([Formulaires]![formPubliPostage]![CPubliInternet]=0;[PubliInternet];-1)
ce qui signifie:
Si le controle CPubliInternet du formulaire n'est pas coché, alors tu
acceptes toutes les valeurs de PubliInternet (0 ou -1 puisque booléen)
sinon que le cas où PubliPostage est Vrai (cad -1)

Ce qui renverra si CPubliInternet n'est pas coché dans le formulaire
tous les enregistrements pour lesquels PubliPostage est coché (de base
dans la requête) peu importe la valeur de PubliInternet, dans le cas
contraire les seuls enregistrements pour lesquels PubliPostage ET
PubliInternet sont VRAI

Merci, je vais tester ça ce week-end...

Par contre, si tu as une explication.

J'ai essayé de faire avec une simpe condition VraiFaux dans ma requête, soit :

VraiFaux([Formulaires]![formPubliPostage]![CPubliInternet]=0;-1 Ou 0)

Et bien cela ne fonctionne pas, il ne renvoie que les enregistrements dont
la valeur est vraie. Alors que -1 ou 0 tout seul renvoie bien la totalité des
enregistrements ???

Je ne comprend pas trop bien ;-((

Merci encore pour ton aide

Domi



re,

Si je comprends bien, tu reconstruis le sql de la zone de liste alors ?
Dans ce cas, tu peux faire un truc du genre:
Private Sub chkInternet_AfterUpdate()
Dim strsql As String
' au départ le sql de la requête - Adapter
strsql = "select * from latable where PubliPostage =true"
If chkInternet.Value = -1 Then ' critere supplémentaire
strsql = strsql & " and PubliInternetúlse"
End If
Me.Liste0.RowSource = strsql
Me.Liste0.Requery
End Sub


Re,

Je n'exécute pas d'autre action que de passer des critères à la requête, du
style [Formulaires]![formPublipostage]![LimiteAchats] dans le champ
"Critères" que je veux évaluer.

Et dans le formulaire, j'ai une zone de liste qui affiche le résultat de la
requête et qui est rafraîchit après chaque changement des valeurs passées à
la requête.

Domi




re,


Si le formulaire est indépendant ça ne fera rien puisque le filtre
s'applique au formulaire !

Comment lances-tu ta requête ?



...

D'autre part, le formulaire lui-même est indépendant. Je ne pense pas que
cela ait une incidence, mais...






Bonjour,

Si j'ai bien compris, ta requête affiche par défaut tous les
enregistrements pour lesquels PubliPostage vaut Oui et quelque soit la
valeur de PubliInternet puisque le critère est seulement sur
PlubliPostage = True (donc inclusion)

Donc si la case à cocher se nomme chkInternet avec pour étiquette Sans
Internet, le code ci-dessous devrait faire l'affaire :

Private Sub chkInternet_AfterUpdate()
Dim strFiltre As String
If chkInternet.Value = -1 Then 'pour exclusion internet
strFiltre = "PubliInternet = False"
Me.Filter = strFiltre
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr