Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Origineel KB-nummer: 812719
In dit artikel wordt beschreven hoe u programmatisch een kolom maakt in een Access-rapport. U kunt de kolom dynamisch toevoegen aan het rapport met behulp van methode 1 of methode 2 die worden beschreven in de sectie Meer informatie.
Notitie
De voorbeeldcode in dit artikel maakt gebruik van Microsoft Data Access-objecten. Deze code wordt alleen correct uitgevoerd als u naar de Microsoft DAO 3.6-objectbibliotheek verwijst. Klik hiervoor op Verwijzingen in het menu Extra in de Visual Basic-Editor en zorg ervoor dat het selectievakje Microsoft DAO 3.6-objectbibliotheek is ingeschakeld.
In het volgende voorbeeld ziet u hoe u programmatisch een Access-rapport maakt. De code genereert een rapport dat is gebaseerd op een recordbronquery. In het gegenereerde rapport worden de kolom Firstname en de kolom Lastname van de tabel Werknemers van de Northwind.mdb voorbeelddatabase weergegeven.
Start Access.
Klik in het menu Help op Voorbeelddatabases en klik vervolgens op Voorbeelddatabase northwind. Sluit het formulier Hoofdschakelbord wanneer dit wordt weergegeven.
Notitie
Klik in Access 2007 op Voorbeeld in het deelvenster Sjablooncategorieën , klik op Northwind 2007 en klik vervolgens op Downloaden.
Klik in het linkerdeelvenster op Rapporten.
Notitie
Sla in Access 2007 deze stap over.
Dubbelklik in het rechterdeelvenster op Rapport maken in de ontwerpweergave.
Notitie
Klik in Access 2007 op Rapportontwerp in de groep Rapporten op het tabblad Maken .
Klik in het menu Bestand op Opslaan.
Notitie
Klik in Access 2007 op Microsoft Office-knop en klik vervolgens op Opslaan.
Typ AccessColumnBuilder in het dialoogvenster Opslaan als en klik vervolgens op OK.
Sluit het rapport.
Selecteer Formulieren in het linkerdeelvenster.
Notitie
Sla in Access 2007 deze stap over.
Dubbelklik in het rechterdeelvenster op Formulier maken in de ontwerpweergave.
Notitie
Klik in Access 2007 op Formulierontwerp in de groep Formulieren op het tabblad Maken .
Voeg een opdrachtknop toe aan het formulier.
Notitie
Klik in Access 2007 op Knop om een knop toe te voegen aan het formulier in de groep Besturingselementen op het tabblad Ontwerpen .
Klik met de rechtermuisknop op de opdrachtknop, klik op Build-gebeurtenis, klik op Code builder in het dialoogvenster Opbouwfunctie kiezen en klik vervolgens op OK.
Voeg de volgende code toe aan de gebeurtenis OnClick van de opdrachtknop:
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.
Sla het formulier op en voer het vervolgens uit.
Als u een voorbeeld van het rapport wilt bekijken, klikt u op de opdrachtknop die u in stap 10 hebt toegevoegd.
De volgende records worden weergegeven op de eerste pagina:
First NameLast Name NancyDavolio MargaretPeacock ...............
Het rapport bevat de kolom Firstname en de kolom Lastname van de tabel Werknemers . U kunt het rapport opslaan of de vereiste wijzigingen aanbrengen in de query en vervolgens het rapport uitvoeren.
Methode 2: Kolommen toevoegen aan het rapport tijdens runtime door de eigenschap Visible van de bestaande kolom in te stellen
In dit voorbeeld ziet u hoe u een nieuwe kolom in een rapport kunt weergeven door de eigenschap Visible van het besturingselement te bewerken.
Het rapport bevat vier kolommen. De Visible
eigenschap van de eerste drie kolommen is ingesteld op ja. De Visible
eigenschap van de vierde kolom is ingesteld op nee. Bij een pagina-einde wordt de Visible
eigenschap van de vierde kolom ingesteld op ja wanneer de kolom wordt weergegeven.
Start Access.
Klik in het menu Help op Voorbeelddatabases en klik vervolgens op Voorbeelddatabase northwind. Sluit het formulier Hoofdschakelbord wanneer dit wordt weergegeven.
Notitie
Klik in Access 2007 op Voorbeeld in het deelvenster Sjablooncategorieën , klik op Northwind 2007 en klik vervolgens op Downloaden.
Voer de volgende stappen uit om een rapport met de naam Rapport1 te maken dat is gebaseerd op de tabel Producten :
Klik in het venster Database op Rapporten en klik vervolgens op Nieuw.
Notitie
Klik in Access 2007 op Wizard Rapport in de groep Rapporten op het tabblad Maken .
Klik in het dialoogvenster Nieuw rapport op Ontwerpweergave, selecteer Producten en klik vervolgens op OK.
Voeg de volgende tekstvakken toe aan de sectie Detail van het rapport. De tekstvakken uitlijnen.
Plaats de bijbehorende labels in de sectie Paginakoptekst van het rapport. Lijn de labels uit.
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
Voeg een besturingselement tekstvak met de volgende eigenschappen toe aan de sectie Detail . Plaats het tekstvak direct boven het besturingselement ProductName .
Dit besturingselement fungeert als een teller voor het aantal records in het rapport.
Text Box: ----------------------- Name: Counter ControlSource: =1 Visible: No RunningSum: Over All
Klik in de werkset op Pagina-einde.
Notitie
Klik in Access 2007 op Pagina-einde toevoegen of verwijderen in de groep Besturingselementen op het tabblad Ontwerpen .
Voeg een besturingselement voor pagina-einde toe aan de linkerbenedenhoek van de sectie Detail . Plaats het besturingselement pagina-einde direct onder het besturingselement ProductName . Stel de eigenschap Name in op PageBreak.
Stel in de sectie Detail de eigenschap OnFormat in op de volgende gebeurtenisprocedure:
If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _ Else Me![PageBreak].Visible = False
Als u de lege ruimte in het rapport wilt verkleinen, plaatst u de aanwijzer tussen de onderkant van de sectie Detail en de paginavoettekst en sleept u omhoog.
Stel in de sectie Paginavoettekst de eigenschap OnPrint in op de volgende gebeurtenisprocedure:
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
Wanneer PageBreak optreedt, wordt de kolom TotalPrice weergegeven.
Bekijk een voorbeeld van het rapport. De volgende records worden weergegeven op de eerste pagina:
Product NameUnit PriceUnit in Stock Cahi$18.0039 Chang$19.0017
Notitie
De eerste pagina van het rapport bevat drie kolommen.
De volgende records worden weergegeven op de tweede pagina:
Product NameUnit PriceUnit in StockTotal Amount Aniseed Syrup $10.0013 130 Chef A... $22.00 53 1166
Notitie
Het pagina-einde vindt plaats na de eerste pagina. Daarom bevat de tweede pagina van het rapport vier kolommen.
Ga naar het volgende artikel voor meer informatie over het programmatisch maken van een Access-rapport: