Syntaxe SQL... bizarre ?

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre CFI
Le #6354821
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" 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




RaphK34
Le #6354811
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" 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





Francis SLAWNY
Le #6354801
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" 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









Eric
Le #6354791
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" 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



Eric
Le #6354781
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

Francis SLAWNY
Le #6354771
Ç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" %
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" 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





Eric
Le #6354761
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" %
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


Eric
Le #6354751
.../...


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

Francis SLAWNY
Le #6354741
OK, merci. Je crois que j'ai compris.
FS

"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



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



"Francis SLAWNY" news:
OK, merci. Je crois que j'ai compris.
FS

"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







Publicité
Poster une réponse
Anonyme