OVH Cloud OVH Cloud

soucis access critère conditionnel sur case à cocher

9 réponses
Avatar
drazou
Bonjour tout le monde

Tout d'abord je tiens à vous féliciter pour ce site, en particulier la section entraide. Ca fait quelques jours que je bidouille sur access et j'ai deja trouvé pas mal de réponses à mes questions ici.

Alors voici mon problème:

Jai une base de données assez dense comportant de nombreuses tables et requetes mais c est un petit formulaire de rien du tout qui me bloque. Ce formulaire simple permet d'entrer dans un champ la valeur de l'année et dans un autre jai une liste déroulante qui permet de selectionner un pays. Ensuite lorsque j'appuie sur mon beau bouton, ca lance une requete et ca ouvrir l'état avec les informations séléctionnées.
Ca marche très bien. J'entend un ouf de soulagement des modos qui n'aurons pas à expliquer pour la cent millieme fois comment marche une liste déroulante :D

Cest maintenant que ca se corse, jai ajouté une case à cocher: voir tous les pays. Je veux que si elle est vrai, l'état affiche tous les pays en fonction de l'année. J'ai créé une requete bis sans le critère pays et un état bis qui l'utilise. Cest lorsque j'appuie sur le bouton que ca choisit la requete 1 ou bis en fonction de la case à cocher.
Ca aussi ca marche impec! ba c est quoi le soucis alors?

Le soucis c est que jai 25 autres petits formulaires auquels je voudrais ajouter cette option et que recréer une requete et un etat a chaque fois cest long et ca surcharge la base.

Donc voila j'aimerais savoir si je ne peux pas utiliser la meme requete pour les deux (et donc aussi le meme état), avec un critere pays a vérifier que si la case à cocher=Vrai
Le tout sans passer par du vba si possible et je suis sous access97... lol

Si vous etes arrivés jusque la, deja merci ^^ et j'attend avec impatience vos réponses,
bonne journée, draz

9 réponses

Avatar
CAIRIS
Bonjour

Une seule requête et de ce fait un seul état te suffiront si tu filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du texte ou à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....

--
Catherine


"drazou" wrote:

Bonjour tout le monde

Tout d'abord je tiens à vous féliciter pour ce site, en particulier la section
entraide. Ca fait quelques jours que je bidouille sur access et j'ai deja trouvé
pas mal de réponses à mes questions ici.

Alors voici mon problème:

Jai une base de données assez dense comportant de nombreuses tables et requetes
mais c est un petit formulaire de rien du tout qui me bloque. Ce formulaire
simple permet d'entrer dans un champ la valeur de l'année et dans un autre jai
une liste déroulante qui permet de selectionner un pays. Ensuite lorsque
j'appuie sur mon beau bouton, ca lance une requete et ca ouvrir l'état avec les
informations séléctionnées.
Ca marche très bien. J'entend un ouf de soulagement des modos qui n'aurons pas
à expliquer pour la cent millieme fois comment marche une liste déroulante :D

Cest maintenant que ca se corse, jai ajouté une case à cocher: voir tous les
pays. Je veux que si elle est vrai, l'état affiche tous les pays en fonction de
l'année. J'ai créé une requete bis sans le critère pays et un état bis qui
l'utilise. Cest lorsque j'appuie sur le bouton que ca choisit la requete 1 ou
bis en fonction de la case à cocher.
Ca aussi ca marche impec! ba c est quoi le soucis alors?

Le soucis c est que jai 25 autres petits formulaires auquels je voudrais
ajouter cette option et que recréer une requete et un etat a chaque fois cest
long et ca surcharge la base.

Donc voila j'aimerais savoir si je ne peux pas utiliser la meme requete pour
les deux (et donc aussi le meme état), avec un critere pays a vérifier que si la
case à cocher=Vrai
Le tout sans passer par du vba si possible et je suis sous access97... lol

Si vous etes arrivés jusque la, deja merci ^^ et j'attend avec impatience vos
réponses,
bonne journée, draz



Avatar
Fabien
CAIRIS a écrit :
Bonjour

Une seule requête et de ce fait un seul état te suffiront si tu filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du texte ou à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....



salut
Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
selectionné . Dés lors au niveau de l'appel a ton etat tu n'as plus qu'a
créé le bon filtre dans le docmd.openreport monetat,,,moncritere.
Pour ajouter <Tous> dans ta requete initiale d'alimentation de ta liste
tu fais select Nom_pays from matable union select " <Tous>" as Nom_pays
from matable order by nom_pays
En mettant un blanc devant <Tous> tu es sur qu'il sera en tête de liste.
@+
Avatar
drazou
Fabien a écrit le 09/09/2008 à 14h38 :
CAIRIS a écrit :
Bonjour

Une seule requête et de ce fait un seul état te suffiront si tu
filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du texte ou
à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :

iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....




salut
Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
selectionné . Dés lors au niveau de l'appel a ton etat tu n'as
plus qu'a
créé le bon filtre dans le docmd.openreport monetat,,,moncritere.
Pour ajouter <Tous> dans ta requete initiale d'alimentation de ta liste
tu fais select Nom_pays from matable union select " <Tous>" as
Nom_pays
from matable order by nom_pays
En mettant un blanc devant <Tous> tu es sur qu'il sera en tête de
liste.
@+


Rebonjour;

Ca ne marche pas :(
J'ai du faire une erreur ou alors iff n'existait pas encore sous access97

Voila ce que jai rajouté dans ma requete:
_dans une nouvelle colonne de type expression:
Expr1 : iff([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])
et dans le critere de selection des pays:
"Expr1" jai essayé de remettre aussi iff([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])

[code0] correspond au numéro du pays renvoyé par la liste déroulante et [Coche0] la case a cocher. Lorsque je lance la requete un message derreur me dit que l'expression iif n'est pas définie. J'ai fait quelque chose de travers?


Ta solution CAIRIS est intéressant mais on me demande de garder l'option case a cocher.

En continuant de chercher je suis tombé sur la fonction VraiFaux.
En mettant dans le critere de selection de pays:
=VraiFaux([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0] = Vrai;0; [FORMS]![F 238 : Résultat délégation par salon AC]![code0])

ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais pas pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous les pays) le critere devient zéro ce qui ne correspond a aucun pays. Il faudrait que lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne marche pas ^^)

si vous avez des idées je suis prenneur :)
++ draz
Avatar
Fabien
drazou a écrit :
Fabien a écrit le 09/09/2008 à 14h38 :
CAIRIS a écrit :
Bonjour

Une seule requête et de ce fait un seul état te suffiront si tu
filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :






iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du texte ou
à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :






iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....



salut
Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
selectionné . Dés lors au niveau de l'appel a ton etat tu n'as
plus qu'a
créé le bon filtre dans le docmd.openreport monetat,,,moncritere.
Pour ajouter <Tous> dans ta requete initiale d'alimentation de ta liste
tu fais select Nom_pays from matable union select " <Tous>" as
Nom_pays
from matable order by nom_pays
En mettant un blanc devant <Tous> tu es sur qu'il sera en tête de
liste.
@+


Rebonjour;

Ca ne marche pas :(
J'ai du faire une erreur ou alors iff n'existait pas encore sous access97

Voila ce que jai rajouté dans ma requete:
_dans une nouvelle colonne de type expression:
Expr1 : iff([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])
et dans le critere de selection des pays:
"Expr1" jai essayé de remettre aussi iff([FORMS]![F 238 : Résultat
délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par
salon AC]![code0])

[code0] correspond au numéro du pays renvoyé par la liste déroulante et
[Coche0] la case a cocher. Lorsque je lance la requete un message derreur me dit
que l'expression iif n'est pas définie. J'ai fait quelque chose de travers?


Ta solution CAIRIS est intéressant mais on me demande de garder l'option case a
cocher.

En continuant de chercher je suis tombé sur la fonction VraiFaux.
En mettant dans le critere de selection de pays:
=VraiFaux([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0] > Vrai;0; [FORMS]![F 238 : Résultat délégation par salon AC]![code0])

ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais pas
pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous les
pays) le critere devient zéro ce qui ne correspond a aucun pays. Il faudrait que
lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne marche pas ^^)

si vous avez des idées je suis prenneur :)
++ draz


et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0 => on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+
Avatar
CAIRIS
Dans le champ Epr1, il faut que tu mettes :

iif([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;[le
nom du champ Pays de ta requête])

et dans le critere de selection des pays:

iif([FORMS]![F 238 : Résultat délégation par
salonAC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon
AC]![code0])

En ce qui concerne la fonction IIF : tuavais fais une erreur de saisie dans
ta 1ère version => ce n'est pas iff qu'il faut saisir mais iif, iif étant la
version anglaise de la fonction Vraifaux...mais c'est beaucoup plus rapide à
saisir
--
Catherine


"Fabien" wrote:

drazou a écrit :
> Fabien a écrit le 09/09/2008 à 14h38 :
>> CAIRIS a écrit :
>>> Bonjour
>>>
>>> Une seule requête et de ce fait un seul état te suffiront si tu
>>> filtres ta
>>> requête comme suit :
>>> dans un nouveau champ, tu saisis une formule du type :
>>>
>>>
> iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
>>> 0 est à mettre entre guillemets si ton champ Pays est du texte ou
>>> à 0 si
>>> c'est du numérique
>>>
>>> et sur la ligne Critère, tu saisis :
>>>
>>>
> iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....
>>>
>> salut
>> Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
>> selectionné . Dés lors au niveau de l'appel a ton etat tu n'as
>> plus qu'a
>> créé le bon filtre dans le docmd.openreport monetat,,,moncritere.
>> Pour ajouter <Tous> dans ta requete initiale d'alimentation de ta liste
>> tu fais select Nom_pays from matable union select " <Tous>" as
>> Nom_pays
>> from matable order by nom_pays
>> En mettant un blanc devant <Tous> tu es sur qu'il sera en tête de
>> liste.
>> @+
> Rebonjour;
>
> Ca ne marche pas :(
> J'ai du faire une erreur ou alors iff n'existait pas encore sous access97
>
> Voila ce que jai rajouté dans ma requete:
> _dans une nouvelle colonne de type expression:
> Expr1 : iff([FORMS]![F 238 : Résultat délégation par salon
> AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])
> et dans le critere de selection des pays:
> "Expr1" jai essayé de remettre aussi iff([FORMS]![F 238 : Résultat
> délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par
> salon AC]![code0])
>
> [code0] correspond au numéro du pays renvoyé par la liste déroulante et
> [Coche0] la case a cocher. Lorsque je lance la requete un message derreur me dit
> que l'expression iif n'est pas définie. J'ai fait quelque chose de travers?
>
>
> Ta solution CAIRIS est intéressant mais on me demande de garder l'option case a
> cocher.
>
> En continuant de chercher je suis tombé sur la fonction VraiFaux.
> En mettant dans le critere de selection de pays:
> =VraiFaux([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0] > > Vrai;0; [FORMS]![F 238 : Résultat délégation par salon AC]![code0])
>
> ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais pas
> pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous les
> pays) le critere devient zéro ce qui ne correspond a aucun pays. Il faudrait que
> lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne marche pas ^^)
>
> si vous avez des idées je suis prenneur :)
> ++ draz
et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0 => on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+



Avatar
drazou
CAIRIS a écrit le 09/09/2008 à 18h48 :
Dans le champ Epr1, il faut que tu mettes :

iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[le
nom du champ Pays de ta requête])

et dans le critere de selection des pays:

iif([FORMS]![F 238 : Résultat délégation par
salonAC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon
AC]![code0])

En ce qui concerne la fonction IIF : tuavais fais une erreur de saisie dans
ta 1ère version => ce n'est pas iff qu'il faut saisir mais iif, iif
étant la
version anglaise de la fonction Vraifaux...mais c'est beaucoup plus rapide
à
saisir
--
Catherine


"Fabien" wrote:

drazou a écrit :
> Fabien a écrit le 09/09/2008 à 14h38 :
>> CAIRIS a écrit :
>>> Bonjour
>>>
>>> Une seule requête et de ce fait un seul état te
suffiront si tu
>>> filtres ta
>>> requête comme suit :
>>> dans un nouveau champ, tu saisis une formule du type :
>>>
>>>
>
iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
>>> 0 est à mettre entre guillemets si ton champ Pays est du
texte ou
>>> à 0 si
>>> c'est du numérique
>>>
>>> et sur la ligne Critère, tu saisis :
>>>
>>>
>
iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....
>>>
>> salut
>> Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
>> selectionné . Dés lors au niveau de l'appel a ton etat
tu n'as
>> plus qu'a
>> créé le bon filtre dans le docmd.openreport
monetat,,,moncritere.
>> Pour ajouter <Tous> dans ta requete initiale d'alimentation de
ta liste
>> tu fais select Nom_pays from matable union select "
<Tous>" as
>> Nom_pays
>> from matable order by nom_pays
>> En mettant un blanc devant <Tous> tu es sur qu'il sera en
tête de
>> liste.
>> @+
> Rebonjour;
>
> Ca ne marche pas :(
> J'ai du faire une erreur ou alors iff n'existait pas encore sous access97
>
> Voila ce que jai rajouté dans ma requete:
> _dans une nouvelle colonne de type expression:
> Expr1 : iff([FORMS]![F 238 : Résultat
délégation par salon
> AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
> et dans le critere de selection des pays:
> "Expr1" jai essayé de remettre aussi
iff([FORMS]![F 238 : Résultat
> délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 :
Résultat délégation par
> salon AC]![code0])
>
> [code0] correspond au numéro du pays renvoyé par la liste
déroulante et
> [Coche0] la case a cocher. Lorsque je lance la requete un message derreur
me dit
> que l'expression iif n'est pas définie. J'ai fait quelque chose de
travers?
>
>
> Ta solution CAIRIS est intéressant mais on me demande de garder
l'option case a
> cocher.
>
> En continuant de chercher je suis tombé sur la fonction VraiFaux.
> En mettant dans le critere de selection de pays:
> =VraiFaux([FORMS]![F 238 : Résultat délégation par
salon AC]![Cocher0] > > Vrai;0; [FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
>
> ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais
pas
> pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous
les
> pays) le critere devient zéro ce qui ne correspond a aucun pays.
Il faudrait que
> lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne
marche pas ^^)
>
> si vous avez des idées je suis prenneur :)
> ++ draz
et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0
=> on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+






Bonjour le compagnie
Il fait super moche ici a paris mais je sens qu'on va y arriver! :)

Fabien, c est exactement ce que je veux faire mais j'aimerais éviter de passer par le vba. Ca serait dingue que je puisse pas le faire direct dans le requete.

Catherine avec ta méthode ca me refait la meme chose qu'hier avec le VraiFaux. Et vous avez raison javais rater une lettre hier. En mettant ca dans le critere:

iif([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])

ca me filtre bien par pays quand cocher0úux mais lorsque cocher0=Vrai (ce qui correspond a -1 si jai bien compris) mon état est vide :(

Dans l'expression jai mis:
iif([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;***)

jai testé en remplacant *** par : [code délégation] ou [FORMS]![F 238 : Résultat délégation par salon AC]![code0] ect... mais rien a faire...

Bref voila ca me stresse!

Je crois que jy arriverai pas tant que j'aurai pas compris a quoi sert l'expression. Quand est ce que je l'utilise? J'ai mon critère conditionnel pour le champ [code délégation] mais il n'utilise jamais expr1? Ou alors expr1 servirai pour afficher dans l'état mais le code délégation c'est "juste" la clée primaire de ma table délégation, je l'utilise seulement comme filtre pas pour l'afficher. Bref je nage complétement la.

Je vous remercie de vous intéresser à mon cas, a bientot :)
Avatar
Fabien
drazou a écrit :
CAIRIS a écrit le 09/09/2008 à 18h48 :
Dans le champ Epr1, il faut que tu mettes :

iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[le
nom du champ Pays de ta requête])

et dans le critere de selection des pays:

iif([FORMS]![F 238 : Résultat délégation par
salonAC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon
AC]![code0])

En ce qui concerne la fonction IIF : tuavais fais une erreur de saisie dans
ta 1ère version => ce n'est pas iff qu'il faut saisir mais iif, iif
étant la
version anglaise de la fonction Vraifaux...mais c'est beaucoup plus rapide
à
saisir
--
Catherine


"Fabien" wrote:

drazou a écrit :
Fabien a écrit le 09/09/2008 à 14h38 :
CAIRIS a écrit :
Bonjour

Une seule requête et de ce fait un seul état te






suffiront si tu
filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :












iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du






texte ou
à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :












iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....
salut
Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
selectionné . Dés lors au niveau de l'appel a ton etat




tu n'as
plus qu'a
créé le bon filtre dans le docmd.openreport




monetat,,,moncritere.
Pour ajouter <Tous> dans ta requete initiale d'alimentation de




ta liste
tu fais select Nom_pays from matable union select "




<Tous>" as
Nom_pays
from matable order by nom_pays
En mettant un blanc devant <Tous> tu es sur qu'il sera en




tête de
liste.
@+


Rebonjour;

Ca ne marche pas :(
J'ai du faire une erreur ou alors iff n'existait pas encore sous access97

Voila ce que jai rajouté dans ma requete:
_dans une nouvelle colonne de type expression:
Expr1 : iff([FORMS]![F 238 : Résultat


délégation par salon
AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat


délégation par salon AC]![code0])
et dans le critere de selection des pays:
"Expr1" jai essayé de remettre aussi


iff([FORMS]![F 238 : Résultat
délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 :


Résultat délégation par
salon AC]![code0])

[code0] correspond au numéro du pays renvoyé par la liste


déroulante et
[Coche0] la case a cocher. Lorsque je lance la requete un message derreur


me dit
que l'expression iif n'est pas définie. J'ai fait quelque chose de


travers?

Ta solution CAIRIS est intéressant mais on me demande de garder


l'option case a
cocher.

En continuant de chercher je suis tombé sur la fonction VraiFaux.
En mettant dans le critere de selection de pays:
=VraiFaux([FORMS]![F 238 : Résultat délégation par


salon AC]![Cocher0] > > Vrai;0; [FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais


pas
pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous


les
pays) le critere devient zéro ce qui ne correspond a aucun pays.


Il faudrait que
lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne


marche pas ^^)
si vous avez des idées je suis prenneur :)
++ draz


et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0
=> on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+






Bonjour le compagnie
Il fait super moche ici a paris mais je sens qu'on va y arriver! :)

Fabien, c est exactement ce que je veux faire mais j'aimerais éviter de passer
par le vba. Ca serait dingue que je puisse pas le faire direct dans le requete.

Catherine avec ta méthode ca me refait la meme chose qu'hier avec le VraiFaux.
Et vous avez raison javais rater une lettre hier. En mettant ca dans le critere:


iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat délégation par salon AC]![code0])

ca me filtre bien par pays quand cocher0úux mais lorsque cocher0=Vrai (ce qui
correspond a -1 si jai bien compris) mon état est vide :(

Dans l'expression jai mis:
iif([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;0;***)

jai testé en remplacant *** par : [code délégation] ou [FORMS]![F 238 :
Résultat délégation par salon AC]![code0] ect... mais rien a faire...

Bref voila ca me stresse!

Je crois que jy arriverai pas tant que j'aurai pas compris a quoi sert
l'expression. Quand est ce que je l'utilise? J'ai mon critère conditionnel pour
le champ [code délégation] mais il n'utilise jamais expr1? Ou alors expr1
servirai pour afficher dans l'état mais le code délégation c'est "juste" la clée
primaire de ma table délégation, je l'utilise seulement comme filtre pas pour
l'afficher. Bref je nage complétement la.

Je vous remercie de vous intéresser à mon cas, a bientot :)


Salut,

Avec la version de Cath
essaye
Ajoute un champ OK:iif(blabla.[cocher0];true;balabla![Code0]=[CodePays])
et tu test le champ = True
En clair si la case est cochée alors OK et toujours vrai sinon Ok est
fonction du test sur le code pays
@+
Avatar
drazou
CAIRIS a écrit le 09/09/2008 à 18h48 :
Dans le champ Epr1, il faut que tu mettes :

iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[le
nom du champ Pays de ta requête])

et dans le critere de selection des pays:

iif([FORMS]![F 238 : Résultat délégation par
salonAC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon
AC]![code0])

En ce qui concerne la fonction IIF : tuavais fais une erreur de saisie dans
ta 1ère version => ce n'est pas iff qu'il faut saisir mais iif, iif
étant la
version anglaise de la fonction Vraifaux...mais c'est beaucoup plus rapide
à
saisir
--
Catherine


"Fabien" wrote:

drazou a écrit :
> Fabien a écrit le 09/09/2008 à 14h38 :
>> CAIRIS a écrit :
>>> Bonjour
>>>
>>> Une seule requête et de ce fait un seul état te
suffiront si tu
>>> filtres ta
>>> requête comme suit :
>>> dans un nouveau champ, tu saisis une formule du type :
>>>
>>>
>
iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
>>> 0 est à mettre entre guillemets si ton champ Pays est du
texte ou
>>> à 0 si
>>> c'est du numérique
>>>
>>> et sur la ligne Critère, tu saisis :
>>>
>>>
>
iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....
>>>
>> salut
>> Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
>> selectionné . Dés lors au niveau de l'appel a ton etat
tu n'as
>> plus qu'a
>> créé le bon filtre dans le docmd.openreport
monetat,,,moncritere.
>> Pour ajouter <Tous> dans ta requete initiale d'alimentation de
ta liste
>> tu fais select Nom_pays from matable union select "
<Tous>" as
>> Nom_pays
>> from matable order by nom_pays
>> En mettant un blanc devant <Tous> tu es sur qu'il sera en
tête de
>> liste.
>> @+
> Rebonjour;
>
> Ca ne marche pas :(
> J'ai du faire une erreur ou alors iff n'existait pas encore sous access97
>
> Voila ce que jai rajouté dans ma requete:
> _dans une nouvelle colonne de type expression:
> Expr1 : iff([FORMS]![F 238 : Résultat
délégation par salon
> AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
> et dans le critere de selection des pays:
> "Expr1" jai essayé de remettre aussi
iff([FORMS]![F 238 : Résultat
> délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 :
Résultat délégation par
> salon AC]![code0])
>
> [code0] correspond au numéro du pays renvoyé par la liste
déroulante et
> [Coche0] la case a cocher. Lorsque je lance la requete un message derreur
me dit
> que l'expression iif n'est pas définie. J'ai fait quelque chose de
travers?
>
>
> Ta solution CAIRIS est intéressant mais on me demande de garder
l'option case a
> cocher.
>
> En continuant de chercher je suis tombé sur la fonction VraiFaux.
> En mettant dans le critere de selection de pays:
> =VraiFaux([FORMS]![F 238 : Résultat délégation par
salon AC]![Cocher0] > > Vrai;0; [FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
>
> ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais
pas
> pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous
les
> pays) le critere devient zéro ce qui ne correspond a aucun pays.
Il faudrait que
> lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne
marche pas ^^)
>
> si vous avez des idées je suis prenneur :)
> ++ draz
et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0
=> on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+






Hello

C'est encore moi :)

ca y est ca marche!!! yataaaaaaaaaa

J'ai trouvé la réponse de Fabien ici:
http://www.niouzes.org/microsoft-public-access/291662-soucis-access-critere-conditionnel-sur-case-cocher.html

Ce site reprend les posts de votre site mais sans passer par le controle modo, alors ca va plus vite :p

Créer une expression de test a part marche nickel
jai mis: iif([FORMS]![F 238 : Résultat délégation par salon AC]![Cocher0]=-1;Vrai;iif([FORMS]![F 238 : Résultat délégation par salon AC]![code0]=[code délégation];Vrai))

Merci beaucoup a vous deux pour la gentillesse et le temps passé. Je vais pouvoir poursuivre mes aventures sur access.
A bientot
Avatar
Fabien
drazou a écrit :
CAIRIS a écrit le 09/09/2008 à 18h48 :
Dans le champ Epr1, il faut que tu mettes :

iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;0;[le
nom du champ Pays de ta requête])

et dans le critere de selection des pays:

iif([FORMS]![F 238 : Résultat délégation par
salonAC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat
délégation par salon
AC]![code0])

En ce qui concerne la fonction IIF : tuavais fais une erreur de saisie dans
ta 1ère version => ce n'est pas iff qu'il faut saisir mais iif, iif
étant la
version anglaise de la fonction Vraifaux...mais c'est beaucoup plus rapide
à
saisir
--
Catherine


"Fabien" wrote:

drazou a écrit :
Fabien a écrit le 09/09/2008 à 14h38 :
CAIRIS a écrit :
Bonjour

Une seule requête et de ce fait un seul état te






suffiront si tu
filtres ta
requête comme suit :
dans un nouveau champ, tu saisis une formule du type :












iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCaseACocher]=-1;"0;[LeNomduChampPaysdeLaRequête])....Le
0 est à mettre entre guillemets si ton champ Pays est du






texte ou
à 0 si
c'est du numérique

et sur la ligne Critère, tu saisis :












iif([Forms]![LeNomDuFormulaires]![LeNomDeLaCasACocher]=-1;"0";[forms]![LeNomDuFormulaires]![LeNomduChampDeSélectionDuPays])....
salut
Tu peux aussi ajouter <Tous> dans ta liste et tester s'il est
selectionné . Dés lors au niveau de l'appel a ton etat




tu n'as
plus qu'a
créé le bon filtre dans le docmd.openreport




monetat,,,moncritere.
Pour ajouter <Tous> dans ta requete initiale d'alimentation de




ta liste
tu fais select Nom_pays from matable union select "




<Tous>" as
Nom_pays
from matable order by nom_pays
En mettant un blanc devant <Tous> tu es sur qu'il sera en




tête de
liste.
@+


Rebonjour;

Ca ne marche pas :(
J'ai du faire une erreur ou alors iff n'existait pas encore sous access97

Voila ce que jai rajouté dans ma requete:
_dans une nouvelle colonne de type expression:
Expr1 : iff([FORMS]![F 238 : Résultat


délégation par salon
AC]![Cocher0]=-1;0;[FORMS]![F 238 : Résultat


délégation par salon AC]![code0])
et dans le critere de selection des pays:
"Expr1" jai essayé de remettre aussi


iff([FORMS]![F 238 : Résultat
délégation par salon AC]![Cocher0]=-1;0;[FORMS]![F 238 :


Résultat délégation par
salon AC]![code0])

[code0] correspond au numéro du pays renvoyé par la liste


déroulante et
[Coche0] la case a cocher. Lorsque je lance la requete un message derreur


me dit
que l'expression iif n'est pas définie. J'ai fait quelque chose de


travers?

Ta solution CAIRIS est intéressant mais on me demande de garder


l'option case a
cocher.

En continuant de chercher je suis tombé sur la fonction VraiFaux.
En mettant dans le critere de selection de pays:
=VraiFaux([FORMS]![F 238 : Résultat délégation par


salon AC]![Cocher0] > > Vrai;0; [FORMS]![F 238 : Résultat
délégation par salon AC]![code0])
ca ne bug pas, et ca marche meme pour la consultation d'un seul pays mais


pas
pour tous en meme temps. Je crois que lorsque [Cocher0]=Vrai (voir tous


les
pays) le critere devient zéro ce qui ne correspond a aucun pays.


Il faudrait que
lorsque [Cocher0]=Vrai, le critère soit du vide. ("" ne


marche pas ^^)
si vous avez des idées je suis prenneur :)
++ draz


et comme ça ;-)
Sub Bouton_click()
'si Cocher0 est faux alors on créé Monfiltre : [code pays]=code0
=> on
imprime que pour ce code pays
'Sinon Monfiltre reste vide => on imprime tout

dim monfiltre as string
MonFiltre=""
If not(me.cocher0) then
Monfiltre="[CodePays]=" & me.code0
end if
Docmd.openreport "Monetat",,,MonFiltre
End if
Ps : iff n'existe pas mais iif oui ;-)
@+






Hello

C'est encore moi :)

ca y est ca marche!!! yataaaaaaaaaa

J'ai trouvé la réponse de Fabien ici:
http://www.niouzes.org/microsoft-public-access/291662-soucis-access-critere-conditionnel-sur-case-cocher.html

Ce site reprend les posts de votre site mais sans passer par le controle modo,
alors ca va plus vite :p

Créer une expression de test a part marche nickel
jai mis: iif([FORMS]![F 238 : Résultat délégation par salon
AC]![Cocher0]=-1;Vrai;iif([FORMS]![F 238 : Résultat délégation par salon
AC]![code0]=[code délégation];Vrai))

Merci beaucoup a vous deux pour la gentillesse et le temps passé. Je vais
pouvoir poursuivre mes aventures sur access.
A bientot


Merci du retour
Bonne continuation