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.

  1. Starta åtkomst.

  2. Klicka på ExempeldatabaserHjä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.

  3. Klicka på Rapporteri den vänstra rutan .

    Anteckning

    Hoppa över det här steget i Access 2007.

  4. Dubbelklicka på Skapa rapport i designvyn iden högra rutan.

    Anteckning

    I Access 2007 klickar du på Rapportdesign i gruppen Rapporter på fliken Skapa.

  5. Klicka på SparaArkiv-menyn.

    Anteckning

    I Access 2007 klickar du på Microsoft Office-knappenoch sedan på Spara.

  6. Skriv AccessColumnBuilder i dialogrutan Spara som och klicka sedan på OK.

  7. Stäng rapporten.

  8. Välj Formuläri den vänstra rutan .

    Anteckning

    Hoppa över det här steget i Access 2007.

  9. 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.

  10. 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.

  11. Högerklicka på kommandoknappen, klicka på Skapa händelse, klicka på Kodbyggare i dialogrutan Välj byggare och klicka sedan på OK.

  12. 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.
    
  13. Spara och kör sedan formuläret.

  14. 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. VisibleEgenskapen för de tre första kolumnerna är inställd på ja. VisibleEgenskapen 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.

  1. Starta åtkomst.

  2. Klicka på ExempeldatabaserHjä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.

  3. Så här skapar du en rapport med namnet Rapport1 och baseras på tabellen Produkter:

    1. 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.

    2. Klicka på Designvyi dialogrutan Ny rapport, välj Produkteroch klicka sedan på OK.

    3. Lägg till följande textrutor i avsnittet Detalj i rapporten. Justera textrutorna.

    4. 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
      
  4. 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
    
  5. 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.

  6. 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.

  7. 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
    
  8. Om du vill minska det tomma utrymmet i rapporten placerar du pekaren mellan botten av avsnittet Detalj och sidfoten och drar sedan uppåt.

  9. 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.

  10. 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:

Skapa Access-rapporter