OVH Cloud OVH Cloud

Paramètre dans une requête

11 réponses
Avatar
laurent
Bonjour,

J'aimerais ex=E9cuter =E0 partir de VB une requ=EAte d=E9finie=20
dans le "Requetteur" Access et qui comprend un param=E8tre.

Lorsque je tente d'ouvrir le recordset correspondant j'ai=20
un message du type "Trop peu de param=E8tres :1 attendu"

Ce param=E8tre d=E9pend d'un champs de liste s=E9lectionn=E9 sur=20
un formulaire.

Quel est l'astuce qui permet de fournir ce param=E8tre =E0 ma=20
requette et de l'ex=E9cuter dans VB ?

Merci

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour,

un exemple simple à adapter:

dim qdf as dao.QueryDef
Set qdf = CurrentDb.QueryDefs("Requête1")
qdf.Parameters("Date ?") = date()
qdf.Execute
Set qdf = Nothing

Date ? est le paramètre indiqué dans la requête enregistrée.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"laurent" a écrit dans le message de
news:a47401c4351f$3dd0aa00$
Bonjour,

J'aimerais exécuter à partir de VB une requête définie
dans le "Requetteur" Access et qui comprend un paramètre.

Lorsque je tente d'ouvrir le recordset correspondant j'ai
un message du type "Trop peu de paramètres :1 attendu"

Ce paramètre dépend d'un champs de liste sélectionné sur
un formulaire.

Quel est l'astuce qui permet de fournir ce paramètre à ma
requette et de l'exécuter dans VB ?

Merci
Avatar
Eric
"Raymond [mvp]" écrivait
news::

Bonjour,

un exemple simple à adapter:

dim qdf as dao.QueryDef
Set qdf = CurrentDb.QueryDefs("Requête1")
qdf.Parameters("Date ?") = date()
qdf.Execute
Set qdf = Nothing

Date ? est le paramètre indiqué dans la requête enregistrée.



Bonjour Raymond,

Je suis d'accord avec toi pour une requête Action.
Mais je ne suis jamais arrivé à passer un paramètre de cette manière à
une requête Sélection.
Pour ce genre de requête, j' y arrive dans le seul cas ou j'ouvre sur qdf
un recordset que je traite via le code mais je ne peux pas afficher
directement le jeu. Aurais tu une solution ?

Dans le cas ou je ne veux pas travailler avec un recordset, alors je
recrée le sql en code et passe le paramètre par concaténation, crée la
requête temporaire, l'ouvre par un DoCmd.OpenQuery et la supprime. Est-ce
une mauvaise méthode que de faire ainsi ?

Je te passe un exemple de ce que je fais pour des req Sélection

Private Sub Modifiable0_AfterUpdate()
LectureRecordset
ReconstructionParCode
End Sub

Sub LectureRecordset()
Dim strSQL As String, rq As DAO.QueryDef, rs As DAO.Recordset
Set rq = CurrentDb.QueryDefs("qryVille")
rq.Parameters("UneVille?") = Modifiable0
Set rs = rq.OpenRecordset
While Not rs.EOF
msg = msg & rs!Societe_Client & vbCrLf
rs.MoveNext
Wend
MsgBox msg
Set rq = Nothing
Set rs = Nothing
End Sub

Sub ReconstructionParCode()
Dim strSQL As String, rq As DAO.QueryDef
strSQL = "Select * from tclient where ville_client='" & Modifiable0 &
"';"
Debug.Print strSQL
Set rq = CurrentDb.CreateQueryDef("TempQry", strSQL)
DoCmd.OpenQuery "TempQry"
CurrentDb.QueryDefs.Delete "TempQry"
Set rq = Nothing
End Sub

A+ et merci des conseils
Eric

Avatar
Raymond [mvp]
Bonsoir Eric.

je suis resté sur le simple problème de passer un paramètre à la requête par
vba et l'execute qui implique une requête action et une fausse et/ou bonne
solution à la sortie
La Sub LectureRecordset convient très bien pour une requête sélection. cette
méthode a les avantages d'extérioriser les paramètres, de les afficher et
d'harmoniser les lancements des différentes sortes de requêtes. un
inconvénient est la longueur du code.

Pour laurent, car c'est quand même son problème:
Indiquer le type de requête : sélection, mise à jour , suppression etc....
ou prendre la solution qui convient au type de requête:

requête action:
dim qdf as dao.QueryDef
Set qdf = CurrentDb.QueryDefs("Requête1")
qdf.Parameters("Date ?") = date()
qdf.Execute
Set qdf = Nothing

requête sélection:
Sub LectureRecordset()
Dim rq As DAO.QueryDef, rs As DAO.Recordset
Set rq = CurrentDb.QueryDefs("qryVille")
rq.Parameters("UneVille?") = Modifiable0
Set rs = rq.OpenRecordset
While Not rs.EOF
msg = msg & rs!Societe_Client & vbCrLf
rs.MoveNext
Wend
MsgBox msg
Set rq = Nothing
Set rs = Nothing
End Sub

en espérant ne pas t'avoir trop embrouiller avec nos remarques.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
Avatar
Merci à tous les deux..

Il s'agissait effectivement d'un cas d'un requete
sélection.

Laurent
-----Message d'origine-----
Bonsoir Eric.

je suis resté sur le simple problème de passer un
paramètre à la requête par

vba et l'execute qui implique une requête action et une
fausse et/ou bonne

solution à la sortie
La Sub LectureRecordset convient très bien pour une
requête sélection. cette

méthode a les avantages d'extérioriser les paramètres, de
les afficher et

d'harmoniser les lancements des différentes sortes de
requêtes. un

inconvénient est la longueur du code.

Pour laurent, car c'est quand même son problème:
Indiquer le type de requête : sélection, mise à jour ,
suppression etc....

ou prendre la solution qui convient au type de requête:

requête action:
dim qdf as dao.QueryDef
Set qdf = CurrentDb.QueryDefs("Requête1")
qdf.Parameters("Date ?") = date()
qdf.Execute
Set qdf = Nothing

requête sélection:
Sub LectureRecordset()
Dim rq As DAO.QueryDef, rs As DAO.Recordset
Set rq = CurrentDb.QueryDefs("qryVille")
rq.Parameters("UneVille?") = Modifiable0
Set rs = rq.OpenRecordset
While Not rs.EOF
msg = msg & rs!Societe_Client & vbCrLf
rs.MoveNext
Wend
MsgBox msg
Set rq = Nothing
Set rs = Nothing
End Sub

en espérant ne pas t'avoir trop embrouiller avec nos
remarques.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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


.



Avatar
Raymond [mvp]
Bonjour Eric.

J'en ai profité pour mettre à jour mon site:
http://access.seneque.free.fr/requetes_vba.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
Avatar
www.eztree-msdn.com \(Laurent Jordi\) Enlever le s à infos pour me contacter par mail
Salut,

Etant donné que tu bosses pour la bonne cause, si tu le souhaite je peux
t'ouvrir un compte (gratos) sur mon système de génération de site c'est
assez balèze et aussi simple que Word. pour la version light et un peu plus
compliqué pour la version multi éditions...

ça t'interesse ?

@+

LJ



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

J'en ai profité pour mettre à jour mon site:
http://access.seneque.free.fr/requetes_vba.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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




Avatar
Raymond [mvp]
Bonjour.

avant que ça m'interesse il faut savoir ce que tu proposes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me contacter
par mail" a écrit dans le message de
news:
Salut,

Etant donné que tu bosses pour la bonne cause, si tu le souhaite je peux
t'ouvrir un compte (gratos) sur mon système de génération de site c'est
assez balèze et aussi simple que Word. pour la version light et un peu
plus

compliqué pour la version multi éditions...

ça t'interesse ?

@+

LJ


Avatar
www.eztree-msdn.com \(Laurent Jordi\) Enlever le s à infos pour me contacter par mail
Contacte moi par mail... info[@]ezlogic.mc sans les []


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

avant que ça m'interesse il faut savoir ce que tu proposes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me
contacter

par mail" a écrit dans le message de
news:
Salut,

Etant donné que tu bosses pour la bonne cause, si tu le souhaite je peux
t'ouvrir un compte (gratos) sur mon système de génération de site c'est
assez balèze et aussi simple que Word. pour la version light et un peu
plus

compliqué pour la version multi éditions...

ça t'interesse ?

@+

LJ






Avatar
Eric
"Raymond [mvp]" écrivait news:eyLnQCdNEHA.892
@TK2MSFTNGP09.phx.gbl:

Bonjour Eric.

J'en ai profité pour mettre à jour mon site:
http://access.seneque.free.fr/requetes_vba.htm



Bonjour Raymond,

Ton site est vraiment top. Il faudrait qu'un jour je lui passe un coup
d'aspirateur ;-).
C'est une véritable mine d'or et je me rend compte du travail que j'ai à
fournir pour "maitriser" Access.

De même, je me dis que ceux qui viennent ici poser des questions, ou ne
serait-ce que compléter leurs méthodes de travail en Access, disposent d'un
centre inimaginable de ressources : méthodes, conseils, procédures ... rien
qu'avec vos sites (Anor, Pierre(s), Jessy, toi et ceux que j'ai
malencontreusement oublié), d'autant plus qu'il y a peu, voire très peu,
d'ouvrages traitant de la programmation Access et donnant autant
d'informations claires et exposées de manière accessible à tous.

A+
Eric

Avatar
Raymond [mvp]
Merci.

on ne sait souvent pas ce que ça représente et à ce jour
access.seneque.free.fr c'est:
322 pages html.
44 images.
114 bases exemples en téléchargement.
209 fonctions vba disponibles.
50 Mo d'espace disque.

de plus il existe un site privé réservé aux abonnés qui eux profitent
d'avantages supplémentaires tels que messenger, toutes les sources des
librairies et la bibliothèque de codes (toutes les fonctions du site et
d'autres dans une base access) compatible Codelib Access 2000.
Voilà c'est tout.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
"Raymond [mvp]" écrivait news:eyLnQCdNEHA.892
@TK2MSFTNGP09.phx.gbl:

Bonjour Eric.

J'en ai profité pour mettre à jour mon site:
http://access.seneque.free.fr/requetes_vba.htm



Bonjour Raymond,

Ton site est vraiment top. Il faudrait qu'un jour je lui passe un coup
d'aspirateur ;-).
C'est une véritable mine d'or et je me rend compte du travail que j'ai à
fournir pour "maitriser" Access.

De même, je me dis que ceux qui viennent ici poser des questions, ou ne
serait-ce que compléter leurs méthodes de travail en Access, disposent
d'un

centre inimaginable de ressources : méthodes, conseils, procédures ...
rien

qu'avec vos sites (Anor, Pierre(s), Jessy, toi et ceux que j'ai
malencontreusement oublié), d'autant plus qu'il y a peu, voire très peu,
d'ouvrages traitant de la programmation Access et donnant autant
d'informations claires et exposées de manière accessible à tous.

A+
Eric





1 2