Så här skapar du en ny kolumn programmässigt i en Access-rapport

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 antingen Metod 1 eller Metod 2 som beskrivs i avsnittet "Mer information".

Anteckning

I exempelkoden i den här artikeln används Microsoft Data Access-objekt. För att den här koden ska köras korrekt måste du referera till Microsoft DAO 3.6-objektbiblioteket. Det gör du genom att klicka på Referenser på menyn Verktyg i Visual Basic Editor och kontrollera att kryssrutan Microsoft DAO 3.6-objektbibliotek är markerad.

Metod 1: Lägg till kolumner i rapporten programmässigt

Exemplet nedan visar hur du programmässigt skapar en Access-rapport. Koden genererar en rapport som baseras på frågan om datakällan. Den genererade rapporten visar kolumnen Förnamn och kolumnen Efternamn i tabellen Anställda i Northwind.mdb-exempeldatabasen.

  1. Starta Access.

  2. hjälpmenyn klickar du på Exempeldatabaser och sedan på Northwind-exempeldatabas. Stäng formuläret Huvudformulär när det visas.

    Anteckning

    I Access 2007 klickar du på Exempel i fönstret Mallkategorier, klickar på Northwind 2007 och sedan på Ladda ned.

  3. Klicka på Rapporter i den vänstra rutan.

    Anteckning

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

  4. Dubbelklicka på Skapa rapport i designvyn i det högra fönstret.

    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 Microsoft Office och sedan på Spara.

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

  7. Stäng rapporten.

  8. I den vänstra rutan väljer du Formulär.

    Anteckning

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

  9. I det högra fönstret dubbelklickar du på Skapa formulär i designvyn.

    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å Kodverktyget i dialogrutan Välj hjälpverktyg och klicka sedan på OK.

  12. Lägg till koden som följer i VidKlickning 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 visas på den 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 de ändringar som krävs i frågan och sedan köra rapporten.

Metod 2: Lägg till kolumner i rapporten vid körning genom att ange egenskapen Synlig för den befintliga kolumnen

Det här exemplet visar hur du visar en ny kolumn i en rapport genom att ändra egenskapen Synlig för kontrollen.

Rapporten innehåller fyra kolumner. Egenskapen Visible för de första tre kolumnerna är satt till ja. Egenskapen Visible för den fjärde kolumnen anges till nej. I en sidbrytning Visible sätts egenskapen för den fjärde kolumnen till Ja när kolumnen visas.

  1. Starta Access.

  2. hjälpmenyn klickar du på Exempeldatabaser och sedan på Northwind-exempeldatabas. Stäng formuläret Huvudformulär när det visas.

    Anteckning

    I Access 2007 klickar du på Exempel i fönstret Mallkategorier, klickar på Northwind 2007 och sedan på Ladda ned.

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

    1. I fönstret Databas klickar du på Rapporter och sedan på Nytt.

      Anteckning

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

    2. Klicka på Designvy i dialogrutan Ny rapport, välj Produkter och klicka sedan på OK.

    3. Lägg till följande textrutor i avsnittet Information 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 textrådkontroll med följande egenskaper i avsnittet Information. Placera textrutan direkt ovanför kontrollen ProductName.

    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å Sidbrytning i 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 Information. Placera sidbrytningskontrollen direkt under kontrollen ProductName. Ställ in egenskapen Namn på Sidbrytning.

  7. I avsnittet Information 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. För att minska det tomma utrymmet i rapporten, placera pekaren mellan slutet av avsnittet Information och Sidfot och dra sedan uppåt.

  9. I avsnittet Sidfot ställer du in egenskapen Vidutskrift på 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 Sidbrytning inträffar visas kolumnen TotalPrice.

  10. Förhandsgranska rapporten. Posterna som visas på den 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 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 programmässigt finns i följande artikel:

Skapa Access-rapporter