Jak przejść do określonego rekordu z zaznaczenia pola kombi w programie Microsoft Access
Umiarkowane: wymaga podstawowych umiejętności w zakresie makra, kodowania i współdziałania.
Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (.mdb) lub pliku bazy danych programu Microsoft Access (.accdb).
Podsumowanie
W tym artykule przedstawiono cztery metody przechodzenia do określonego rekordu na podstawie wyboru z pola kombi. Metody są następujące:
- W przypadku AfterUpdate pola kombi wykonaj kod używający metody FindFirst.
- W przypadku AfterUpdate pola kombi wywołaj makro, które ponownie ustawi właściwość Filter formularza.
- Użyj formularza/podformularza z polem kombi w formularzu głównym i danymi w podformularze powiązanymi właściwościami LinkMasterFields i LinkChildFields kontrolki podformularza.
- Utwórz formularz na zapytaniu łączącym dwie tabele, a następnie użyj techniki autolookupu, aby powiązać pole kombi z polem, które kontroluje sprzężenie.
Te cztery metody zostały opisane w sekcji "Więcej informacji" w tym artykule i są oparte na przykładowej bazie danych northwind.
Więcej informacji
Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.
Uwaga
Jeśli wykonaj kroki opisane w tym przykładzie, zmodyfikujesz przykładową bazę danych Northwind.mdb. Możesz utworzyć kopię zapasową pliku Northwind.mdb i wykonać te kroki na kopii bazy danych.
W poniższej tabeli porównaliśmy funkcje (korzyści i wady) z czterech metod:
Metoda | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Nie wymaga kodu/makr | X | |||
Podformularz nie jest wymagany | X | X | ||
Można przewijać do innych rekordów | X | X | ||
Nie wymaga zapytania | X | X | X | X |
Może edytować rekordy | X | X | X | X |
Otwiera formularz w innych trybach | X |
Uwaga
Te metody mogą również mieć zastosowanie do pól tekstowych.
Metoda 1
Utwórz tabelę o nazwie Products zawierającą pole ProductID i pole ProductName.
Użyj Kreatora autoformularzy: kolumnowego , aby utworzyć nowy formularz oparty na tabeli Products, a następnie zapisz formularz jako frmComboTest.
Aby to zrobić w programie Microsoft Office Access 2003 i starszych wersjach programu Access, wykonaj następujące kroki:
- W oknie Baza danych kliknij pozycję Formularze w obszarze Obiekty.
- Kliknij pozycję Nowy na pasku narzędzi okna bazy danych.
- W oknie dialogowym Nowy formularz kliknij pozycję Autoformatuj: Kolumna, wybierz tabelę Products na liście rozwijanej, a następnie kliknij przycisk OK.
- Zapisz formularz jako frmComboTest.
Aby to zrobić w programie Microsoft Office Access 2007 lub nowszej wersji, wykonaj następujące kroki:
- Na karcie Tworzenie kliknij pozycję Kreator formularzy w grupie Formularze .
- W oknie dialogowym Kreator od wybierz tabelę Products (Produkty) z listy rozwijanej.
- Wybierz pola, które chcesz wyświetlić w nowym formularzu, a następnie kliknij przycisk Dalej.
- Wybierz opcję Kolumna, aby ustawić układ formularza, a następnie kliknij przycisk Dalej.
- Wpisz ciąg frmComboTest jako tytuł formularza, a następnie kliknij przycisk Zakończ.
Użyj Kreatora pola kombi , aby dodać niepowiązane pole kombi. Aby to zrobić, wykonaj następujące kroki.
- Otwórz formularz frmComboTest w widoku Projekt.
- Na pasku narzędzi upewnij się, że wybrano pozycję Kreatory kontrolek .
Uwaga
W programie Access 2007 lub nowszej wersji upewnij się, że w grupie Kontrolki na karcie Projektowanie wybrano pozycję Użyj Kreatorów sterowania.
- Utwórz pole kombi w formularzu frmComboTest.
Uwaga
W programie Access 2007 lub nowszej wersji kliknij pozycję Pole kombi w grupie Kontrolki na karcie Projekt , a następnie kliknij formularz frmComboTest. W oknie dialogowym Wybieranie konstruktora kliknij pozycję Kreator pola kombi, a następnie kliknij przycisk OK.
- W oknie dialogowym Kreatora pól kombi wybierz opcję Znajdź rekord w formularzu na podstawie wartości wybranej w polu kombi , a następnie kliknij przycisk Dalej.
- Wybierz pola ProductID i ProductName, a następnie kliknij przycisk Dalej.
- Kliknij przycisk Zakończ.
Kreator pola kombi tworzy procedurę zdarzeń podobną do następującej:
Private Sub Combo0_AfterUpdate() ' Find the record that matches the control. Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ProductID] = " & Str(Nz(Me![Combo20], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub
Wyświetl formularz frmComboTest w widoku Formularz.
Zwróć uwagę, że po wybraniu nazwy produktu w polu kombi zostanie przeniesiony do rekordu wybranego produktu.
Metoda 2
Utwórz nowy formularz na podstawie tabeli Products przy użyciu Kreatora autoformatowania: kolumn zgodnie z instrukcjami w kroku 2 metody 1, a następnie zapisz formularz jako frmComboTest2.
Na stronie Arkusz właściwości formularza frmComboTest2 ustaw właściwość Filter na karcie Dane na
[ProductName] = Forms![frmComboTest2]![cboLookup]
wartość .Dodaj niepowiązane pole kombi o nazwie cboLookup, a następnie ustaw właściwości kontrolki w następujący sposób:
Combo Box ----------------------------------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Select [ProductName] from Products; BoundColumn: 1 ColumnWidths: 1" AfterUpdate: mcrLocateProduct
Utwórz następujące makro o nazwie mcrLocateProduct:
Action -------------------------------------- SetValue Requery mcrLocateProduct Actions -------------------------------------- SetValue Item: Forms![frmComboTest2].FilterOn Expression: True
Zwróć uwagę, że po otwarciu formularza frmComboTest2 i wybraniu nazwy produktu z pola kombi cboLookup filtr jest ustawiony na tę wartość.
Metoda 3
Utwórz nowy formularz na podstawie tabeli Products przy użyciu Kreatora autoformatowania: kolumn zgodnie z instrukcjami w kroku 2 metody 1, a następnie zapisz formularz jako frmSub.
Na stronie Arkusz właściwości formularza frmSub ustaw właściwość Widok domyślny na karcie Format na pojedynczy formularz.
Utwórz nowy formularz (który nie jest oparty na żadnej tabeli lub zapytaniu) i zapisz go jako frmMain. Następnie dodaj pole kombi i ustaw jego właściwości w następujący sposób:
Combo Box ---------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Products ColumnCount: 4 ColumnWidths: 0";2" BoundColumn: 1
Wstaw kontrolkę Podformularz formularza frmSub.
- Przejdź do obszaru Podformularz>projektu/Podraport, a następnie anuluj Kreatora podformularzów.
- Przeciągnij i upuść frmSub z okienka nawigacji do formularza frmMain.
Ustaw właściwości kontrolki podformularza w następujący sposób:
Subform ---------------------------- LinkChildFields: [ProductID] LinkMasterFields: cboLookup
Zmieniając wartość w kontrolce cboLookup, program Access zapewnia, że rekordy w podformularze są zgodne z polem kombi.
Formularz Orders w przykładowej bazie danych northwind ilustruje tę metodę. Podformularz Szczegóły zamówienia jest powiązany z właściwościami LinkMasterFields i LinkChildFields .
Metoda 4. Używanie akcji makra OpenForm z klauzulą WHERE
Utwórz nowy formularz na podstawie tabeli Products przy użyciu Kreatora autoformatowania: kolumn zgodnie z instrukcjami w kroku 2 metody 1, a następnie zapisz formularz jako frmComboTest5.
Dodaj niepowiązane pole kombi o nazwie cboLookup, a następnie ustaw właściwości kontrolki w następujący sposób:
Combo Box ----------------------------------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: SELECT [ProductID], [ProductName] FROM Products ORDER BY [ProductName]; BoundColumn: 1 ColumnCount: 2 ColumnWidths: 0";1"
W narzędziu Macro Builder utwórz nowe osadzone makro w zdarzeniu
AfterUpdate
dla pola kombi cboLookup.Z listy rozwijanej Dodaj nową akcję wybierz pozycję OpenForm, a następnie ustaw następujące właściwości:
Form Name: frmComboTest5 View: Form Filter Name: <leave as empty> Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value Data Mode: <optional> Window Mode: <optional>
Zapisz i zamknij makro.
Zapisz i uruchom formularz.
Po zmianie wartości pola kombi formularz zostanie zamknięty i ponownie otwarty z zastosowanym filtrem.
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