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

Récup du paramètre d'une requête dans du vba

5 réponses
Avatar
Jac
Bonjour à tous,

j'ai une procédure évènementielle qui ouvre une requête paramètrée qui
demande [Quel est le n° du département à afficher ?].

J'aurais besoin de récupérer la valeur saisie dans le paramètre de la
requête dans une variable du code vba afin de m'en servir un peu plus
loin...

Est-ce possible ou dois-je poser la question en vba et affecter la
réponse à la requête ? Mais dans les deux cas je ne vois pas trop
comment faire...

Merci d'avance pour vos suggestions.

Jac

5 réponses

Avatar
Gloops
Bonjour,

Il faudrait regarder la requête de plus près pour être catégoriqu e, mais
j'aurais une très nette préférence pour la deuxième solution.

Si tu te livres régulièrement à ce genre de sport, tu vas vite
t'apercevoir qu'il est avantageux d'automatiser un peu la chose.

Tu prépares la requête dans l'éditeur de requêtes d'Access, puis tu
passes en mode SQL (grâce au bouton-liste en haut à gauche), tu copie s
le code SQL de la requête, et tu le colles dans Word.

Tu places une marque de paragraphe à la fin de chaque ligne, et puis
ensuite tu effectues un remplacement sur les marques de paragraphes pour
placer chaque ligne entre guillemets et ajouter ce qu'il faut entre
deux, dans ce style :

strSQL = "UPDATE tabTest SET tesParam1='alpha', " + _
"tesParam2=3 WHERE tesClef='laclef'"

C'est là que ça peut être intéressant d'automatiser, car cette co mmande
de remplacement peut revenir assez régulièrement, donc une macro Word
pour faire ça peut s'avérer pratique.

Une fois que tu en es là, ça devient assez facile de sortir le paramè tre
voulu pour le lire dans une variable (note qu'il existe deux façons de
couper les lignes, et que j'en change là) :

strSQL = "UPDATE tabTest SET tesParam1='"

Jusque là, pas de changement, l'intéressant arrive ensuite.

strSQL = strSQL + strParam + "', "
strSQL = strSQL + "tesParam2 = " + VBA.Str$(intParam2)

Là, j'ai chargé la syntaxe, car je suis habitué aux contraintes pou r une
base développée en Access 95 qui doit tourner en Access 97 et 2000. S ur
une version plus récente et sans perspective de migration, j'imagine
qu'on peut se contenter de :

strSQL = strSQL + "tesParam2 = " & intParam2

et pour finir, en n'oubliant surtout pas l'espace (erreur très classiqu e
dans ce genre d'exercice) :

strSQL = strSQL + " WHERE tesClef='laclef'"

Tu noteras la présence des apostrophes autour du premier paramètre, d e
type caractère, et leur absence autour du deuxième, de type numériq ue.

Pour que l'exercice soit terminé, il reste encore à doubler les
apostrophes dans le paramètre chaîne de caractères, puisqu'il est
encadré d'apostrophes. La première ligne "intéressante" ci-dessus d evient :

strSQL = strSQL + VBA.Replace(strParam, "'", "''") + ", "

En deuxième argument de Replace, une apostrophe, en troisième argumen t,
deux apostrophes. Le préfixe VBA fait partie des habitudes que j'ai
évoquées pour une migration 95/97.

Voilà, à la fin de ça, tu as la saisie disponible dans strParam (si
c'est du texte) ou dans intParam2 (si c'est un nombre).

__________________________________
Jac a écrit, le 07/07/2008 17:29 :
Bonjour à tous,

j'ai une procédure évènementielle qui ouvre une requête paramè trée qui
demande [Quel est le n° du département à afficher ?].

J'aurais besoin de récupérer la valeur saisie dans le paramètre d e la
requête dans une variable du code vba afin de m'en servir un peu plus
loin...

Est-ce possible ou dois-je poser la question en vba et affecter la
réponse à la requête ? Mais dans les deux cas je ne vois pas trop
comment faire...

Merci d'avance pour vos suggestions.

Jac




Avatar
3stone
Salut,

"Jac"
| j'ai une procédure évènementielle qui ouvre une requête paramètrée qui
| demande [Quel est le n° du département à afficher ?].
|
| J'aurais besoin de récupérer la valeur saisie dans le paramètre de la
| requête dans une variable du code vba afin de m'en servir un peu plus
| loin...
|
| Est-ce possible ou dois-je poser la question en vba et affecter la
| réponse à la requête ? Mais dans les deux cas je ne vois pas trop
| comment faire...


Admettons que cette requête alimente un état...

Dans cet état, il suffit d'écrire comme source dans une zone de texte:

= [Quel est le n° du département à afficher ?]

en fait, la considérer comme un champ quelconque ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gloops
3stone a écrit, le 07/07/2008 20:40 :
Admettons que cette requête alimente un état...

Dans cet état, il suffit d'écrire comme source dans une zone de tex te:

= [Quel est le n° du département à afficher ?]

en fait, la considérer comme un champ quelconque ;-)




Ah, et après, se référer au nom de la zone de texte ?

Oh, mais tu en as, des bonnes idées, toi :)

Dans les cas où ça s'applique, il faut y penser.
Avatar
3stone
Salut Gloops,

"Gloops"
3stone a écrit, le 07/07/2008 20:40 :
Admettons que cette requête alimente un état...

Dans cet état, il suffit d'écrire comme source dans une zone de texte:

= [Quel est le n° du département à afficher ?]

en fait, la considérer comme un champ quelconque ;-)




| Ah, et après, se référer au nom de la zone de texte ?
|
| Oh, mais tu en as, des bonnes idées, toi :)
|
| Dans les cas où ça s'applique, il faut y penser.


Ce ne sont pas des idées ;-)
Cela fonctionnait déjà avec Access97, voir avant...

Bien connaître la version que l'on utilise est plus productif que
d'acheter la "dernière" version que l'on ne maîtrise pas ;-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gloops
3stone a écrit, le 11/07/2008 00:09 :
Ce ne sont pas des idées ;-)
Cela fonctionnait déjà avec Access97, voir avant...



Et même 95.
Access 2 je ne suis plus très sûr.


Bien connaître la version que l'on utilise est plus productif que
d'acheter la "dernière" version que l'on ne maîtrise pas ;-))



Pour sûr.

Parfois je ne m'embête pas, j'ai l'habitude d'un truc sophistiqué et je
fonce. Mais c'est vrai que c'est utile de pouvoir penser à des choses
plus simples.