Comment créer par programmation une colonne dans un rapport Access
Numéro de la base de connaissances d’origine : 812719
Résumé
Cet article explique comment créer par programmation une colonne dans un rapport Access. Vous pouvez ajouter dynamiquement la colonne au rapport à l’aide de la méthode 1 ou de la méthode 2 décrites dans la section « Plus d’informations ».
Remarque
L’exemple de code de cet article utilise Microsoft Data Access Objects. Pour que ce code s’exécute correctement, vous devez référencer la bibliothèque d’objets Microsoft DAO 3.6. Pour ce faire, cliquez sur Références dans le menu Outils de la Rédacteur Visual Basic, puis vérifiez que la zone case activée Bibliothèque d’objets Microsoft DAO 3.6 est cochée.
Méthode 1 : Ajouter des colonnes au rapport par programmation
L’exemple suivant montre comment créer un rapport Access par programmation. Le code génère un rapport basé sur une requête de source d’enregistrement. Le rapport généré affiche la colonne Firstname et la colonne Lastname de la table Employees de l’exemple de base de données Northwind.mdb.
Démarrez Access.
Dans le menu Aide , cliquez sur Exemples de bases de données, puis sur Exemple de base de données Northwind. Fermez le formulaire Tableau principal lorsqu’il apparaît.
Remarque
Dans Access 2007, cliquez sur Exemple dans le volet Catégories de modèles, cliquez sur Northwind 2007, puis sur Télécharger.
Dans le volet gauche, cliquez sur Rapports.
Remarque
Dans Access 2007, ignorez cette étape.
Dans le volet droit, double-cliquez sur Créer un rapport en mode Création.
Remarque
Dans Access 2007, cliquez sur Création de rapports dans le groupe Rapports sous l’onglet Créer .
Dans le menu Fichier, cliquez sur Enregistrer.
Remarque
Dans Access 2007, cliquez sur le bouton Microsoft Office, puis sur Enregistrer.
Dans la boîte de dialogue Enregistrer sous , tapez AccessColumnBuilder, puis cliquez sur OK.
Fermez le rapport.
Dans le volet gauche, sélectionnez Formulaires.
Remarque
Dans Access 2007, ignorez cette étape.
Dans le volet droit, double-cliquez sur Créer un formulaire en mode Création.
Remarque
Dans Access 2007, cliquez sur Création de formulaire dans le groupe Formulaires sous l’onglet Créer .
Ajoutez un bouton de commande au formulaire.
Remarque
Dans Access 2007, cliquez sur Bouton pour ajouter un bouton au formulaire dans le groupe Contrôles de l’onglet Création .
Cliquez avec le bouton droit sur le bouton de commande, cliquez sur Générer un événement, cliquez sur Générateur de code dans la boîte de dialogue Choisir le Générateur , puis cliquez sur OK.
Ajoutez le code qui suit à l’événement OnClick du bouton de commande :
Dim txtNew As Access.TextBox Dim labNew As Access.Label Dim lngTop As Long Dim lngLeft As Long Dim lblCol As Long Dim rpt As Report Dim reportQuery As String Dim rs As DAO.Recordset Dim i As Integer Dim prevColwidth As long lngLeft = 0 lngTop = 0 ' Open the report to design. ' To make changes in the number of columns that appear at run time. DoCmd.OpenReport "AccessColumnBuilder", acViewDesign Set rpt = Reports![AccessColumnBuilder] ' Change the number of columns required as per your requirement. reportQuery = "SELECT FirstName, LastName FROM Employees" ' Open the recordset. Set rs = CodeDb().OpenRecordset(reportQuery) ' Assign the query as a record source to report control. rpt.RecordSource = reportQuery ' Set the value to zero so that the left margin is initialized. prevColwidth = 0 lblCol = 0 ' Print the page header for the report. For i = 0 To rs.Fields.Count - 1 Set labNew = CreateReportControl(rpt.Name, acLabel, acPageHeader, _ , rs.Fields(i).Name, lblcol, , , lngTop) labNew.SizeToFit lblCol = lblCol + 600 + labNew.Width Next ' Create the column depending on the number of fields selected in reportQuery. ' Assign the column value to new created column. For i = 0 To rs.Fields.Count - 1 ' Create new text box control and size to fit data. Set txtNew = CreateReportControl(rpt.Name, acTextBox, _ acDetail, , , lngLeft + 15 + prevColwidth, lngTop) txtNew.SizeToFit txtNew.ControlSource = rs(i).Name ' Modify the left margin depending on the number of columns ' and the size of each column. prevColwidth = prevColwidth + txtNew.width Next 'To save the modification to the report, uncomment the following line of code: 'DoCmd.Save ' View the generated report. DoCmd.OpenReport "AccessColumnBuilder", acViewPreview ' This opens the report in preview.
Enregistrez, puis exécutez le formulaire.
Pour afficher un aperçu du rapport, cliquez sur le bouton de commande que vous avez ajouté à l’étape 10.
Les enregistrements qui suivent apparaissent sur la première page :
First NameLast Name NancyDavolio MargaretPeacock ...............
Le rapport contient la colonne Firstname et la colonne Lastname de la table Employees . Vous pouvez enregistrer le rapport ou apporter les modifications requises à la requête, puis exécuter le rapport.
Méthode 2 : Ajouter des colonnes au rapport au moment de l’exécution en définissant la propriété visible de la colonne existante
Cet exemple montre comment afficher une nouvelle colonne dans un rapport en manipulant la propriété Visible du contrôle.
Le rapport contient quatre colonnes. La Visible
propriété des trois premières colonnes est définie sur oui. La Visible
propriété de la quatrième colonne est définie sur non. Dans un saut de page, la Visible
propriété de la quatrième colonne est définie sur Oui lorsque la colonne s’affiche.
Démarrez Access.
Dans le menu Aide , cliquez sur Exemples de bases de données, puis sur Exemple de base de données Northwind. Fermez le formulaire Tableau principal lorsqu’il apparaît.
Remarque
Dans Access 2007, cliquez sur Exemple dans le volet Catégories de modèles, cliquez sur Northwind 2007, puis sur Télécharger.
Pour créer un rapport nommé Report1 et basé sur la table Products , procédez comme suit :
Dans la fenêtre Base de données , cliquez sur Rapports , puis sur Nouveau.
Remarque
Dans Access 2007, cliquez sur Assistant Rapport dans le groupe Rapports sous l’onglet Créer .
Dans la boîte de dialogue Nouveau rapport , cliquez sur Mode Création, sélectionnez Produits, puis cliquez sur OK.
Ajoutez les zones de texte suivantes à la section Détails du rapport. Alignez les zones de texte.
Placez les étiquettes correspondantes dans la section En-tête de page du rapport. Alignez les étiquettes.
Report: Report1 -------------------------- Caption: TestReport ControlSource: Products Label: Name: ProductName_label Text Box: Name: ProductName ControlSource: ProductName Label: Name: UnitPrice_label Text Box: Name: UnitPrice ControlSource: UnitPrice Label: Name: UnitsInStock_label Text Box: Name: UnitsInStock ControlSource: UnitsInStock Label: Name: TotalPrice_label Visible: No Text Box: Name: TotalPrice ControlSource: =[UnitPrice] * [UnitsInStock] Visible: No
Ajoutez un contrôle de zone de texte avec les propriétés suivantes à la section Detail . Placez la zone de texte directement au-dessus du contrôle ProductName .
Ce contrôle fait office de compteur pour le nombre d’enregistrements dans le rapport.
Text Box: ----------------------- Name: Counter ControlSource: =1 Visible: No RunningSum: Over All
Dans la boîte à outils, cliquez sur Saut de page.
Remarque
Dans Access 2007, cliquez sur Ajouter ou supprimer un saut de page dans le groupe Contrôles de l’onglet Création .
Ajoutez un contrôle de saut de page dans le coin inférieur gauche de la section Détails . Placez le contrôle de saut de page directement sous le contrôle ProductName . Définissez la propriété Name sur PageBreak.
Dans la section Detail , définissez la propriété OnFormat sur la procédure événementielle suivante :
If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _ Else Me![PageBreak].Visible = False
Pour réduire l’espace vide dans le rapport, placez votre pointeur entre le bas de la section Détails et le pied de page , puis faites glisser vers le haut.
Dans la section Pied de page , définissez la propriété OnPrint sur la procédure événementielle qui suit :
If Me![PageBreak].Visible = True Then Me![TotalPrice].Visible = True Me![TotalPrice_label].Visible = True Else Me![TotalPrice].Visible = False Me![TotalPrice_label].Visible = False End If
Lorsque PageBreak se produit, la colonne TotalPrice s’affiche .
Affichez un aperçu du rapport. Les enregistrements qui suivent apparaissent sur la première page :
Product NameUnit PriceUnit in Stock Cahi$18.0039 Chang$19.0017
Remarque
La première page du rapport contient trois colonnes.
Les enregistrements qui suivent apparaissent sur la deuxième page :
Product NameUnit PriceUnit in StockTotal Amount Aniseed Syrup $10.0013 130 Chef A... $22.00 53 1166
Remarque
Le saut de page se produit après la première page. Par conséquent, la deuxième page du rapport contient quatre colonnes.
References
Pour plus d’informations sur la création par programmation d’un rapport Access, consultez l’article suivant :
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour