OVH Cloud OVH Cloud

requete parametrée

7 réponses
Avatar
Alain TEYSSEDRE
Bonjour

J'ai crée une requette parametrée du type:

SELECT ... FROM .. WHERE [Table1].[Champ1] = MonParamètre()

ou MonParametre est une fonction qui récupère ma variable. Cette requette
est utilisée comme source d'un formulaire
ça marche super.


Ma question est comment passer plusieurs paramètres en nombre aléatoires
dans ma clause WHERE:

J'aimerai avoir
SELECT ..FROM ...WHERE [Table1].[Champ1] = "Toto" Or [Table1].[Champ1] =
"Titi" Or [Table1].[Champ1] = "Tata"

Je suis sait récupérer dans une chaine string la totalité de ma clause
Where, mais je ne peux intégrer comme ça cette chaine
à ma requette existante.

J'espère etre suffisament clair, si ce n'était le cas je ferais des efforts
(promis)

@+
Alain

7 réponses

Avatar
Raymond [mvp]
Bonsoir.

Si tu complétais de la même façon car je pense que ce doit être le même
genre de calcul ?

SELECT ... FROM .. WHERE [Table1].[Champ1] = MonParamètre() Or
[Table1].[Champ2] = MonParamètre2() Or [Table1].[Champ3] = MonParamètre3()


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:
Bonjour

J'ai crée une requette parametrée du type:

SELECT ... FROM .. WHERE [Table1].[Champ1] = MonParamètre()

ou MonParametre est une fonction qui récupère ma variable. Cette requette
est utilisée comme source d'un formulaire
ça marche super.


Ma question est comment passer plusieurs paramètres en nombre aléatoires
dans ma clause WHERE:

J'aimerai avoir
SELECT ..FROM ...WHERE [Table1].[Champ1] = "Toto" Or [Table1].[Champ1] > "Titi" Or [Table1].[Champ1] = "Tata"

Je suis sait récupérer dans une chaine string la totalité de ma clause
Where, mais je ne peux intégrer comme ça cette chaine
à ma requette existante.

J'espère etre suffisament clair, si ce n'était le cas je ferais des
efforts

(promis)

@+
Alain







Avatar
Alain TEYSSEDRE
Bonjour Raymond

Le seul Hic c'est que le nombre de mes paramètres est aléatoire ...

j'aurais préféré pouvoir gerer " le groupe complet "WHERE [Table1].[Champ1]
= Paramètre1 Or
[Table1].[Champ1] = Paramètre2 Or [Table1].[Champ1] = Paramètre3"

@+
Alain


"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir.

Si tu complétais de la même façon car je pense que ce doit être le même
genre de calcul ?

SELECT ... FROM .. WHERE [Table1].[Champ1] = MonParamètre() Or
[Table1].[Champ2] = MonParamètre2() Or [Table1].[Champ3] = MonParamètre3()


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:
Bonjour

J'ai crée une requette parametrée du type:

SELECT ... FROM .. WHERE [Table1].[Champ1] = MonParamètre()

ou MonParametre est une fonction qui récupère ma variable. Cette
requette


est utilisée comme source d'un formulaire
ça marche super.


Ma question est comment passer plusieurs paramètres en nombre aléatoires
dans ma clause WHERE:

J'aimerai avoir
SELECT ..FROM ...WHERE [Table1].[Champ1] = "Toto" Or [Table1].[Champ1] > > "Titi" Or [Table1].[Champ1] = "Tata"

Je suis sait récupérer dans une chaine string la totalité de ma clause
Where, mais je ne peux intégrer comme ça cette chaine
à ma requette existante.

J'espère etre suffisament clair, si ce n'était le cas je ferais des
efforts

(promis)

@+
Alain











Avatar
Raymond [mvp]
est-ce que tes données acceptent le like au lieu de = ? car dans ces
conditions tu mettrais * dans tes paramètres "inexistants", en prévoyant le
maximum de paramètres. que tu mettes like abc ou = abc c'est le même
résultat.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:OO3A%
Bonjour Raymond

Le seul Hic c'est que le nombre de mes paramètres est aléatoire ...

j'aurais préféré pouvoir gerer " le groupe complet "WHERE
[Table1].[Champ1]

= Paramètre1 Or
[Table1].[Champ1] = Paramètre2 Or [Table1].[Champ1] = Paramètre3"

@+
Alain


Avatar
Alain TEYSSEDRE
non cela pourrait créer des confusions

Sorry
Alain



"Raymond [mvp]" a écrit dans le message de
news:
est-ce que tes données acceptent le like au lieu de = ? car dans ces
conditions tu mettrais * dans tes paramètres "inexistants", en prévoyant
le

maximum de paramètres. que tu mettes like abc ou = abc c'est le même
résultat.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:OO3A%
Bonjour Raymond

Le seul Hic c'est que le nombre de mes paramètres est aléatoire ...

j'aurais préféré pouvoir gerer " le groupe complet "WHERE
[Table1].[Champ1]

= Paramètre1 Or
[Table1].[Champ1] = Paramètre2 Or [Table1].[Champ1] = Paramètre3"

@+
Alain






Avatar
Alain TEYSSEDRE
Bonjour Raymond

La nuit et tes suggestions portant conseil .....

Remarque : ma clause WHERE comportera toujours les même
instructions, seul le nombre
de paramètres va changer: je fais toujours un OU
sur [Table1].[Champ1]

En fait je peux définir un nombre maximum de paramètres (l'idéal serait de
ne pas avoir
à fixer ce nombre mais s'il faut en passer par la pourquoi pas)
- ce nombre pourrait etre de 20 par exemple
- je pourrais définir un tableau Public de 20 cases : Public Tableau(20)
as String

Si je ne dispose que de 6 paramètres : je rempli les 6 premieres cases
du tableau avec mes 6 valeurs
puis je rempli les 24 cases qui restent avec 1 (ou plusieurs ) des 6
valeurs.

j'écrit dans mes requettes :
WHERE [Table1].[Champ1] = Tableau(0) Or [Table1].[Champ1] = Tableau(1)
....Or [Table1].[Champ1] = Tableau(29)

est ce que ça peux marcher ?
Quelles sont les pièges ou pb sous-jacents ?
Comment ecrire les 24 valeurs qui restent ?

@+
Alain


"Raymond [mvp]" a écrit dans le message de
news:
est-ce que tes données acceptent le like au lieu de = ? car dans ces
conditions tu mettrais * dans tes paramètres "inexistants", en prévoyant
le

maximum de paramètres. que tu mettes like abc ou = abc c'est le même
résultat.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:OO3A%
Bonjour Raymond

Le seul Hic c'est que le nombre de mes paramètres est aléatoire ...

j'aurais préféré pouvoir gerer " le groupe complet "WHERE
[Table1].[Champ1]

= Paramètre1 Or
[Table1].[Champ1] = Paramètre2 Or [Table1].[Champ1] = Paramètre3"

@+
Alain






Avatar
Raymond [mvp]
Bonjour Alain.

l'idée est bonne mais le résultat non. tu ne peux pas atteindre une variable
vba dans une requête. il faut passer par une fonction public (dans un
module) pour pouvoir récupérer les valeurs.
quand je disais prévoir le maximum de paramètres c'était parce que tu
indiquais la 1ere fois 1 paramètre, la seconde fois 3 paramètres , mais s'il
faut aller jusqu'à 30 il vaut mieux passer par une construction de clause en
vba.
l'idéal serait que tous les champs portent le même nom avec un indice et
soient de même structure (alpha ou numérique) pour pouvoir faire une boucle
vba et construire la clause en peu de lignes.
à suivre.....
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:
Bonjour Raymond

La nuit et tes suggestions portant conseil .....

Remarque : ma clause WHERE comportera toujours les même
instructions, seul le nombre
de paramètres va changer: je fais toujours un
OU

sur [Table1].[Champ1]

En fait je peux définir un nombre maximum de paramètres (l'idéal serait de
ne pas avoir
à fixer ce nombre mais s'il faut en passer par la pourquoi pas)
- ce nombre pourrait etre de 20 par exemple
- je pourrais définir un tableau Public de 20 cases : Public
Tableau(20)

as String

Si je ne dispose que de 6 paramètres : je rempli les 6 premieres
cases

du tableau avec mes 6 valeurs
puis je rempli les 24 cases qui restent avec 1 (ou plusieurs ) des 6
valeurs.

j'écrit dans mes requettes :
WHERE [Table1].[Champ1] = Tableau(0) Or [Table1].[Champ1] Tableau(1)
....Or [Table1].[Champ1] = Tableau(29)

est ce que ça peux marcher ?
Quelles sont les pièges ou pb sous-jacents ?
Comment ecrire les 24 valeurs qui restent ?

@+
Alain


Avatar
Alain TEYSSEDRE
Bonjour Raymond

Merci pour ton aide, effectivement je suis parti sur une construction de
clause vba, ça marche je n'ai plus qu'a paufiner le truc

@+
Alain


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour Alain.

l'idée est bonne mais le résultat non. tu ne peux pas atteindre une
variable

vba dans une requête. il faut passer par une fonction public (dans un
module) pour pouvoir récupérer les valeurs.
quand je disais prévoir le maximum de paramètres c'était parce que tu
indiquais la 1ere fois 1 paramètre, la seconde fois 3 paramètres , mais
s'il

faut aller jusqu'à 30 il vaut mieux passer par une construction de clause
en

vba.
l'idéal serait que tous les champs portent le même nom avec un indice et
soient de même structure (alpha ou numérique) pour pouvoir faire une
boucle

vba et construire la clause en peu de lignes.
à suivre.....
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Alain TEYSSEDRE" a écrit dans le
message de news:
Bonjour Raymond

La nuit et tes suggestions portant conseil .....

Remarque : ma clause WHERE comportera toujours les même
instructions, seul le nombre
de paramètres va changer: je fais toujours un
OU

sur [Table1].[Champ1]

En fait je peux définir un nombre maximum de paramètres (l'idéal serait
de


ne pas avoir
à fixer ce nombre mais s'il faut en passer par la pourquoi pas)
- ce nombre pourrait etre de 20 par exemple
- je pourrais définir un tableau Public de 20 cases : Public
Tableau(20)

as String

Si je ne dispose que de 6 paramètres : je rempli les 6 premieres
cases

du tableau avec mes 6 valeurs
puis je rempli les 24 cases qui restent avec 1 (ou plusieurs ) des
6


valeurs.

j'écrit dans mes requettes :
WHERE [Table1].[Champ1] = Tableau(0) Or [Table1].[Champ1] > Tableau(1)
....Or [Table1].[Champ1] = Tableau(29)

est ce que ça peux marcher ?
Quelles sont les pièges ou pb sous-jacents ?
Comment ecrire les 24 valeurs qui restent ?

@+
Alain