Så här skapar du en ny kolumn i en Access-rapport på ett programmatiskt sätt
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Ursprungligt KB-nummer: 812719
Sammanfattning
I den här artikeln beskrivs hur du programmässigt skapar en kolumn i en Access-rapport. Du kan dynamiskt lägga till kolumnen i rapporten med hjälp av metod 1 eller metod 2 som beskrivs i avsnittet "Mer information".
Anteckning
Exempelkoden i den här artikeln använder Microsoft Data Access-objekt. För att den här koden ska fungera korrekt måste du referera till Microsoft DAO 3.6-objektbiblioteket. Det gör du genom att klicka på Referenser på Verktyg-menyn i Visual Basic Editor och kontrollera att kryssrutan Microsoft DAO 3.6-objektbibliotek är markerad. Tools
Metod 1: Lägga till kolumner i rapporten programmässigt
Exemplet som följer visar hur du programmässigt skapar en Access-rapport. Koden genererar en rapport som baseras på postkällans fråga. Den genererade rapporten visar kolumnen Förnamn och kolumnen Efternamn i tabellen Anställda i exempeldatabasen Northwind.mdb.
Starta åtkomst.
Klicka på Exempeldatabaserpå Hjälp-menyn och klicka sedan på Exempeldatabas för Nordvind. Stäng formuläret Huvudväxeltavla när det visas.
Anteckning
Klicka på Exempel i fönstret Mallkategorier i Access 2007, klicka på Northwind 2007och klicka sedan på Hämta.
Klicka på Rapporteri den vänstra rutan .
Anteckning
Hoppa över det här steget i Access 2007.
Dubbelklicka på Skapa rapport i designvyn iden högra rutan.
Anteckning
I Access 2007 klickar du på Rapportdesign i gruppen Rapporter på fliken Skapa.
Klicka på Sparapå Arkiv-menyn.
Anteckning
I Access 2007 klickar du på Microsoft Office-knappenoch sedan på Spara.
Skriv AccessColumnBuilder i dialogrutan Spara som och klicka sedan på OK.
Stäng rapporten.
Välj Formuläri den vänstra rutan .
Anteckning
Hoppa över det här steget i Access 2007.
Dubbelklicka på Skapa formulär i designvyn iden högra rutan.
Anteckning
I Access 2007 klickar du på Formulärdesign i gruppen Formulär på fliken Skapa.
Lägg till en kommandoknapp i formuläret.
Anteckning
I Access 2007 klickar du på Knapp för att lägga till en knapp i formuläret i gruppen Kontroller på fliken Design.
Högerklicka på kommandoknappen, klicka på Skapa händelse, klicka på Kodbyggare i dialogrutan Välj byggare och klicka sedan på OK.
Lägg till koden som följer i OnClick-händelsen för kommandoknappen:
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.
Spara och kör sedan formuläret.
Om du vill förhandsgranska rapporten klickar du på kommandoknappen som du lade till i steg 10.
Posterna som följer visas på första sidan:
First NameLast Name NancyDavolio MargaretPeacock ...............
Rapporten innehåller kolumnen Förnamn och kolumnen Efternamn i tabellen Anställda. Du kan antingen spara rapporten eller göra nödvändiga ändringar i frågan och sedan köra rapporten.
Metod 2: Lägga till kolumner i rapporten vid körning genom att ange den synliga egenskapen för den befintliga kolumnen
I det här exemplet visas hur du visar en ny kolumn i en rapport genom att ändra kontrollens synliga egenskap.
Rapporten innehåller fyra kolumner. Visible
Egenskapen för de tre första kolumnerna är inställd på ja. Visible
Egenskapen för den fjärde kolumnen är inställd på nej. Vid en sidbrytning Visible
anges egenskapen för den fjärde kolumnen till ja när kolumnen visas.
Starta åtkomst.
Klicka på Exempeldatabaserpå Hjälp-menyn och klicka sedan på Exempeldatabas för Nordvind. Stäng formuläret Huvudväxeltavla när det visas.
Anteckning
I Access 2007 klickar du på Exempel i fönstret Mallkategorier, klickar på Northwind 2007och sedan på Hämta.
Så här skapar du en rapport med namnet Rapport1 och baseras på tabellen Produkter:
Klicka på Rapporter i databasfönstret och klicka sedan på Ny.
Anteckning
I Access 2007 klickar du på Rapportguiden i gruppen Rapporter på fliken Skapa.
Klicka på Designvyi dialogrutan Ny rapport, välj Produkteroch klicka sedan på OK.
Lägg till följande textrutor i avsnittet Detalj i rapporten. Justera textrutorna.
Placera motsvarande etiketter i avsnittet Sidhuvud i rapporten. Justera etiketterna.
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
Lägg till en textrutekontroll med följande egenskaper i avsnittet Detalj. Placera textrutan direkt ovanför productname-kontrollen.
Den här kontrollen fungerar som en räknare för antalet poster i rapporten.
Text Box: ----------------------- Name: Counter ControlSource: =1 Visible: No RunningSum: Over All
Klicka på Sidbrytningi verktygslådan.
Anteckning
I Access 2007 klickar du på Lägg till eller ta bort sidbrytning i gruppen Kontroller på fliken Design.
Lägg till en sidbrytningskontroll i det nedre vänstra hörnet i avsnittet Detalj. Placera sidbrytningskontrollen direkt under productname-kontrollen. Ange egenskapen Name till PageBreak.
I avsnittet Detalj anger du egenskapen OnFormat till följande händelseprocedur:
If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _ Else Me![PageBreak].Visible = False
Om du vill minska det tomma utrymmet i rapporten placerar du pekaren mellan botten av avsnittet Detalj och sidfoten och drar sedan uppåt.
I avsnittet Sidfot anger du egenskapen OnPrint till händelseproceduren som följer:
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
När PageBreak inträffar visas kolumnen TotalPrice.
Förhandsgranska rapporten. Posterna som följer visas på första sidan:
Product NameUnit PriceUnit in Stock Cahi$18.0039 Chang$19.0017
Anteckning
Den första sidan i rapporten innehåller tre kolumner.
Posterna som följer visas på den andra sidan:
Product NameUnit PriceUnit in StockTotal Amount Aniseed Syrup $10.0013 130 Chef A... $22.00 53 1166
Anteckning
Sidbrytningen inträffar efter den första sidan. Därför innehåller den andra sidan i rapporten fyra kolumner.
Referenser
Mer information om hur du skapar en Access-rapport programmatiskt finns i följande artikel: