Jak programowo utworzyć nową kolumnę w raporcie programu Access
Oryginalny numer KB: 812719
Podsumowanie
W tym artykule opisano sposób programowego tworzenia kolumny w raporcie programu Access. Kolumnę można dynamicznie dodać do raportu przy użyciu metody 1 lub metody 2 opisanej w sekcji "Więcej informacji".
Uwaga
Przykładowy kod w tym artykule używa obiektów programu Microsoft Data Access. Aby ten kod działał prawidłowo, należy odwołać się do biblioteki obiektów microsoft DAO 3.6. W tym celu kliknij pozycję Odwołania w menu Narzędzia w Redaktor Visual Basic i upewnij się, że zaznaczono pole wyboru Biblioteka obiektów microsoft DAO 3.6.
Metoda 1. Programowe dodawanie kolumn do raportu
W poniższym przykładzie pokazano, jak programowo utworzyć raport programu Access. Kod generuje raport oparty na zapytaniu źródła rekordów. Wygenerowany raport zawiera kolumnę Firstname i kolumnę Lastname tabeli Employees przykładowej bazy danych Northwind.mdb.
Uruchom dostęp.
W menu Pomoc kliknij pozycję Przykładowe bazy danych, a następnie kliknij pozycję Przykładowa baza danych Northwind. Zamknij formularz Main Switchboard (Główny panel przełączania ), gdy zostanie wyświetlony.
Uwaga
W programie Access 2007 kliknij pozycję Przykład w okienku Kategorie szablonów , kliknij pozycję Northwind 2007, a następnie kliknij pozycję Pobierz.
W okienku po lewej stronie kliknij pozycję Raporty.
Uwaga
W programie Access 2007 pomiń ten krok.
W okienku po prawej stronie kliknij dwukrotnie pozycję Utwórz raport w widoku projektu.
Uwaga
W programie Access 2007 kliknij pozycję Projekt raportu w grupie Raporty na karcie Tworzenie .
W menu Plik kliknij pozycję Zapisz.
Uwaga
W programie Access 2007 kliknij przycisk Microsoft Office, a następnie kliknij przycisk Zapisz.
W oknie dialogowym Zapisz jako wpisz AccessColumnBuilder, a następnie kliknij przycisk OK.
Zamknij raport.
W okienku po lewej stronie wybierz pozycję Formularze.
Uwaga
W programie Access 2007 pomiń ten krok.
W okienku po prawej stronie kliknij dwukrotnie pozycję Utwórz formularz w widoku projektu.
Uwaga
W programie Access 2007 kliknij pozycję Projekt formularza w grupie Formularze na karcie Tworzenie .
Dodaj przycisk polecenia do formularza.
Uwaga
W programie Access 2007 kliknij przycisk , aby dodać przycisk do formularza w grupie Kontrolki na karcie Projekt .
Kliknij prawym przyciskiem myszy przycisk polecenia, kliknij pozycję Build Event (Zdarzenie kompilacji), kliknij pozycję Konstruktor kodu w oknie dialogowym Wybieranie konstruktora , a następnie kliknij przycisk OK.
Dodaj następujący kod do zdarzenia OnClick 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.
Zapisz, a następnie uruchom formularz.
Aby wyświetlić podgląd raportu, kliknij przycisk polecenia dodany w kroku 10.
Następujące rekordy są wyświetlane na pierwszej stronie:
First NameLast Name NancyDavolio MargaretPeacock ...............
Raport zawiera kolumnę Firstname i kolumnę Lastname tabeli Employees . Możesz zapisać raport lub wprowadzić wymagane zmiany w zapytaniu, 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 właściwością Visible kontrolki.
Raport zawiera cztery kolumny. Właściwość Visible
pierwszych trzech kolumn jest ustawiona na wartość tak. Właściwość Visible
czwartej kolumny jest ustawiona na wartość nie. W przypadku podziału Visible
strony właściwość czwartej kolumny jest ustawiona na wartość tak , gdy zostanie wyświetlona kolumna.
Uruchom dostęp.
W menu Pomoc kliknij pozycję Przykładowe bazy danych, a następnie kliknij pozycję Przykładowa baza danych Northwind. Zamknij formularz Main Switchboard (Główny panel przełączania ), gdy zostanie wyświetlony.
Uwaga
W programie Access 2007 kliknij pozycję Przykład w okienku Kategorie szablonów , kliknij pozycję Northwind 2007, a następnie kliknij pozycję Pobierz.
Aby utworzyć raport o nazwie Report1 i jest oparty na tabeli Products , wykonaj następujące kroki:
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 .
W oknie dialogowym Nowy raport kliknij pozycję Widok projektu, wybierz pozycję Produkty, a następnie kliknij przycisk OK.
Dodaj następujące pola tekstowe do sekcji Szczegóły raportu. Wyrównaj pola tekstowe.
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
Dodaj kontrolkę pola tekstowego z następującymi właściwościami do sekcji Szczegóły . Umieść pole tekstowe bezpośrednio nad kontrolką ProductName .
Ta kontrolka działa jako licznik liczby rekordów w raporcie.
Text Box: ----------------------- Name: Counter ControlSource: =1 Visible: No RunningSum: Over All
W przyborniku kliknij pozycję Podział strony.
Uwaga
W programie Access 2007 kliknij pozycję Dodaj lub usuń podział strony w grupie Kontrolki na karcie Projekt .
Dodaj kontrolkę podziału strony do lewego dolnego rogu sekcji Szczegóły . Umieść kontrolkę podziału strony bezpośrednio pod kontrolką ProductName . Ustaw właściwość Nazwa na PageBreak.
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
Aby zmniejszyć puste miejsce w raporcie, umieść wskaźnik między dolną częścią sekcji Szczegóły i stopki strony , a następnie przeciągnij w górę.
W sekcji Page Footer (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 funkcji PageBreak zostanie wyświetlona kolumna TotalPrice .
Wyświetl podgląd raportu. Następujące rekordy są wyświetlane na pierwszej stronie:
Product NameUnit PriceUnit in Stock Cahi$18.0039 Chang$19.0017
Uwaga
Pierwsza strona raportu zawiera trzy kolumny.
Następujące rekordy 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.
Informacje
Aby uzyskać więcej informacji na temat programowego tworzenia raportu programu Access, odwiedź następujący artykuł:
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla