Postup přechodu na konkrétní záznam z výběru pole se seznamem v Microsoft Accessu

Střední: Vyžaduje základní dovednosti v makrech, kódování a interoperabilitě.

Tento článek se týká souboru databáze Microsoft Access (MDB) nebo souboru databáze Microsoft Access (.accdb).

Souhrn

Tento článek popisuje čtyři metody přechodu na konkrétní záznam na základě výběru z pole se seznamem. Metody jsou následující:

  • V poli se seznamem AfterUpdate spusťte kód, který používá metodu FindFirst.
  • V poli se seznamem AfterUpdate v poli se seznamem zavolejte makro, které znovu zobrazí dotaz na vlastnost Filter formuláře.
  • Použijte formulář nebo podformulář s polem se seznamem v hlavním formuláři a data v podformuláři svázané vlastnostmi LinkMasterFields a LinkChildFields ovládacího prvku podformuláře.
  • Založte formulář na dotazu, který spojí dvě tabulky, a pak pomocí techniky Automatické vyhledávání vytvořte vazbu pole se seznamem na pole, které řídí spojení.

Tyto čtyři metody jsou popsané v části Další informace tohoto článku a jsou založené na ukázkové databázi Northwind.

Další informace

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.

Upozornění

Pokud budete postupovat podle kroků v tomto příkladu, upravíte Northwind.mdb ukázkové databáze. Můžete chtít zálohovat soubor Northwind.mdb a postupovat podle těchto kroků v kopii databáze.

Následující tabulka porovnává funkce (výhody a nevýhody) čtyř metod:

Metoda 1 2 3 4
Nevyžaduje žádný kód ani makra. X
Podformulář není povinný. X X
Může se posunout na jiné záznamy. X X
Nevyžaduje dotaz. X X X X
Může upravovat záznamy X X X X
Otevře formulář v jiných režimech. X

Poznámka

Tyto metody lze použít také pro textová pole.

Metoda 1

  1. Vytvořte tabulku s názvem Products (Produkty), která obsahuje pole ProductID (IDproduktu) a ProductName (NázevProduktu).

  2. Pomocí Průvodce automatickým formulářem: Sloupcový vytvořte nový formulář, který je založený na tabulce Produkty, a pak ho uložte jako frmComboTest.

    Chcete-li to provést v aplikaci Microsoft Office Access 2003 a starších verzích aplikace Access, postupujte takto:

    1. V okně Databáze klikněte v části Objekty na Formuláře.
    2. Na panelu nástrojů okna Databáze klikněte na Nový .
    3. V dialogovém okně Nový formulář klikněte na Automatický formulář: Sloupcový, v rozevíracím seznamu vyberte tabulku Produkty a potom klikněte na OK.
    4. Uložte formulář jako frmComboTest.

    Chcete-li to provést v aplikaci Microsoft Office Access 2007 nebo novější verzi, postupujte takto:

    1. Na kartě Vytvoření klikněte ve skupině Formuláře na Průvodce formulářem.
    2. V dialogovém okně Z průvodce vyberte v rozevíracím seznamu tabulku Produkty.
    3. Vyberte pole, která chcete zobrazit v novém formuláři, a klikněte na Další.
    4. Výběrem možnosti Sloupcový nastavte rozložení formuláře a potom klikněte na Další.
    5. Jako název formuláře zadejte frmComboTest a potom klikněte na Dokončit.
  3. Pomocí Průvodce polem se seznamem přidejte nevázané pole se seznamem. Postupujte takto:

    1. Otevřete formulář frmComboTest v návrhovém zobrazení.
    2. Na panelu nástrojů se ujistěte, že je vybraná možnost Průvodci ovládacími prvky .

    Poznámka

    V Accessu 2007 nebo novější verzi se ujistěte, že je ve skupině Ovládací prvky na kartě Návrh vybraná možnost Použít průvodce ovládacími prvky.

    1. Vytvořte pole se seznamem ve formuláři frmComboTest.

    Poznámka

    V accessu 2007 nebo novější verzi klikněte na pole se seznamem ve skupině Ovládací prvky na kartě Návrh a potom klikněte na formulář frmComboTest. V dialogovém okně Zvolit tvůrce klikněte na Průvodce polem se seznamem a potom klikněte na OK.

    1. V dialogovém okně Průvodce polem se seznamem vyberte možnost Najít záznam ve formuláři na základě hodnoty vybrané v poli se seznamem a potom klikněte na Další.
    2. Vyberte pole ProductID a ProductName a potom klikněte na Další.
    3. Klikněte na tlačítko Dokončit.

    Průvodce polem se seznamem vytvoří proceduru události, která se podobá následující:

    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. Zobrazte formulář frmComboTest ve formulářovém zobrazení.

    Všimněte si, že když v poli se seznamem zvolíte název produktu, přesunete se do záznamu pro vybraný produkt.

Metoda 2

  1. Vytvořte nový formulář založený na tabulce Products pomocí Průvodce automatickým formulářem: Sloupcový podle pokynů v kroku 2 metody 1 a pak formulář uložte jako frmComboTest2.

  2. Na stránce Seznam vlastností formuláře frmComboTest2 nastavte vlastnost Filtr na kartě Data na [ProductName] = Forms![frmComboTest2]![cboLookup]hodnotu .

  3. Přidejte nevázané pole se seznamem cboLookup a nastavte vlastnosti ovládacího prvku takto:

    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Select [ProductName] from Products;
    BoundColumn: 1
    ColumnWidths: 1"
    AfterUpdate: mcrLocateProduct
    
  4. Vytvořte následující makro s názvem mcrLocateProduct:

    Action
    --------------------------------------
    SetValue
    Requery
    
    mcrLocateProduct Actions
    --------------------------------------
    SetValue
    Item: Forms![frmComboTest2].FilterOn
    Expression: True
    

    Všimněte si, že když otevřete formulář frmComboTest2 a v poli se seznamem cboLookup vyberete název produktu, nastaví se filtr na tuto hodnotu.

Metoda 3

  1. Vytvořte nový formulář založený na tabulce Products pomocí Průvodce automatickým formulářem: Sloupcový podle pokynů v kroku 2 metody 1 a pak formulář uložte jako frmSub.

  2. Na stránce Seznam vlastností formuláře frmSub nastavte vlastnost Výchozí zobrazení na kartě Formát na Jeden formulář.

  3. Vytvořte nový formulář (který není založený na žádné tabulce ani dotazu) a uložte ho jako frmMain. Potom přidejte pole se seznamem a nastavte jeho vlastnosti následujícím způsobem:

    Combo Box
    ----------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 4
    ColumnWidths: 0";2"
    BoundColumn: 1
    
  4. Vložte ovládací prvek Podformulář formuláře frmSub.

    • Přejděte do části Návrh>podformuláře nebo podsestavy a zrušte Průvodce podformulářem.
    • Přetáhněte frmSub z navigačního podokna do formuláře frmMain.
  5. Vlastnosti ovládacího prvku podformulář nastavte takto:

    Subform
    ----------------------------
    LinkChildFields: [ProductID]
    LinkMasterFields: cboLookup
    

    Změnou hodnoty v ovládacím prvku cboLookup access zajistí, aby záznamy v podformuláři odpovídaly poli se seznamem.

    Tuto metodu znázorňuje formulář Objednávky v ukázkové databázi Northwind. Podformulář Podrobnosti objednávky souvisí s vlastnostmi LinkMasterFields a LinkChildFields .

Metoda 4: Použití akce makra OpenForm s klauzulí WHERE

  1. Vytvořte nový formulář založený na tabulce Products pomocí Průvodce automatickým formulářem: Sloupcový podle pokynů v kroku 2 metody 1 a pak formulář uložte jako frmComboTest5.

  2. Přidejte nevázané pole se seznamem cboLookup a nastavte vlastnosti ovládacího prvku takto:

    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. V Tvůrci maker vytvořte nové vložené makro v AfterUpdate události pro pole se seznamem cboLookup.

  4. V rozevíracím seznamu Přidat novou akci vyberte OpenForm a nastavte následující vlastnosti:

    Form Name:   frmComboTest5
    View:        Form
    Filter Name: <leave as empty>
    Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value
    Data Mode: <optional>
    Window Mode: <optional>
    
  5. Uložte a zavřete makro.

  6. Uložte a spusťte formulář.

Po změně hodnoty pole se seznamem se formulář zavře a znovu otevře s použitým filtrem.