Passage de paramètre VBA dans requête SQL
Bonsoir.
Je suis en train de développer une petite application de facturation.
Pour se faire, je dois calculer le montant d' une facture, d' un BL, d' une facture des BL émis pour un client.
Au départ, j' ai trois formulaires:
un formulaire création d' une facture soit F1
un formulaire modification d' une facture soit F2
un formulaire de facturation des BL d' un client soit F3.
Les calculs dans les trois cas sont les même. Seul les critères diffèrent à savoir:
Cas 1: Clé de préparation=F1!Clé de préparation
Cas 2: Clé de préparation=F2!Clé de préparation
Cas 3: Clé de préparation=F3!Clé de préparation
Plutôt que d' avoir trois procédures distinctes et sachant que le code SQL est dans le code VBA, peut-on récupérer le nom du formulaire déclanchant cette procédure et l' utiliser comme paramètre.
Exemple:
Code:
1 2
| NomFormulaire=Forms(0).Name
Requête="select.....Clé_préparation=NomFormulaire!Clé_Préparation;" |
Quand pensez-vous?
Cordialement
Passage de paramètre VBA dans reqête SQL
Bonsoir,
Je dois mal utiliser votre solution car j' obtiens un message d' erreur. Voici une requête exemple/
Code:
1 2 3
| SELECT T_BdrLv.Cf_BL, T_BdrLv.Cf_Clt, T_BdrLv.DtBL
FROM T_BdrLv
WHERE (((T_BdrLv.Cf_Clt)=[Formulaires]![F_DtnFctBLFct]![Cf_Clt])); |
En fait, seule la partie "[Formulaires]![F_DtnFctBLFct]" est différente suivant l' origine de l' appel de procédure.
Suivant votre argument numR, je lui demande de trouver le nom du formulaire actif. Ensuite, j' ai tenté de l' in sérer dans la requête mais sans succés.
Voir code ci-dessous.
Code:
1 2 3 4 5 6 7 8
| Public Sub Requete(NmR As String)
Dim Rqt As String
NmR = Forms(2).Name
MsgBox NmR 'Cette boite ne sert qu' à vérifier le nom du formulaire
Rqt = "SELECT T_BdrLv.Cf_BL, T_BdrLv.Cf_Clt, T_BdrLv.DtBL FROM T_BdrLv " & _
"WHERE (((T_BdrLv.Cf_Clt)=NmR!Clt));"
DoCmd.RunSQL Rqt
End Sub |
Merci de m' expliquer mon erreur
Parametre dans instruction SQL
Bonjour,
Je teste et torture votre solution sans succès. J' obtiens toujours lors de l' exécution pas à pas, le message suivant:
Une action executerSQL nécessite un argument consistant en une instruction SQL.
Pour info, le code tel que je l' ai testé:
Code:
1 2 3 4 5 6 7 8 9
| Public Sub Requete(NmR As String)
Dim Rqt As String
NmR = Forms(1).Name
MsgBox NmR
Rqt = "SELECT T_BdrLv.Cf_BL, T_BdrLv.Cf_Clt, T_BdrLv.DtBL FROM T_BdrLv " & _
"WHERE (((T_BdrLv.Cf_Clt)=" & NmR & "!Cf_Clt));"
DoCmd.RunSQL Rqt
End Sub |
Les clé Cf_Clt sont tout les deux numérique
Cordialement