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

Syntaxe SQL... bizarre ?

11 réponses
Avatar
Francis SLAWNY
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les lettres de
l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like "*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS

10 réponses

1 2
Avatar
Pierre CFI
bonjour
oui, çà donne çà, si condition fausse
WHERE Alphabet.Alpha=Alphabet.Alpha Like "*"
j'ai enlevé les () pour plus de visibilité
donc, à revoir :o))




--
Pierre CFI
"Francis SLAWNY" a écrit dans le message de
news:
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les lettres
de l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like
"*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS




Avatar
RaphK34
Salut,
c'est normal que la 2ème condition where plante car si faux, on a:
(Alphabet.Alpha)=(Alphabet.Alpha) Like "*"

TEnete ceci sans garantie de résultat:

WHERE
(IIf([Formulaires]![Tampon]![ZT]<>"x",(Alphabet.Alpha)=[Formulaires]![
Tampon]![ZT],(Alphabet.Alpha) Like "*"));


--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !
--------------------------------------------
"Francis SLAWNY" a écrit dans le message de
news:
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les lettres
de l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like
"*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS





Avatar
Francis SLAWNY
J'avais déjà testé ce que tu proposes, mais ça ne marche pas plus.
En fait la requête R1 marche bien, si je pose la question pour R2 c'est
parce que je voudrais comprendre.
En tout cas merci et si quelqu'un trouve une explication, je suis preneur.
FS


TEnete ceci sans garantie de résultat:

WHERE
(IIf([Formulaires]![Tampon]![ZT]<>"x",(Alphabet.Alpha)=[Formulaires]![
Tampon]![ZT],(Alphabet.Alpha) Like "*"));


--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !
--------------------------------------------
"Francis SLAWNY" a écrit dans le message de
news:
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les lettres
de l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like
"*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS









Avatar
Eric
Bonjour,

Je mettrai:
WHERE
Alpha=IIf([Formulaires]![Tampon]![ZT]<>"x",[Formulaires]![Tampon]![ZT],[Alpha])

Si tu tapes x dans ZT, tu auras tous les enregistrements sinon la lettre
saisie dans ZT.
Dans la 1ère tu auras toutes les lettres si ZT n'est pas renseigné et
que la lettre voulue dans le cas contraire.
Les 2 requêtes ne donnent pas les même résultats.

J'avais déjà testé ce que tu proposes, mais ça ne marche pas plus.
En fait la requête R1 marche bien, si je pose la question pour R2 c'est
parce que je voudrais comprendre.
En tout cas merci et si quelqu'un trouve une explication, je suis preneur.
FS

TEnete ceci sans garantie de résultat:

WHERE
(IIf([Formulaires]![Tampon]![ZT]<>"x",(Alphabet.Alpha)=[Formulaires]![
Tampon]![ZT],(Alphabet.Alpha) Like "*"));


--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !
--------------------------------------------
"Francis SLAWNY" a écrit dans le message de
news:
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les lettres
de l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like
"*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS










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



Avatar
Eric
re,

Précision:
Si tu tapes x dans ZT, tu auras tous les enregistrements sinon la lettre
saisie dans ZT SAUF x.

au lieu de :
Si tu tapes x dans ZT, tu auras tous les enregistrements sinon la lettre saisie dans ZT.



Sous réserve de ne pas me mélanger les pinceaux ;-)

Bonjour,

Je mettrai:
WHERE
Alpha=IIf([Formulaires]![Tampon]![ZT]<>"x",[Formulaires]![Tampon]![ZT],[Alpha])


Si tu tapes x dans ZT, tu auras tous les enregistrements sinon la lettre
saisie dans ZT.
Dans la 1ère tu auras toutes les lettres si ZT n'est pas renseigné et
que la lettre voulue dans le cas contraire.
Les 2 requêtes ne donnent pas les même résultats.



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

Avatar
Francis SLAWNY
Ça marche en effet.
Merci.
Je me demande toujours pourquoi l'autre forme ne marchait pas.
Que lit la machine quand ....<>"x" est Faux ?
FS


"Eric" a écrit dans le message de news:
%
Bonjour,

Je mettrai:
WHERE
Alpha=IIf([Formulaires]![Tampon]![ZT]<>"x",[Formulaires]![Tampon]![ZT],[Alpha])

Si tu tapes x dans ZT, tu auras tous les enregistrements sinon la lettre
saisie dans ZT.
Dans la 1ère tu auras toutes les lettres si ZT n'est pas renseigné et que
la lettre voulue dans le cas contraire.
Les 2 requêtes ne donnent pas les même résultats.

J'avais déjà testé ce que tu proposes, mais ça ne marche pas plus.
En fait la requête R1 marche bien, si je pose la question pour R2 c'est
parce que je voudrais comprendre.
En tout cas merci et si quelqu'un trouve une explication, je suis
preneur.
FS

TEnete ceci sans garantie de résultat:

WHERE
(IIf([Formulaires]![Tampon]![ZT]<>"x",(Alphabet.Alpha)=[Formulaires]![
Tampon]![ZT],(Alphabet.Alpha) Like "*"));


--
@+ Raph.

--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !
--------------------------------------------
"Francis SLAWNY" a écrit dans le message de
news:
Bonjour tout le monde.



Sous ACCESS 2003



J'ai un formulaire « TAMPON » contenant une zone de texte « ZT »

Une table « ALPHABET » avec un seul champ « Alpha» contenant les
lettres de l'alphabet.



Une requete R1 :


SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha) Like [Formulaires]![ Tampon]![ZT] & "*"));



Une requete R2 :

SELECT Alphabet.Alpha

FROM Alphabet

WHERE (((Alphabet.Alpha)=IIf([Formulaires]![
Tampon]![ZT]<>"x",[Formulaires]![ Tampon]![ZT],(Alphabet.Alpha) Like
"*")));



Je pensais que ces deux requetes devaient donner le même résultat.



R1 marche sans pb

R2 n'a pas l'air prendre en compte le cas où . <> « x » est Faux



Et-ce normal et quelqu'un sait il pourquoi ?



Merci d'avance pour une réponse.

FS










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





Avatar
Eric
re,

Si le test renvoie Faux alors tu demandes à afficher les enregistrements
pour lesquels [Alpha] est égal à [Alpha] (le contenu du champ est égal à
lui-même), donc ça revient à faire un Select sans clause Where.
Peut-être pas très clair ça ;-)
Si bien que formulée ainsi ta clause Where retourne les enregistrements
comme indiqué dans ma 2ème réponse (Précision)

Ça marche en effet.
Merci.
Je me demande toujours pourquoi l'autre forme ne marchait pas.
Que lit la machine quand ....<>"x" est Faux ?
FS


"Eric" a écrit dans le message de news:
%
Bonjour,

Je mettrai:
WHERE
Alpha=IIf([Formulaires]![Tampon]![ZT]<>"x",[Formulaires]![Tampon]![ZT],[Alpha])





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


Avatar
Eric
.../...


Je me demande toujours pourquoi l'autre forme ne marchait pas.


Comme te l'a indiqué PierreCFI ta clause Where devient quand le test est
faux:
WHERE Alphabet.Alpha=Alphabet.Alpha Like "*"
qui n'est pas valable syntaxiquement.


Cela doit être Where Alphabet.Alpha Like "*"
Tu ne peux pas avoir l'opérateur de comparaison (=) suivi de l'opérateur
Like.
Rien ne peut être Egal à un Comme, sans vouloir être moralisateur ;-)
C'est soit l'un soit l'autre.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Francis SLAWNY
OK, merci. Je crois que j'ai compris.
FS

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

.../...


Je me demande toujours pourquoi l'autre forme ne marchait pas.


Comme te l'a indiqué PierreCFI ta clause Where devient quand le test est
faux:
WHERE Alphabet.Alpha=Alphabet.Alpha Like "*"
qui n'est pas valable syntaxiquement.


Cela doit être Where Alphabet.Alpha Like "*"
Tu ne peux pas avoir l'opérateur de comparaison (=) suivi de l'opérateur
Like.
Rien ne peut être Egal à un Comme, sans vouloir être moralisateur ;-)
C'est soit l'un soit l'autre.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Pierre CFI
c'était pourtant clair ce que j'avais dit ? :o))))
Pierre cfi



"Francis SLAWNY" a écrit dans le message de
news:
OK, merci. Je crois que j'ai compris.
FS

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

.../...


Je me demande toujours pourquoi l'autre forme ne marchait pas.


Comme te l'a indiqué PierreCFI ta clause Where devient quand le test est
faux:
WHERE Alphabet.Alpha=Alphabet.Alpha Like "*"
qui n'est pas valable syntaxiquement.


Cela doit être Where Alphabet.Alpha Like "*"
Tu ne peux pas avoir l'opérateur de comparaison (=) suivi de l'opérateur
Like.
Rien ne peut être Egal à un Comme, sans vouloir être moralisateur ;-)
C'est soit l'un soit l'autre.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







1 2