OVH Cloud OVH Cloud

Update de Query dans VB

3 réponses
Avatar
La Mouette
Bonjour,

j'ai une query qui prend en parametre une valeur: [id]. Dans le code VB, a un moment je fais ceci afin d'attribuer une valeur à [id]:

Dim qry As DAO.QueryDef
Dim db As DAO.Database

Set db = CurrentDb
Set qry = db.QueryDefs("maRequete")
qry.Parameters("id") = Me!SousFormulaire!idCheque

'ICI JE VOUDRAIS SAUVER LA QUERY (SAUVER LA NOUVELLE VALEUR DE ID DANS LA REQUETE)

qry.Close

Et je ne veux pas attribuer la valeur de [id] directement dans la requete car c'est une requete que j'utilise a plusieur endroit different.

Merci encore!

3 réponses

Avatar
?Lo»Paris?
Bonjour La Mouette,

Désolé mais on ne peux pas sauvegarder la valeur d'un paramètre dans une
requête.

Mais voici une petite solution (parmi bien d'autres)

Tu doit dupliquer ta requête, supprimer le paramètre, appliquer un critère
sur le champ en lui renseignant la valeur =%1 (ou la valeur de comparaison
que tu veux) le %1 servira de repère pour modifier le critère de la requête
et enregistrer celle-ci, le fonctionnement est expliquer dans le code
ci-dessous

****************************************
Public Sub fff()

'// Par exemple ta requête contient les instructions SQL suivantes :
'// SELECT MaTable.* FROM MaTable WHERE (((MaTable.ID)="%1"))
'// Le but et de remplacer le %1 par la valeur souhaiter :

Dim qry As DAO.QueryDef
Const C_rep As String = """%1""" '// double "" si valeur numérique sinon
supprime les.
Dim sSql As String
Dim sCrit As String

'// Requête modèle on extrait les commandes SQL de celle-ci,
'// mais on ne la modifie pas (le repère "%1" reste).
Set qry = CodeDb.QueryDefs("RQ1tmp")
sSql = qry.SQL
qry.Close

'// On ouvre la requête à modifier.
Set qry = CodeDb.QueryDefs("RQ1")

'// On remplace le caractère repère par son critère.
sCrit = Trim(Me!SousFormulaire!idCheque)
sSql = Replace(sSql, C_rep, sCrit, , , vbBinaryCompare)
qry.SQL = sSql
Debug.Print qry.SQL

'// On sauvegarde la requête.
qry.Close
Set qry = Nothing

End Sub
*********************************************

A toi de voir si cela convient pour ce que tu as à faire.

°Laurent°

"La Mouette" a écrit dans le message
de news:
Bonjour,

j'ai une query qui prend en parametre une valeur: [id]. Dans le code VB, a
un moment je fais ceci afin d'attribuer une valeur à [id]:


Dim qry As DAO.QueryDef
Dim db As DAO.Database

Set db = CurrentDb
Set qry = db.QueryDefs("maRequete")
qry.Parameters("id") = Me!SousFormulaire!idCheque

'ICI JE VOUDRAIS SAUVER LA QUERY (SAUVER LA NOUVELLE VALEUR DE ID DANS LA
REQUETE)


qry.Close

Et je ne veux pas attribuer la valeur de [id] directement dans la requete
car c'est une requete que j'utilise a plusieur endroit different.


Merci encore!



Avatar
Maxence HUBICHE [MVP Access]
Sinon, une solution encore plus simple ...
Tu crées une table.
Tu t'assures qu'elle ne contienne qu'une seule ligne : la valeur de ton
paramètre.
Tu fais ta requête, mais au lieu d'utiliser un paramètre, tu utilise le
champ de la table (que tu auras préalablement ajoutée à la requête)
Et ton [ID], il ne te reste plus qu'à l'inscrire dans la table :)

--
Maxence HUBICHE
Formateur et Developpeur Indépendant
Microsoft MVP Office Systems - Access
Rédacteur & Développeur sur http://www.developpez.com
Découvrez le forum Access de Developpez.com ici :
http://www.developpez.net/forums/viewforum.php?f8
"La Mouette" a écrit dans le message
de news:
Bonjour,

j'ai une query qui prend en parametre une valeur: [id]. Dans le code VB, a
un moment je fais ceci afin d'attribuer une valeur à [id]:


Dim qry As DAO.QueryDef
Dim db As DAO.Database

Set db = CurrentDb
Set qry = db.QueryDefs("maRequete")
qry.Parameters("id") = Me!SousFormulaire!idCheque

'ICI JE VOUDRAIS SAUVER LA QUERY (SAUVER LA NOUVELLE VALEUR DE ID DANS LA
REQUETE)


qry.Close

Et je ne veux pas attribuer la valeur de [id] directement dans la requete
car c'est une requete que j'utilise a plusieur endroit different.


Merci encore!



Avatar
?Lo»Paris?
Maxence HUBICHE [MVP Access] wrote:
Sinon, une solution encore plus simple ...
Tu crées une table.
Tu t'assures qu'elle ne contienne qu'une seule ligne : la valeur de
ton paramètre.
Tu fais ta requête, mais au lieu d'utiliser un paramètre, tu utilise
le champ de la table (que tu auras préalablement ajoutée à la requête)
Et ton [ID], il ne te reste plus qu'à l'inscrire dans la table :)



Salut Maxence,

Offff! c'est pas si compliquer que cela, si tu veux je peu t'expliquer comme
cela fonctionne, autrement ton idée est bonne.

--
°Laurent°