Uuden sarakkeen luominen access-raporttiin ohjelmallisesti

Huomautus

Office 365 ProPlus nimetään uudelleen Microsoft 365 Apps for enterprise -sovellukseksi. Lisätietoja tästä muutoksesta on tässä blogikirjoituksessa.

Alkuperäinen KB-numero:   812719

Yhteenveto

Tässä artikkelissa kuvataan, miten access-raporttiin luodaan sarake ohjelmallisesti. Voit lisätä sarakkeen raporttiin dynaamisesti käyttämällä lisätietoja -osassa kuvattua tapaa 1 tai tapaa 2.

Huomautus

Tämän artikkelin mallikoodi käyttää Microsoft Data Access Objects -objekteja. Jotta tämä koodi toimisi oikein, sinun on viitattava Microsoft DAO 3.6 -objektikirjastoon. Voit tehdä tämän valitsemalla Tools Visual Basic -editorin Työkalut-valikosta Viittaukset ja varmistamalla, että Microsoft DAO 3.6 -objektikirjasto-valintaruutu on valittuna.

Tapa 1: Sarakkeiden lisääminen raporttiin ohjelmallisesti

Seuraavassa esimerkissä näytetään, miten Access-raportti luodaan ohjelmallisesti. Koodi luo raportin, joka perustuu tietuelähdekyselyyn. Luodussa raportissa näkyy Northwind.mdb-mallitietokannan Työntekijät-taulukon Etunimi-sarake ja Sukunimi-sarake.

  1. Käynnistä Access.

  2. Valitse Ohje-valikosta Mallitietokannatja valitse sitten Northwind-mallitietokanta. Sulje Päävalikkotaulu-lomake, kun se tulee näkyviin.

    Huomautus

    Valitse Access 2007:n Malliluokat-ruudussa Malliluokat,valitse Northwind 2007ja valitse sitten Lataa. Sample

  3. Valitse vasemmasta ruudusta Raportit.

    Huomautus

    Ohita tämä vaihe Access 2007:ssä.

  4. Kaksoisnapsauta oikeanpuoleisessa ruudussa Luo raportti rakennenäkymässä.

    Huomautus

    Valitse Access 2007:n Raporttien rakenne -kohdassa Raportit-ryhmässä Luo-välilehdessä.

  5. Valitse Tiedosto Tallenna .

    Huomautus

    Valitse Access 2007:ssä Microsoft Office -painikeja valitse sitten Tallenna.

  6. Kirjoita Tallenna nimellä -valintaikkunaan AccessColumnBuilder ja valitse sitten OK.

  7. Sulje raportti.

  8. Valitse vasemmasta ruudusta Lomakkeet.

    Huomautus

    Ohita tämä vaihe Access 2007:ssä.

  9. Kaksoisnapsauta oikeanpuoleisessa ruudussa Luo lomake rakennenäkymässä.

    Huomautus

    Valitse Access 2007:n Lomakkeet-ryhmästä Lomakkeen rakenne, valitse Luo.

  10. Lisää lomakkeeseen komentopainike.

    Huomautus

    Valitse Access 2007:ssä Painike, jos haluat lisätä lomakkeeseen painikkeen Rakenne-välilehden Ohjausobjektit-ryhmässä.

  11. Napsauta komentopainiketta hiiren kakkospainikkeella, valitse Muodosta tapahtuma, valitse Valitse muodostin -valintaikkunassa Koodin muodostin ja valitse sitten OK.

  12. Lisää komentopainikkeen OnClick-tapahtumaan seuraava koodi:

    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. Tallenna ja suorita lomake.

  14. Voit esikatsella raporttia napsauttamalla vaiheessa 10 lisäämääsi komentopainiketta.

    Seuraavat tietueet näkyvät ensimmäisellä sivulla:

    First NameLast Name
    
    NancyDavolio
    
    MargaretPeacock
    
    ...............
    

    Raportti sisältää Työntekijät-taulukon Etunimi-sarakkeen ja Sukunimi-sarakkeen. Voit joko tallentaa raportin tai tehdä tarvittavat muutokset kyselyyn ja suorittaa raportin.

Tapa 2: Sarakkeiden lisääminen raporttiin suorituksen aikana määrittämällä aiemmin luodun sarakkeen näkyvä ominaisuus

Tässä esimerkissä näytetään, miten raporttiin näytetään uusi sarake käsittelemällä ohjausobjektin Visible-ominaisuutta.

Raportissa on neljä saraketta. VisibleKolmen ensimmäisen sarakkeen ominaisuuden arvo ksi on määritetty kyllä. VisibleNeljännen sarakkeen ominaisuuden arvo ksi on määritetty Ei. Sivunvaihdon Visible neljännen sarakkeen ominaisuuden arvoksi tulee kyllä, kun sarake tulee näkyviin.

  1. Käynnistä Access.

  2. Valitse Ohje-valikosta Mallitietokannatja valitse sitten Northwind-mallitietokanta. Sulje Päävalikkotaulu-lomake, kun se tulee näkyviin.

    Huomautus

    Valitse Access 2007:n Malliluokat-ruudussa Malliluokat, valitse Northwind 2007ja valitse sitten Lataa. Sample

  3. Voit luoda raportin, jonka nimi on Report1 ja joka perustuu Tuotteet-taulukkoon, seuraavasti:

    1. Valitse tietokantaikkunassa Raportit ja valitse sitten Uusi.

      Huomautus

      Valitse Access 2007:n Luo-välilehden Create Raportit-ryhmästä Ohjattu raportin luominen.

    2. Valitse Uusi raportti -valintaikkunassa Rakennenäkymä, valitse Tuotteetja valitse sitten OK.

    3. Lisää seuraavat tekstikehykset Detail raportin Tiedot-osaan. Tasaa tekstikehykset.

    4. Sijaitse vastaavat otsikot raportin Sivun ylätunniste -osaan. Tasaa tarrat.

      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. Lisää Tiedot-osaan muokkausruutuohjausobjekti, jolla on seuraavat ominaisuudet. Aseta tekstiruutu suoraan ProductName-ohjausobjektin yläpuolelle.

    Tämä ohjausobjekti toimii raportin tietueiden määrän laskurina.

    Text Box:
    -----------------------
    Name: Counter
    ControlSource: =1
    Visible: No
    RunningSum: Over All
    
  5. Valitse Työkaluryhmästä Sivunvaihto.

    Huomautus

    Valitse Access 2007:n Rakenne-välilehden Ohjausobjektit-ryhmästä Lisää tai poista sivunvaihto. Design

  6. Lisää sivunvaihto-ohjausobjekti Tiedot-osan vasempaan alakulmaan. Aseta sivunvaihto-ohjausobjekti suoraan ProductName-ohjausobjektin alapuolelle. Määritä Name-ominaisuuden arvoksi PageBreak.

  7. Määritä Detail Tiedot-osassa OnFormat-ominaisuuden arvoksi seuraava tapahtumatoimintosarja:

    If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _
    Else Me![PageBreak].Visible = False
    
  8. Voit pienentää raportin tyhjää tilaa siirtämällä osoittimen Tiedot-osan alareunan ja sivun alatunnisteen väliin ja vetämällä sitten ylöspäin.

  9. Määritä Sivun alatunniste -osassa OnPrint-ominaisuuden arvoksi seuraava tapahtumatoimintosarja:

    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
    

    Kun PageBreak tapahtuu, TotalPrice-sarake tulee näkyviin.

  10. Esikatsele raporttia. Seuraavat tietueet näkyvät ensimmäisellä sivulla:

    Product NameUnit PriceUnit in Stock
    
    Cahi$18.0039
    
    Chang$19.0017
    

    Huomautus

    Raportin ensimmäisellä sivulla on kolme saraketta.

    Seuraavat tietueet näkyvät toisella sivulla:

    Product NameUnit PriceUnit in StockTotal Amount
    
    Aniseed Syrup $10.0013    130
    
    Chef A...    $22.00 53    1166
    

    Huomautus

    Sivunvaihto tapahtuu ensimmäisen sivun jälkeen. Tämän vuoksi raportin toisella sivulla on neljä saraketta.

Viittaukset

Lisätietoja Access-raportin ohjelmasuunnittelusta on seuraavassa artikkelissa:

Access-raporttien luominen