Jak programowo utworzyć nową kolumnę w raporcie programu Access

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Oryginalny numer KB:   812719

Podsumowanie

W tym artykule opisano sposób programowego tworzenia kolumny w raporcie programu Access. Kolumnę można dynamicznie dodawać do raportu za pomocą metody 1 lub metody 2, które są opisane w sekcji "Więcej informacji".

Uwaga

Przykładowy kod w tym artykule używa obiektów dostępu do danych firmy Microsoft. Aby ten kod działał poprawnie, należy odwołać się do biblioteki obiektów DAO 3.6 firmy Microsoft. W tym celu kliknij polecenie Odwołania w menu Narzędzia w Edytorze Visual Basic i upewnij się, że jest zaznaczone pole wyboru Biblioteka obiektów DAO 3.6 firmy Microsoft.

Metoda 1: Programowo dodawanie kolumn do raportu

Poniższy przykład pokazuje, jak programowo utworzyć raport programu Access. Kod generuje raport, który jest oparty na kwerendzie źródła rekordów. Wygenerowany raport wyświetla kolumnę Imię i kolumnę Nazwisko tabeli Pracownicy przykładowej bazy danych Northwind.mdb.

  1. Rozpocznij dostęp.

  2. W menu Pomoc kliknij polecenie Przykładowe bazy danych, a następnie kliknij polecenie Przykładowa baza danych Northwind. Zamknij formularz Główna tablica rozdzielcza, gdy się pojawi.

    Uwaga

    W programie Access 2007 kliknij pozycję Przykład w okienku Kategorie szablonów, kliknij pozycję Northwind 2007, a następnie kliknij pozycję Pobierz.

  3. W lewym okienku kliknij pozycję Raporty.

    Uwaga

    W programie Access 2007 pomiń ten krok.

  4. W prawym okienku kliknij dwukrotnie pozycję Utwórz raport w widoku projektu.

    Uwaga

    W programie Access 2007 kliknij pozycję Projekt raportu w grupie Raporty na karcie Tworzenie.

  5. W menu Plik kliknij polecenie Zapisz.

    Uwaga

    W programie Access 2007 kliknij przycisk pakietu Microsoft Office, a następnie kliknij przycisk Zapisz.

  6. W oknie dialogowym Zapisywanie jako wpisz program AccessColumnBuilder, a następnie kliknij przycisk OK.

  7. Zamknij raport.

  8. W lewym okienku wybierz pozycję Formularze.

    Uwaga

    W programie Access 2007 pomiń ten krok.

  9. W prawym okienku kliknij dwukrotnie pozycję Utwórz formularz w widoku projektu.

    Uwaga

    W programie Access 2007 kliknij pozycję Projektowanie formularzy w grupie Formularze na karcie Tworzenie.

  10. Dodaj przycisk polecenia do formularza.

    Uwaga

    W programie Access 2007 kliknij przycisk, aby dodać przycisk do formularza w grupie Formanty na karcie Projektowanie.

  11. Kliknij prawym przyciskiem myszy przycisk polecenia, kliknij polecenie Buduj zdarzenie, kliknij polecenie Konstruktor kodu w oknie dialogowym Wybieranie konstruktora, a następnie kliknij przycisk OK.

  12. Dodaj kod, który następuje do onclick zdarzenia przycisku polecenia:

    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. Zapisz, a następnie uruchom formularz.

  14. Aby wyświetlić podgląd raportu, kliknij przycisk polecenia dodany w kroku 10.

    Rekordy, które następują, są wyświetlane na pierwszej stronie:

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

    Raport zawiera kolumnę Imię i Nazwisko tabeli Pracownicy. Można zapisać raport lub wprowadzić wymagane zmiany w kwerendzie, a następnie uruchomić raport.

Metoda 2: Dodawanie kolumn do raportu w czasie wykonywania przez ustawienie widocznej właściwości istniejącej kolumny

W tym przykładzie pokazano, jak wyświetlić nową kolumnę w raporcie, manipulując Visible właściwości formantu.

Raport zawiera cztery kolumny. VisibleWłaściwość pierwszych trzech kolumn jest ustawiona na tak. VisibleWłaściwość czwartej kolumny jest ustawiona na no. Na podział strony Visible właściwość czwartej kolumny jest ustawiona na tak, gdy pojawi się kolumna.

  1. Rozpocznij dostęp.

  2. W menu Pomoc kliknij polecenie Przykładowe bazy danych, a następnie kliknij polecenie Przykładowa baza danych Northwind. Zamknij formularz Główna tablica rozdzielcza, gdy się pojawi.

    Uwaga

    W programie Access 2007 kliknij pozycję Przykład w okienku Kategorie szablonów, kliknij pozycję Northwind 2007, a następnie kliknij pozycję Pobierz.

  3. Aby utworzyć raport o nazwie Raport1 i oparty na tabeli Produkty, wykonaj następujące kroki:

    1. W oknie Baza danych kliknij pozycję Raporty, a następnie kliknij pozycję Nowy.

      Uwaga

      W programie Access 2007 kliknij pozycję Kreator raportów w grupie Raporty na karcie Tworzenie.

    2. W oknie dialogowym Nowy raport kliknij pozycję Widok projektu, wybierz pozycję Produkty, a następnie kliknij przycisk OK.

    3. Dodaj następujące pola tekstowe do sekcji Szczegóły raportu. Wyrównaj pola tekstowe.

    4. Umieść odpowiednie etykiety w sekcji Nagłówek strony raportu. Wyrównaj etykiety.

      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. Dodaj kontrolkę pola tekstowego z następującymi właściwościami do sekcji Szczegóły. Umieść pole tekstowe bezpośrednio nad formantem ProductName.

    Ta kontrola działa jako licznik liczby rekordów w raporcie.

    Text Box:
    -----------------------
    Name: Counter
    ControlSource: =1
    Visible: No
    RunningSum: Over All
    
  5. W przybornikukliknij pozycję Podział strony.

    Uwaga

    W programie Access 2007 kliknij pozycję Dodaj lub usuń podział strony w grupie Formanty na karcie Projektowanie.

  6. Dodaj kontrolkę podziału strony do lewego dolnego rogu sekcji Szczegóły. Umieść formant podziału strony bezpośrednio poniżej ProductName kontroli. Ustaw właściwość Nazwa na PageBreak.

  7. W sekcji Szczegóły ustaw właściwość OnFormat na następującą procedurę zdarzenia:

    If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _
    Else Me![PageBreak].Visible = False
    
  8. Aby zmniejszyć ilość pustego miejsca w raporcie, umieść wskaźnik między dolną częścią sekcji Szczegóły a stopki strony, a następnie przeciągnij w górę.

  9. W sekcji Stopka strony ustaw właściwość OnPrint na następującą procedurę zdarzenia:

    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
    

    Po wystąpieniu podziału strony zostanie wyświetlona kolumna TotalPrice.

  10. Podgląd raportu. Rekordy, które następują, są wyświetlane na pierwszej stronie:

    Product NameUnit PriceUnit in Stock
    
    Cahi$18.0039
    
    Chang$19.0017
    

    Uwaga

    Pierwsza strona raportu zawiera trzy kolumny.

    Rekordy, które następują, są wyświetlane na drugiej stronie:

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

    Uwaga

    Podział strony występuje po pierwszej stronie. W związku z tym druga strona raportu zawiera cztery kolumny.

Odwołania

Aby uzyskać więcej informacji na temat programowego tworzenia raportu programu Access, odwiedź następujący artykuł:

Tworzenie raportów programu Access