Bonjour à tous et merci de votre temps.
J'ai une combolist (liste déroulante) dont le contenu dépend d'un champ dans mon formulaire.
Je connais 3 méthodes pour passer le paramètre à la query sous-jacente de ma combolist.
1) Par référencement direct du type [forms]![moForms]![monChamp]
2) Par du SQL dans du code VBA du type SQL="SELECT ... "
3) Par utilisation d'un table de paramétrage
(Merci la FAQ :-)
Le problème avec les 2 première solutions c'est que le lien est fort et comme je suis en phase de développement je change souvant mes noms de forms et la structure de mes requètes. Deplus conceptuellement parlant, deux objets ne devraient pas se connaitre en dehors de leurs interfaces (ici les paramètres).
La troisième n'est pas applicable dans l'environnement multi-utilisateur qui est le mien.
Ce que j'aimerai faire c'est passer des paramètres SQL en SQL.
Voici ma requète :
L'important ici ce sont les 2 params de la clause Where.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PARAMETERS prmCodePeriode Text ( 255 ), prmCodeTypeElementFacturation Text ( 255 ); SELECT PrixUnitaireElement.Clef, PrixUnitaireElement.CodePeriode, PrixUnitaireElement.ClefElementFacturation, TypeElementFacturation.Code AS CodeTypeElementFacturation, TypeElementFacturation.Libelle AS LibelleTypeElementFacturation, TypeElementFacturation.CoefficientApplicaple AS CoefficientApplicapleTypeElementFacturation, ElementFacturation.Code AS CodeElementFacturation, ElementFacturation.Libelle AS LibelleElementFacturation, PrixUnitaireElement.PrixUnitaire FROM TypeElementFacturation INNER JOIN (ElementFacturation INNER JOIN PrixUnitaireElement ON ElementFacturation.Clef = PrixUnitaireElement.ClefElementFacturation) ON TypeElementFacturation.Code = ElementFacturation.Type WHERE (((PrixUnitaireElement.CodePeriode)=[prmCodePeriode]) AND ((TypeElementFacturation.Code)=[prmCodeTypeElementFacturation])) ORDER BY ElementFacturation.Code;
Voici le code que j'ai essayé pour ajouter la valeur de mes param à la clause SQL de ma requète. L'avantage de cette solution est une immense souplesse de travail car ma requète et mon formulaire ne sont pas reliés directement. Je peux facilement vérifier l'un et l'autre en bénéficiant de tous les contrôles d'Access.
Donc je récupère le SQL de la requète et j'ajoute les param à la fin et idéalement j'aimerai avoir des paramètres nommés plutôt que positionnels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4Dim SQL As String SQL = CurrentDb.QueryDefs("rChoixPrixUnitaire").SQL & "'" & Me.ChoixCodePeriode & "' '" & Me.ChoixCodeTypeElementFacturation & "'" Me.ChoixPrixUnitaire.RowSource = SQL
mais j'ai l'erreur :
'Caractères trouvés après la fin de l'instruction SQL.'
Je pense que c'est simplement un erreur de syntaxe de ma part mais je n'arrive pas à trouver la bonne façon de l'écrire.
Quelqu'un a déjà fait cela ?
A+








Répondre avec citation


Partager