Uuden sarakkeen ohjelmallinen luominen Access-raportissa

Alkuperäinen KT-numero: 812719

Yhteenveto

Tässä artikkelissa kuvataan, miten Access-raportin sarake luodaan ohjelmallisesti. Voit lisätä sarakkeen dynaamisesti raporttiin joko menetelmällä 1 tai 2, jotka on kuvattu Lisätietoja-osiossa.

Huomautus

Tämän artikkelin mallikoodi käyttää Microsoft Data Access -objekteja. Jotta tämä koodi toimisi oikein, sinun on viitattava Microsoft DAO 3.6 -objektikirjastoon. Voit tehdä tämän valitsemalla Visual Basic -Kirjoitusavustaja 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 voit luoda Ohjelmallisesti Access-raportin. Koodi luo raportin, joka perustuu tietuelähteen kyselyyn. Luotu raportti näyttää Northwind.mdb esimerkkitietokannan Työntekijät-taulukonEtunimi-sarakkeen ja Sukunimi-sarakkeen.

  1. Käynnistä Access.

  2. Valitse Ohje-valikostaMallitietokannat ja valitse sitten Northwind-mallitietokanta. Sulje Valikkonäyttö-päälomake , kun se tulee näkyviin.

    Huomautus

    Napsauta Access 2007:ssä MallitMallit-ruudussa, valitse Northwind 2007 ja valitse sitten Lataa.

  3. Valitse vasemmassa ruudussa Raportit.

    Huomautus

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

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

    Huomautus

    Valitse Access 2007:ssä Raportin rakenneLuo-välilehden Raportit-ryhmästä.

  5. Valitse Tiedosto-valikostaTallenna.

    Huomautus

    Napsauta Access 2007:ssä Microsoft Office -painiketta ja valitse sitten Tallenna.

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

  7. Sulje raportti.

  8. Valitse vasemmassa ruudussa Lomakkeet.

    Huomautus

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

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

    Huomautus

    Valitse Access 2007:ssä Lomakkeen rakenneLuo-välilehden Lomakkeet-ryhmästä.

  10. Lisää komentopainike lomakkeeseen.

    Huomautus

    Lisää painike lomakkeeseen Rakenne-välilehdenOhjausobjektit-ryhmässä Access 2007:ssä napsauttamalla Painike-painiketta.

  11. Napsauta komentopainiketta hiiren kakkospainikkeella, valitse Muodosta tapahtuma, valitse Koodin muodostinValitse muodostin -valintaikkunassa 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. Esikatsele raporttia napsauttamalla vaiheessa 10 lisäämääsi komentopainiketta.

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

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

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

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

Tässä esimerkissä näytetään, miten uusi sarake näytetään raportissa muokkaamalla ohjausobjektin Visible-ominaisuutta.

Raportti sisältää neljä saraketta. Kolmen Visible ensimmäisen sarakkeen ominaisuudeksi on määritetty Kyllä. Visible Neljännen sarakkeen ominaisuuden arvoksi on asetettu Ei. Sivunvaihdon neljännen sarakkeen ominaisuudeksi määritetään Kyllä, Visible kun sarake tulee näkyviin.

  1. Käynnistä Access.

  2. Valitse Ohje-valikostaMallitietokannat ja valitse sitten Northwind-mallitietokanta. Sulje Valikkonäyttö-päälomake , kun se tulee näkyviin.

    Huomautus

    Valitse Access 2007:ssä Mallimallit-ruudussa Mallit, valitse Northwind 2007 ja valitse sitten Lataa.

  3. Jos haluat luoda raportin, jonka nimi on Report1 ja joka perustuu Products-taulukkoon , toimi seuraavasti:

    1. Valitse Tietokanta-ikkunassaRaportit ja valitse sitten Uusi.

      Huomautus

      Valitse Access 2007:ssä Raportin ohjattu toimintoLuo-välilehdenRaportit-ryhmästä.

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

    3. Lisää seuraavat tekstiruudut raportin Tiedot-osaan . Tasaa tekstiruudut.

    4. Sijoita vastaavat otsikot raportin Sivun otsikko - osaan. Tasaa otsikot.

      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ää Tekstiruutu-ohjausobjekti seuraavien ominaisuuksien avulla Tiedot-osioon . Sijoita tekstiruutu suoraan ProductName-ohjausobjektin yläpuolelle.

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

    Text Box:
    -----------------------
    Name: Counter
    ControlSource: =1
    Visible: No
    RunningSum: Over All
    
  5. Valitse Työkalut-ruudustaSivunvaihto.

    Huomautus

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

  6. Lisää sivunvaihto-ohjausobjekti Tiedot-osan vasempaan alakulmaan. Sijoita sivunvaihto-ohjausobjekti suoraan ProductName-ohjausobjektin alapuolelle. Määritä Nimi-ominaisuudeksiPageBreak.

  7. Määritä Tiedot-osassaOnFormat-ominaisuudeksi seuraava tapahtumatoimintosarja:

    If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _
    Else Me![PageBreak].Visible = False
    
  8. Jos haluat vähentää raportin tyhjää tilaa, sijoita osoitin Tiedot-osan alaosan ja Sivun alatunnisteen väliin ja vedä sitten ylös.

  9. Määritä Sivun alatunniste - osassa OnPrint-ominaisuudeksi 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, näkyviin tulee TotalPrice-sarake .

  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. Siksi raportin toisella sivulla on neljä saraketta.

Lisätietoja

Lisätietoja Access-raportin ohjelmallisesti luomisesta on seuraavassa artikkelissa:

Yksinkertaisen raportin luominen