2017-08-29 5 views
0

J'ai un formulaire parent avec un contrôle onglet, chaque onglet contenant un rapport. J'essaye de placer un bouton de commande sur mon formulaire principal qui imprimera le rapport sur l'étiquette active. J'essaie fortement d'éviter de mettre un bouton "Imprimer" sur TOUS les rapports. Jusqu'à présent, je l'ai fait ce qui suit:Imprimer un sous-rapport à partir du formulaire (Accès 2016)

1.I am utilise cette ligne de code pour ouvrir le rapport sélectionné dans l'aperçu avant impression:

DoCmd.OpenReport Right(Me!Rpt0.SourceObject, Len(Me!Rpt0.SourceObject) - 7), acViewPreview 

Il semble si compliqué parce que quand vous avez un rapport en tant que sous-formulaire la propriété de l'objet source est Report.MyReport, donc j'ai dû éliminer le "Rapport". partie.

Jusqu'ici tout va bien.

2.J'ai également nommé tous les contrôles contenant les rapports en fonction de l'index de l'onglet qui les contient. Ainsi, Report on page 1 est Rpt0, à la page 2 est Rpt1 et ainsi de suite.

  1. Je suis en train de remplacer la partie "Rpt0" sur cette ligne de code avec une expression qui ressemble à ceci:

    myexp= "Rpt" & Me!TabCtl1.TabIndex 
    

    Ainsi, le code ci-dessus devient:

    DoCmd.OpenReport Right(Me!myexp.SourceObject, Len(Me!myexp.SourceObject) - 7), acViewPreview  
    

    et le rapport actif est choisi chaque fois.

Mon problème est avec le Dim As et Set .. Je ne suis pas familier avec eux et il semble que quelle que soit la combinaison que j'essaie je reçois une erreur « Objet requis », ou ou erreur d'exécution « 2465 » : impossible de trouver le champ "myexp".

Nous vous remercions à l'avance

Répondre

0

Il pourrait être:

DoCmd.OpenReport Right(Me(myexp).SourceObject, Len(Me(myexp).SourceObject) - 7), acViewPreview  
+0

Merci beaucoup Gustav !! C'était extrêmement facile ..! Si d'autres ont le même problème, le code final est le suivant: 'Private Sub Print_Report_Click() Dim sbfname As Chaîne sbfname =" Rpt "& Me.TabCtl1 DoCmd.OpenReport Droite (Me (sbfname) .SourceObject, Len (Me (sbfname) .SourceObject) - 7), acViewPreview End Sub' (Si quelqu'un sait comment ajouter des espaces ici, merci de le faire). J'ai également remplacé 'Me! Tabctl1.TabIndex' par' Me.Tabctl1' parce que le premier m'a toujours donné la première page et non la "visible". – aran0ia

+0

Génial! Vous pouvez ajouter le code final à votre question pour le rendre plus lisible. – Gustav