Je cherche à faire la modification de la commande SQL sur laquelle est basé un rapport avant d'ouvrir celui-ci via une macro activée par un bouton.
Je sais le faire sur un formulaire grâce au code trouvé sur ce site, mais je n'ai rien vu pour faire la même chose sur un rapport.
Je précise que je ne souhaite pas que mon rapport s'appuie sur une requête à modifier avant ouverture (des exemples existent sur le site), mais bel et bien sur une commande SQL.
D'avance merci.
Je poste ici juste pour info le code que j'utilise pour faire la même opération sur un formulaire, code qui ne marche pas avec un rapport la propriété CommandType n'existant pas.
C'est peut être ma manière d'accéder à l'objet de mon rapport (via maConnexion) qui n'est pas la bonne ...
Code : Tout sélectionner
'Instruction SQL sélectionnant l'enregistrement de la table correspondant au critère
requeteSql = "SELECT * FROM T_recettes WHERE " & chaine
'Va récupérer le nom de l'élément dans Complément d'information du bouton appelant la macro
nomElement = fiEvt.Source.Model.Tag
'Appel la fonction OuvreLeFormulaireOuRapport avec le nom du formulaire en paramètre
nouvelElement= OuvreLeFormulaireOuRapport(nomElement, fiTypeObjet)
If (fiTypeObjet = BDDCUIS_RECH_FORMULAIRE ) Then
' On accède au formulaire principal (l'objet) du formulaire (fichier) en prenant comme
' hypothèse que ce formulaire principal habituellement nommé (MainForm) a été renommé
' du nom du formulaire ouvert.
nouvelElement = nouvelElement.DrawPage.Forms.getByName(nomElement)
Else
' On travaille sur un rapport. Le moyen d'y accéder passe par l'objet de connexion à la Bdd
maConnexion = fiEvt.Source.Model.Parent.ActiveConnection
nouvelElement = maConnexion.Parent.DatabaseDocument.ReportDocuments.getByName(nomElement)
EndIf
'défini le type de contenu du formulaire à instruction SQL
'la commande est utile car par défaut le type de contenu est sur Table
nouvelElement.Commandtype = 2
'défini le contenu du formulaire (la requête SELECT)
nouvelElement.command = requeteSql
nouvelElement.reload