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

  1. Utwórz tabelę o nazwie Products zawierającą pole ProductID i pole ProductName.

  2. 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:

    1. W oknie Baza danych kliknij pozycję Formularze w obszarze Obiekty.
    2. Kliknij pozycję Nowy na pasku narzędzi okna bazy danych.
    3. W oknie dialogowym Nowy formularz kliknij pozycję Autoformatuj: Kolumna, wybierz tabelę Products na liście rozwijanej, a następnie kliknij przycisk OK.
    4. Zapisz formularz jako frmComboTest.

    Aby to zrobić w programie Microsoft Office Access 2007 lub nowszej wersji, wykonaj następujące kroki:

    1. Na karcie Tworzenie kliknij pozycję Kreator formularzy w grupie Formularze .
    2. W oknie dialogowym Kreator od wybierz tabelę Products (Produkty) z listy rozwijanej.
    3. Wybierz pola, które chcesz wyświetlić w nowym formularzu, a następnie kliknij przycisk Dalej.
    4. Wybierz opcję Kolumna, aby ustawić układ formularza, a następnie kliknij przycisk Dalej.
    5. Wpisz ciąg frmComboTest jako tytuł formularza, a następnie kliknij przycisk Zakończ.
  3. Użyj Kreatora pola kombi , aby dodać niepowiązane pole kombi. Aby to zrobić, wykonaj następujące kroki.

    1. Otwórz formularz frmComboTest w widoku Projekt.
    2. 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.

    1. 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.

    1. 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.
    2. Wybierz pola ProductID i ProductName, a następnie kliknij przycisk Dalej.
    3. 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
    
  4. 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

  1. 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.

  2. Na stronie Arkusz właściwości formularza frmComboTest2 ustaw właściwość Filter na karcie Dane na [ProductName] = Forms![frmComboTest2]![cboLookup]wartość .

  3. 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
    
  4. 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

  1. 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.

  2. Na stronie Arkusz właściwości formularza frmSub ustaw właściwość Widok domyślny na karcie Format na pojedynczy formularz.

  3. 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
    
  4. 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.
  5. 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

  1. 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.

  2. 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"
    
  3. W narzędziu Macro Builder utwórz nowe osadzone makro w zdarzeniu AfterUpdate dla pola kombi cboLookup.

  4. 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>
    
  5. Zapisz i zamknij makro.

  6. Zapisz i uruchom formularz.

Po zmianie wartości pola kombi formularz zostanie zamknięty i ponownie otwarty z zastosowanym filtrem.