Dans une application que je développe, j'ai créer un générateur de requête
qui permet à un utilisateur de faire des sélections.
Pour créer une requete SQL à partir des demandes de l'utilisateur, je prend
ses critères et je fait des sous requètes qui s'encapsule.
Du cout, ca fait des requètes un peu compliqué mais sa fonctionne.
Mon problème est que j'ai fait une requête un peu balaise qui est la
suivante ou des selct s'encapsule. j'ai un message d'erreur qui est
Expression trop complexe. Quand j'enlève un critére, ca marche...
Ma question est: Y a t'il une limite dans l'interprétation de sous requètes
?
Je vous joint ma requète:
select strlie.str_strn,indn,str.* from (strlie INNER JOIN (str INNER JOIN
tsttst ON (str.tst1n=tsttst.tst1n) AND (str.tst2n=tsttst.tst2n)) ON
strlie.STR_strn=str.strn) where
(
(
(
(
(
(
(strlie.strn in (select strn from str where pay like "FRANCE"))
AND
(strlie.str_strn in (select strn from str where pay like "FRANCE"))
)
and
(str.strn in (select strn from str where pay like "FRANCE"))
)
)
AND
(
(
(
(
(
(strlie.strn in (select strn from str where cp >= "01000" AND cp <=
"01999"))
AND
(strlie.str_strn in (select strn from str where cp >= "01000" AND cp <=
"01999"))
)
and
(str.strn in (select strn from str where cp >= "01000" AND cp <= "01999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "07000" AND cp <=
"07999"))
AND
(strlie.str_strn in (select strn from str where cp >= "07000" AND cp <=
"07999"))
)
and
(str.strn in (select strn from str where cp >= "07000" AND cp <= "07999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "26000" AND cp <=
"26999"))
AND
(strlie.str_strn in (select strn from str where cp >= "26000" AND cp <=
"26999"))
)
and
(str.strn in (select strn from str where cp >= "26000" AND cp <= "26999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "38000" AND cp <=
"38999"))
AND
(strlie.str_strn in (select strn from str where cp >= "38000" AND cp <=
"38999"))
)
and
(str.strn in (select strn from str where cp >= "38000" AND cp <= "38999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "42000" AND cp <=
"42999"))
AND
(strlie.str_strn in (select strn from str where cp >= "42000" AND cp <=
"42999"))
)
and
(str.strn in (select strn from str where cp >= "42000" AND cp <= "42999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "69000" AND cp <=
"69999"))
AND
(strlie.str_strn in (select strn from str where cp >= "69000" AND cp <=
"69999"))
)
and
(str.strn in (select strn from str where cp >= "69000" AND cp <= "69999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "73000" AND cp <=
"73999"))
AND
(strlie.str_strn in (select strn from str where cp >= "73000" AND cp <=
"73999"))
)
and
(str.strn in (select strn from str where cp >= "73000" AND cp <= "73999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "74000" AND cp <=
"74999"))
AND
(strlie.str_strn in (select strn from str where cp >= "74000" AND cp <=
"74999"))
)
and
(str.strn in (select strn from str where cp >= "74000" AND cp <= "74999"))
)
)
)
)
)
)
and
(strlie.strn=1309 and strlie.str_strn<>-1 and strlie.typ=1)
)
order by str.nom
Merci pour les réponses que vous pourrez m'apporter (je sais que ma question
est un peu compliqué !)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre CFI
bonjour çà fait çà si dans une req tu as un critére qui fait référence à une source extérieure.(nom d'un controle d'un form par exemple) il faut mettre des clauses where
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer http://users.skynet.be/mpfa/ Site perso http://access.cfi.free.fr "Sylo" a écrit dans le message de news: O$
Bonjour,
Dans une application que je développe, j'ai créer un générateur de requête qui permet à un utilisateur de faire des sélections.
Pour créer une requete SQL à partir des demandes de l'utilisateur, je prend ses critères et je fait des sous requètes qui s'encapsule.
Du cout, ca fait des requètes un peu compliqué mais sa fonctionne.
Mon problème est que j'ai fait une requête un peu balaise qui est la suivante ou des selct s'encapsule. j'ai un message d'erreur qui est Expression trop complexe. Quand j'enlève un critére, ca marche...
Ma question est: Y a t'il une limite dans l'interprétation de sous requètes ?
Je vous joint ma requète: select strlie.str_strn,indn,str.* from (strlie INNER JOIN (str INNER JOIN tsttst ON (str.tst1n=tsttst.tst1n) AND (str.tst2n=tsttst.tst2n)) ON strlie.STR_strn=str.strn) where
(
(
(
(
(
(
(strlie.strn in (select strn from str where pay like "FRANCE"))
AND
(strlie.str_strn in (select strn from str where pay like "FRANCE"))
)
and
(str.strn in (select strn from str where pay like "FRANCE"))
)
)
AND
(
(
(
(
(
(strlie.strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
AND
(strlie.str_strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
)
and
(str.strn in (select strn from str where cp >= "01000" AND cp <= "01999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
AND
(strlie.str_strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
)
and
(str.strn in (select strn from str where cp >= "07000" AND cp <= "07999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
AND
(strlie.str_strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
)
and
(str.strn in (select strn from str where cp >= "26000" AND cp <= "26999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
AND
(strlie.str_strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
)
and
(str.strn in (select strn from str where cp >= "38000" AND cp <= "38999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
AND
(strlie.str_strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
)
and
(str.strn in (select strn from str where cp >= "42000" AND cp <= "42999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
AND
(strlie.str_strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
)
and
(str.strn in (select strn from str where cp >= "69000" AND cp <= "69999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
AND
(strlie.str_strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
)
and
(str.strn in (select strn from str where cp >= "73000" AND cp <= "73999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
AND
(strlie.str_strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
)
and
(str.strn in (select strn from str where cp >= "74000" AND cp <= "74999"))
)
)
)
)
)
)
and
(strlie.strn09 and strlie.str_strn<>-1 and strlie.typ=1)
)
order by str.nom
Merci pour les réponses que vous pourrez m'apporter (je sais que ma question est un peu compliqué !)
Sylvain MALLEVAL
bonjour
çà fait çà si dans une req tu as un critére qui fait référence à une source extérieure.(nom d'un controle d'un form par exemple) il
faut mettre des clauses where
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Sylo" <devbnet@free.fr> a écrit dans le message de news: O$zyP6riDHA.1808@TK2MSFTNGP09.phx.gbl...
Bonjour,
Dans une application que je développe, j'ai créer un générateur de requête
qui permet à un utilisateur de faire des sélections.
Pour créer une requete SQL à partir des demandes de l'utilisateur, je prend
ses critères et je fait des sous requètes qui s'encapsule.
Du cout, ca fait des requètes un peu compliqué mais sa fonctionne.
Mon problème est que j'ai fait une requête un peu balaise qui est la
suivante ou des selct s'encapsule. j'ai un message d'erreur qui est
Expression trop complexe. Quand j'enlève un critére, ca marche...
Ma question est: Y a t'il une limite dans l'interprétation de sous requètes
?
Je vous joint ma requète:
select strlie.str_strn,indn,str.* from (strlie INNER JOIN (str INNER JOIN
tsttst ON (str.tst1n=tsttst.tst1n) AND (str.tst2n=tsttst.tst2n)) ON
strlie.STR_strn=str.strn) where
(
(
(
(
(
(
(strlie.strn in (select strn from str where pay like "FRANCE"))
AND
(strlie.str_strn in (select strn from str where pay like "FRANCE"))
)
and
(str.strn in (select strn from str where pay like "FRANCE"))
)
)
AND
(
(
(
(
(
(strlie.strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
AND
(strlie.str_strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
)
and
(str.strn in (select strn from str where cp >= "01000" AND cp <= "01999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
AND
(strlie.str_strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
)
and
(str.strn in (select strn from str where cp >= "07000" AND cp <= "07999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
AND
(strlie.str_strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
)
and
(str.strn in (select strn from str where cp >= "26000" AND cp <= "26999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
AND
(strlie.str_strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
)
and
(str.strn in (select strn from str where cp >= "38000" AND cp <= "38999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
AND
(strlie.str_strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
)
and
(str.strn in (select strn from str where cp >= "42000" AND cp <= "42999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
AND
(strlie.str_strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
)
and
(str.strn in (select strn from str where cp >= "69000" AND cp <= "69999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
AND
(strlie.str_strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
)
and
(str.strn in (select strn from str where cp >= "73000" AND cp <= "73999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
AND
(strlie.str_strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
)
and
(str.strn in (select strn from str where cp >= "74000" AND cp <= "74999"))
)
)
)
)
)
)
and
(strlie.strn09 and strlie.str_strn<>-1 and strlie.typ=1)
)
order by str.nom
Merci pour les réponses que vous pourrez m'apporter (je sais que ma question
est un peu compliqué !)
bonjour çà fait çà si dans une req tu as un critére qui fait référence à une source extérieure.(nom d'un controle d'un form par exemple) il faut mettre des clauses where
-- Pierre CFI MVP Microsoft Access Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer http://users.skynet.be/mpfa/ Site perso http://access.cfi.free.fr "Sylo" a écrit dans le message de news: O$
Bonjour,
Dans une application que je développe, j'ai créer un générateur de requête qui permet à un utilisateur de faire des sélections.
Pour créer une requete SQL à partir des demandes de l'utilisateur, je prend ses critères et je fait des sous requètes qui s'encapsule.
Du cout, ca fait des requètes un peu compliqué mais sa fonctionne.
Mon problème est que j'ai fait une requête un peu balaise qui est la suivante ou des selct s'encapsule. j'ai un message d'erreur qui est Expression trop complexe. Quand j'enlève un critére, ca marche...
Ma question est: Y a t'il une limite dans l'interprétation de sous requètes ?
Je vous joint ma requète: select strlie.str_strn,indn,str.* from (strlie INNER JOIN (str INNER JOIN tsttst ON (str.tst1n=tsttst.tst1n) AND (str.tst2n=tsttst.tst2n)) ON strlie.STR_strn=str.strn) where
(
(
(
(
(
(
(strlie.strn in (select strn from str where pay like "FRANCE"))
AND
(strlie.str_strn in (select strn from str where pay like "FRANCE"))
)
and
(str.strn in (select strn from str where pay like "FRANCE"))
)
)
AND
(
(
(
(
(
(strlie.strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
AND
(strlie.str_strn in (select strn from str where cp >= "01000" AND cp < > "01999"))
)
and
(str.strn in (select strn from str where cp >= "01000" AND cp <= "01999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
AND
(strlie.str_strn in (select strn from str where cp >= "07000" AND cp < > "07999"))
)
and
(str.strn in (select strn from str where cp >= "07000" AND cp <= "07999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
AND
(strlie.str_strn in (select strn from str where cp >= "26000" AND cp < > "26999"))
)
and
(str.strn in (select strn from str where cp >= "26000" AND cp <= "26999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
AND
(strlie.str_strn in (select strn from str where cp >= "38000" AND cp < > "38999"))
)
and
(str.strn in (select strn from str where cp >= "38000" AND cp <= "38999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
AND
(strlie.str_strn in (select strn from str where cp >= "42000" AND cp < > "42999"))
)
and
(str.strn in (select strn from str where cp >= "42000" AND cp <= "42999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
AND
(strlie.str_strn in (select strn from str where cp >= "69000" AND cp < > "69999"))
)
and
(str.strn in (select strn from str where cp >= "69000" AND cp <= "69999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
AND
(strlie.str_strn in (select strn from str where cp >= "73000" AND cp < > "73999"))
)
and
(str.strn in (select strn from str where cp >= "73000" AND cp <= "73999"))
)
OR
(
(
(strlie.strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
AND
(strlie.str_strn in (select strn from str where cp >= "74000" AND cp < > "74999"))
)
and
(str.strn in (select strn from str where cp >= "74000" AND cp <= "74999"))
)
)
)
)
)
)
and
(strlie.strn09 and strlie.str_strn<>-1 and strlie.typ=1)
)
order by str.nom
Merci pour les réponses que vous pourrez m'apporter (je sais que ma question est un peu compliqué !)