OVH Cloud OVH Cloud

Fonction dans Query

3 réponses
Avatar
JMH
Bonsoir

Je me bats sur un truc que j'ai eu su, mais......

J'ai une requête pour chercher des doublons dans une table
Je compose la clause Where dans un module selon des critères et je mets
cette valeur dans une variable globale.
Dans ma requête je fait appel à une fonction qui récupère la variable
globale
Cette variable EST:
In (SELECT [P_NomCli] FROM [tblProspect] As Tmp GROUP BY [P_NomCli],
[P_Prenom] HAVING Count(*)>1 And [P_NomCli] = [tblProspect].[P_NomCli] And
[P_Prenom] = [tblProspect].[P_Prenom] )

Dans la requête dans un champ sous critère, j'ai mis funStringWhere qui
récupère la variable.

Mais le traitement ne fait rien.
Pas contre si je copie le contenu de la variable et que je le met dans la
clause Whew de ma requête, ça marche.

Merci d'avance pour vos éclairages.

Jean-Michel H.

3 réponses

Avatar
3stone
Salur ghijkl,

"JMH" a écrit
| J'ai une requête pour chercher des doublons dans une table
| Je compose la clause Where dans un module selon des critères et je mets
| cette valeur dans une variable globale.
| Dans ma requête je fait appel à une fonction qui récupère la variable
| globale
| Cette variable EST:
| In (SELECT [P_NomCli] FROM [tblProspect] As Tmp GROUP BY [P_NomCli],
| [P_Prenom] HAVING Count(*)>1 And [P_NomCli] = [tblProspect].[P_NomCli] And
| [P_Prenom] = [tblProspect].[P_Prenom] )
|
| Dans la requête dans un champ sous critère, j'ai mis funStringWhere qui
| récupère la variable.
|
| Mais le traitement ne fait rien.
| Pas contre si je copie le contenu de la variable et que je le met dans la
| clause Whew de ma requête, ça marche.


Si je comprends ce que tu tente d'expliquer...

Tu ne peux pas mettre directement une variable dans le critère,
tu dois passer par une fonction qui te renvera la valeur de ta variable.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
JMH
Salut et merci.
Je n'ai pas été clair, je détaille:
Dans un Query, dans la zone NomCli sous critère j'ai mis une fonction qui va
chercher une variable qui contient le critère que j'ai composé. "In
(SELECT........."
Je lance ce query, il ne fait rien et si je lance la Fonction en débogeur,
j'ai bien le texte complet de mon critère "In (SELECT......"
Mon Query contient dans la zone critère funStrinWhere()
Si je vais dans le Query et que je remplace la fonction par la variable
trouvée, là c'est OK.

Donc ma question:
Qu'est-ce qui est faux dans ma conception.
En mettant une fonction, il va prendre entièrement le texte de la condition,
soit
funStringWhere
ou alors je dois composer cette zone autrement, soit:
In (funStringWhere()) et là dans la préparation j'enlève le In
J'ai aussi essayé, mais sans succès.
Ou alors autrement?

Merci pour les réponses.

"3stone" a écrit dans le message de news:

Salur ghijkl,

"JMH" a écrit
| J'ai une requête pour chercher des doublons dans une table
| Je compose la clause Where dans un module selon des critères et je mets
| cette valeur dans une variable globale.
| Dans ma requête je fait appel à une fonction qui récupère la variable
| globale
| Cette variable EST:
| In (SELECT [P_NomCli] FROM [tblProspect] As Tmp GROUP BY [P_NomCli],
| [P_Prenom] HAVING Count(*)>1 And [P_NomCli] = [tblProspect].[P_NomCli]
And
| [P_Prenom] = [tblProspect].[P_Prenom] )
|
| Dans la requête dans un champ sous critère, j'ai mis funStringWhere qui
| récupère la variable.
|
| Mais le traitement ne fait rien.
| Pas contre si je copie le contenu de la variable et que je le met dans
la
| clause Whew de ma requête, ça marche.


Si je comprends ce que tu tente d'expliquer...

Tu ne peux pas mettre directement une variable dans le critère,
tu dois passer par une fonction qui te renvera la valeur de ta
variable.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw



Avatar
JMH
Bonsoir
Complément
J'utilise bien une fonction dans le Query et en lançant la fonction avec le
débogueur j'ai le critère complet "In (SELECTED... ) voir ci dessous

Mais où je me pose la question c'est comment coder ça dans le Query,?

Critères:
funStringWhere() Pas OK
C'est avec la condition In que cela doit poser un problème?

J'ai déjà fait des fonctions sytle >funChaine, =funChaine..... ça OK

Mais dans celle là j'ai ce "In" et je ne sais pas comment faire. Que ramener
depuis la fonction?



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

Bonsoir

Je me bats sur un truc que j'ai eu su, mais......

J'ai une requête pour chercher des doublons dans une table
Je compose la clause Where dans un module selon des critères et je mets
cette valeur dans une variable globale.
Dans ma requête je fait appel à une fonction qui récupère la variable
globale
Cette variable EST:
In (SELECT [P_NomCli] FROM [tblProspect] As Tmp GROUP BY [P_NomCli],
[P_Prenom] HAVING Count(*)>1 And [P_NomCli] = [tblProspect].[P_NomCli] And
[P_Prenom] = [tblProspect].[P_Prenom] )

Dans la requête dans un champ sous critère, j'ai mis funStringWhere qui
récupère la variable.

Mais le traitement ne fait rien.
Pas contre si je copie le contenu de la variable et que je le met dans la
clause Whew de ma requête, ça marche.

Merci d'avance pour vos éclairages.

Jean-Michel H.