OVH Cloud OVH Cloud

Argument de Requête (Bis)

19 réponses
Avatar
RaphK34
Bonjour,

Je reviends à vous sur un problème que je n'ai toujours pas réussi à
résoudre !

Soit un argument de recherche dans un formulaire.

Je voudrais que lorsque l'argument est vierge la requête ne fasse aucune
restriction, c'est à dire qu'elle me donne toutes les lignes de ma table y
compris les Null
Lorsque l'argument n'est pas vierge (ie argument = "ABC"), je cherche à ce
que la requête me renvoie tous les enregistrements qui contiennent le mot
"ABC", c'est à dire ABC ABCD XABC, ... , et pas les Null
J'ai donc essayé (sans succès :( )une requête ayant pour argument:

like"*" & Argument & "*"

mais si l'argument est vierge je n'ai que les enregistrements Not Null, en
fait, avec cette syntaxe, je n'ai jamais les Null !

--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
nospampizza.mpl@tiscali.fr en enlevant nospam.
--------------------------------------------

9 réponses

1 2
Avatar
Eric
.../...
Remplacer ville par Etge évidemment, c'est un reste du copier-coller et
modifier le nom formulaire1 par F1.

;-)

Eric

Eric écrivait
news::

Bonjour RaphK34,

essaie ceci :

SELECT TClient.Etge
FROM TClient
WHERE IIf(IsNull([Formulaires]![Formulaire1]![ETGER]),isnull
((TClient.Etge)) or ville like "*",(TClient.Etge) like "*" &
[Formulaires]! [Formulaire1]![ETGER] & "*");

Tiens moi au courant.

A+
Eric


Avatar
RaphK34
Merci, tu es un GENI !!!

En effet ça marche parfaitement, mais maintenant il va falloir que je
comprenne car je te laisse imaginer qu'il y en a des conditions !!!

Merci beaucoup, maintenant je vais pouvoir avancer !!!

--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------



"Eric" a écrit dans le message de news:

| .../...
| Remplacer ville par Etge évidemment, c'est un reste du copier-coller et
| modifier le nom formulaire1 par F1.
|
| ;-)
|
| Eric
|
| Eric écrivait
| news::
|
| > Bonjour RaphK34,
| >
| > essaie ceci :
| >
| > SELECT TClient.Etge
| > FROM TClient
| > WHERE IIf(IsNull([Formulaires]![Formulaire1]![ETGER]),isnull
| > ((TClient.Etge)) or ville like "*",(TClient.Etge) like "*" &
| > [Formulaires]! [Formulaire1]![ETGER] & "*");
| >
| > Tiens moi au courant.
| >
| > A+
| > Eric
|
|
Avatar
RaphK34
Merci à tous pour votre aide et
remerciement supplémentaire pour "Eric" qui m'a fait découvrir une nouvelle
face du SQL que j'ignorai !!!

--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------



"RaphK34" a écrit dans le message de news:

| Bonjour,
|
| Je reviends à vous sur un problème que je n'ai toujours pas réussi à
| résoudre !
|
| Soit un argument de recherche dans un formulaire.
|
| Je voudrais que lorsque l'argument est vierge la requête ne fasse aucune
| restriction, c'est à dire qu'elle me donne toutes les lignes de ma table y
| compris les Null
| Lorsque l'argument n'est pas vierge (ie argument = "ABC"), je cherche à ce
| que la requête me renvoie tous les enregistrements qui contiennent le mot
| "ABC", c'est à dire ABC ABCD XABC, ... , et pas les Null
| J'ai donc essayé (sans succès :( )une requête ayant pour argument:
|
| like"*" & Argument & "*"
|
| mais si l'argument est vierge je n'ai que les enregistrements Not Null, en
| fait, avec cette syntaxe, je n'ai jamais les Null !
|
| --
| @+ Raph.
|
| --------------------------------------------
| Merci de répondre sur le NG
| Toutes remarques bienvenues !
|
| Pour un contact direct, utiliser:
| en enlevant nospam.
| --------------------------------------------
|
|
|
|
Avatar
Eric
Re,

l'envol est aisé, le vol plus délicat ;-))

Bonne chance pour les autres contraintes

Etge like "*" ne retourne pas les Null donc il faut combiner avec un Ou
IsNull(Etge). Quand on ne met pas de critère on a bien tous les enreg que
le champ soit Null ou non. Je suppose que le fait de typer avec * via le
like fait que le champ n'est plus considéré comme non défini (NULL) - Sacré
marqueur, ce NULL !!!

A+
Eric



"RaphK34" écrivait news:#xDI$CT4EHA.3756
@TK2MSFTNGP14.phx.gbl:

Merci, tu es un GENI !!!

En effet ça marche parfaitement, mais maintenant il va falloir que je
comprenne car je te laisse imaginer qu'il y en a des conditions !!!

Merci beaucoup, maintenant je vais pouvoir avancer !!!



Avatar
RaphK34
ReRe,

Maintenant que j'ai une condition, le reste va être un jeu d'enfant ...

En fait j'avais bien eu la même analyse sur le * et le Null, mais je n'ai
jamais pensé à mettre mes conditions dans les champs de requête ...
Tu m'as fait découvrir une face de SQL qui pour moi était cachée !!!
Je sens que ça va me plaire ... je vais pouvoir évolué en SQL !

Merci Encore ...

--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------



"Eric" a écrit dans le message de news:

| Re,
|
| l'envol est aisé, le vol plus délicat ;-))
|
| Bonne chance pour les autres contraintes
|
| Etge like "*" ne retourne pas les Null donc il faut combiner avec un Ou
| IsNull(Etge). Quand on ne met pas de critère on a bien tous les enreg que
| le champ soit Null ou non. Je suppose que le fait de typer avec * via le
| like fait que le champ n'est plus considéré comme non défini (NULL) -
Sacré
| marqueur, ce NULL !!!
|
| A+
| Eric
|
|
|
| "RaphK34" écrivait news:#xDI$CT4EHA.3756
| @TK2MSFTNGP14.phx.gbl:
|
| > Merci, tu es un GENI !!!
| >
| > En effet ça marche parfaitement, mais maintenant il va falloir que je
| > comprenne car je te laisse imaginer qu'il y en a des conditions !!!
| >
| > Merci beaucoup, maintenant je vais pouvoir avancer !!!
| >
|
Avatar
Pierre CFI [mvp]
alors, c'est tordu
colle çà dans la req
SELECT TClient.Etge
FROM TClient
WHERE (((IIf(InStr([etge],[forms]![F1]![ETGER])>0,-1,0))<IIf(IsNull([forms]![F1]![ETGER]),1,0)));


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Pierre CFI [mvp]" a écrit dans le message de news:
bonjour
j'ai déjà fait çà, mais ou j'ai mis le truc ????
il me semble que je mettais un OU style
VraiFaux([forms]![F1]![ETGER] ="";Null;"")
Null ou Est Nul ? essaie ce truc
a savoir si [forms]![F1]![ETGER] est "" ou Null si reien dedans, mais tu changeras la condition

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"RaphK34" a écrit dans le message de news:%
je suis bien d'accord que ça devrait ;(

je vais te donner les SQL, comme ça on parlera de la même chose ;)
sachant que [forms]![F1]![ETGER] c'est l' "Argument" (l'équivalent de ton
[ZdT])
et que Etge est le champs de ma table ( l'équivalent de ton [C1])

SQL requête de base:
SELECT TClient.Etge
FROM TClient
WHERE (((TClient.Etge) Like "*" & [forms]![F1]![ETGER] & "*"));

Résultat si ETGER est Null: Tous sauf les NULL !!! alors que j'attendais
TOUS
si ETGER =RD : C'est ok, j'ai tous les *RD* sans les null

SQL de ta requête:
SELECT TClient.Etge
FROM TClient
WHERE
(((TClient.Etge)=IIf(IsNull([forms]![F1]![ETGER]),[Etge],(TClient.Etge) Like
"*" & [forms]![F1]![ETGER] & "*")));
Résultat si ETGER est Null: Tous sauf les NULL !!! alors que j'attendais
TOUS
si ETGER =RD : 1 trouvé = 0 (Zero) alors que j'attendais tous
les RDC RDJ ...



j'ai même poussé en modifiant comme ceci:
SELECT TClient.Etge
FROM TClient
WHERE
(((TClient.Etge)=IIf(IsNull([forms]![F1]![ETGER]),([TClient].[Etge])=([Tclient].[Etge]),([TClient].[Etge])
Like "*" & [forms]![F1]![ETGER] & "*")));
Résultat si ETGER est Null: que les Etge = -1 !!! alors que j'attendais TOUS
si ETGER =RD : 1 trouvé = 0 (Zero) alors que j'attendais tous
les RDC RDJ ...


HELP je ne comprends plus rien :((


--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------



"3stone" a écrit dans le message de news:
%
| Salut,
|
| "RaphK34"
| > Merci, mais Et bien Non :((
|
| ca devrait, pourtant...
|
|
| > Mais j'ai poussé le raisonnement, et c'est [c1] qu'il ne reconnait pas
!!!
|
|
| [c1] est le nom du champ pour lequel tu place le critère...
|
| il *doit* donc le connaitre!
|
|
| --
| A+
| Pierre (3stone) Access MVP
| ~~~~~~~~~~~~~~~~~~~~~~~
| http://users.skynet.be/mpfa
| http://users.skynet.be/accesshome
|
|
|








Avatar
RaphK34
la requête d'Eric fonctionne parfaitement:

SELECT TClient.Etge
FROM TClient
WHERE (((IIf(IsNull([Formulaires]![F1]![ETGER]),IsNull(([TClient].[Etge]))
Or ([tclient].[Etge]) Like "*",([TClient].[Etge]) Like "*" &
[Formulaires]![F1]![ETGER] & "*"))<>False));

Merci à tous pour votre aide !

--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------



"Pierre CFI [mvp]" a écrit dans le message de
news:
| alors, c'est tordu
| colle çà dans la req
| SELECT TClient.Etge
| FROM TClient
| WHERE
(((IIf(InStr([etge],[forms]![F1]![ETGER])>0,-1,0))<IIf(IsNull([forms]![F1]![ETGER]),1,0)));
|
|
| --
| Pierre CFI
| MVP Microsoft Access
| Mail : http://cerbermail.com/?z0SN8cN53B
|
| Site pour bien commencer
| Access http://users.skynet.be/mpfa/
| Excel http://www.excelabo.net
| Site perso
| http://access.cfi.free.fr
| "Pierre CFI [mvp]" a écrit dans le message de
news:
| > bonjour
| > j'ai déjà fait çà, mais ou j'ai mis le truc ????
| > il me semble que je mettais un OU style
| > VraiFaux([forms]![F1]![ETGER] ="";Null;"")
| > Null ou Est Nul ? essaie ce truc
| > a savoir si [forms]![F1]![ETGER] est "" ou Null si reien dedans, mais tu
changeras la condition
| >
| > --
| > Pierre CFI
| > MVP Microsoft Access
| > Mail : http://cerbermail.com/?z0SN8cN53B
| >
| > Site pour bien commencer
| > Access http://users.skynet.be/mpfa/
| > Excel http://www.excelabo.net
| > Site perso
| > http://access.cfi.free.fr
| > "RaphK34" a écrit dans le message de
news:%
| > > je suis bien d'accord que ça devrait ;(
| > >
| > > je vais te donner les SQL, comme ça on parlera de la même chose ;)
| > > sachant que [forms]![F1]![ETGER] c'est l' "Argument" (l'équivalent de
ton
| > > [ZdT])
| > > et que Etge est le champs de ma table ( l'équivalent de ton [C1])
| > >
| > > SQL requête de base:
| > > SELECT TClient.Etge
| > > FROM TClient
| > > WHERE (((TClient.Etge) Like "*" & [forms]![F1]![ETGER] & "*"));
| > >
| > > Résultat si ETGER est Null: Tous sauf les NULL !!! alors que
j'attendais
| > > TOUS
| > > si ETGER =RD : C'est ok, j'ai tous les *RD* sans les null
| > >
| > > SQL de ta requête:
| > > SELECT TClient.Etge
| > > FROM TClient
| > > WHERE
| > >
(((TClient.Etge)=IIf(IsNull([forms]![F1]![ETGER]),[Etge],(TClient.Etge) Like
| > > "*" & [forms]![F1]![ETGER] & "*")));
| > > Résultat si ETGER est Null: Tous sauf les NULL !!! alors que
j'attendais
| > > TOUS
| > > si ETGER =RD : 1 trouvé = 0 (Zero) alors que j'attendais
tous
| > > les RDC RDJ ...
| > >
| > >
| > >
| > > j'ai même poussé en modifiant comme ceci:
| > > SELECT TClient.Etge
| > > FROM TClient
| > > WHERE
| > >
(((TClient.Etge)=IIf(IsNull([forms]![F1]![ETGER]),([TClient].[Etge])=([Tclient].[Etge]),([TClient].[Etge])
| > > Like "*" & [forms]![F1]![ETGER] & "*")));
| > > Résultat si ETGER est Null: que les Etge = -1 !!! alors que
j'attendais TOUS
| > > si ETGER =RD : 1 trouvé = 0 (Zero) alors que j'attendais
tous
| > > les RDC RDJ ...
| > >
| > >
| > > HELP je ne comprends plus rien :((
| > >
| > >
| > > --
| > > @+ Raph.
| > >
| > > --------------------------------------------
| > > Merci de répondre sur le NG
| > > Toutes remarques bienvenues !
| > >
| > > Pour un contact direct, utiliser:
| > > en enlevant nospam.
| > > --------------------------------------------
| > >
| > >
| > >
| > > "3stone" a écrit dans le message de news:
| > > %
| > > | Salut,
| > > |
| > > | "RaphK34"
| > > | > Merci, mais Et bien Non :((
| > > |
| > > | ca devrait, pourtant...
| > > |
| > > |
| > > | > Mais j'ai poussé le raisonnement, et c'est [c1] qu'il ne reconnait
pas
| > > !!!
| > > |
| > > |
| > > | [c1] est le nom du champ pour lequel tu place le critère...
| > > |
| > > | il *doit* donc le connaitre!
| > > |
| > > |
| > > | --
| > > | A+
| > > | Pierre (3stone) Access MVP
| > > | ~~~~~~~~~~~~~~~~~~~~~~~
| > > | http://users.skynet.be/mpfa
| > > | http://users.skynet.be/accesshome
| > > |
| > > |
| > > |
| > >
| > >
| >
| >
|
|
Avatar
Eric
Bonjour Pierre,

"Pierre CFI [mvp]" écrivait


alors, c'est tordu
WHERE (((IIf(InStr([etge],[forms]![F1]![ETGER])>0,-1,0))<IIf(IsNull
([forms]![F1]![ETGER]),1,0)))


C'est le moins que l'on puisse dire Pierre ! 8-)
Quand bien même que j'arriverai à décoder, que je n'oserai coller ça dans
la fenêtre SQL ;-))

A+
Eric

Avatar
Pierre CFI [mvp]
çà c'est sur mon petit eric, c'est d'un niveau tel, qu'on verra tout de suite que c'est pas toi qui a fait le devoir, et que tu as
copié
cela dit, j'avais parlé d'une condition OR, mais que j'avais oublié le reste du texte :o)


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
Bonjour Pierre,

"Pierre CFI [mvp]" écrivait


alors, c'est tordu
WHERE (((IIf(InStr([etge],[forms]![F1]![ETGER])>0,-1,0))<IIf(IsNull
([forms]![F1]![ETGER]),1,0)))


C'est le moins que l'on puisse dire Pierre ! 8-)
Quand bien même que j'arriverai à décoder, que je n'oserai coller ça dans
la fenêtre SQL ;-))

A+
Eric







1 2