ACC2002: BETA: Jak použít pole se seznamem v projektu aplikace Access

Překlady článku Překlady článku
ID článku: 281870 - Produkty, které se vztahují k tomuto článku.
Tento článek byl dříve publikován CZ281870
Střední: Požaduje základní znalost vytváření maker, kódu a ovládání.

Tento článek se vztahuje pouze na projekty aplikace Microsoft Access (.adp).

Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Pro zobrazení seznamu možností je výhodné pole se seznamem. Pokud je nutné položky seznamu měnit na základě dat v tabulce nebo výsledku dotazu, můžete omezit zobrazení položek pomocí klauzule WHERE.

Příklad v tomto článku přidává pole se seznamem do formuláře Customers v ukázkovém projektu NorthwindCS.adp. Pole se seznamem bude obsahovat objednávky aktuálního zákazníka. Při vybrání určité objednávky se otevře formulář Orders obsahující podrobnosti o vybrané objednávce.

Seznam objednávek určitého zákazníka je možné vytvořit čtyřmi způsoby. Tyto metody využívají projekt aplikace Access (.adp) a Microsoft SQL Server 2000 jako datový zdroj. Jsou popsány v následujícím oddílu.

Další informace

Vytvoření pole se seznamem

Tento oddíl popisuje, jak můžete na formuláři Customers vytvořit pole se seznamem obsahujícím objednávky aktuálního zákazníka.
  1. Otevřete formulář Customers v návrhovém zobrazení.
  2. V sadě nástrojů klepněte na tlačítko Průvodci ovládacími prvky a poté přidejte do formuláře pole se seznamem.
  3. Na první stránce průvodce zvolte možnost vyhledávání hodnot seznamu v tabulce nebo dotazu a poté klepněte na tlačítko Další .
  4. Na druhé stránce průvodce klepněte na tabulku Orders a poté klepněte na tlačítko Další .
  5. Na třetí stránce průvodce přidejte do pole se seznamem pole OrderID, CustomerID a OrderDate a poté klepněte na tlačítko Další .
  6. Na čtvrté stránce průvodce zrušte zaškrtnutí políčka Skrýt sloupec klíčů a poté zmenšete šířku sloupce CustomerID tak, že nebude vidět. Klepněte na tlačítko Další .
  7. Na páté stránce průvodce klepněte na tlačítko Další pro potvrzení pole OrderID jako pole pro ukládání nebo použití v databázi.
  8. Na šesté stránce průvodce povolte ukládání hodnot pro pozdější použití a poté klepněte na tlačítko Další .
  9. Na poslední stránce průvodce zadejte popisek pole se seznamem Vyberte objednávku a poté klepněte na tlačítko Dokončit .
  10. Otevřete stránku vlastností pole se seznamem a změňte název pole na SelectOrderCombo .
  11. Nastavte vlastnost OnClick pole se seznamem na následující proceduru:
    Private Sub SelectOrderCombo_Click()
    On Error GoTo Err_SelectOrderCombo_Click
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "Orders"
    
        stLinkCriteria = "[OrderID]=" & Me![SelectOrderCombo]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    Exit_SelectOrderCombo_Click:
        Exit Sub
    
    Err_SelectOrderCombo_Click:
        MsgBox Err.Description
        Resume Exit_SelectOrderCombo_Click
    
    End Sub

Přidání kódu pro aktualizaci pole se seznamem

Tento oddíl popisuje způsoby, jak aktualizovat obsah pole se seznamem. Vyberte jednu ze čtyř následujících metod a poté přidejte do obsluhy události OnEnter odpovídající kód.

V metodě 1 a 2 resetuje událost OnClick při každé změně pole se seznamem zdroj řádků tak, aby pole se seznamem obsahovalo pouze objednávky aktuálního uživatele.

Poznámka : Protože pole CustomerID je typu Text, musí být odkazy Forms uzavřeny do jednoduchých uvozovek ('). Klauzule WHERE je například převedena z:
WHERE CustomerID = '" & Forms![Customers]![CustomerID] & "'"
na:
WHERE CustomerID = 'ALFKI'

Metoda 1: Použití jednoúčelové procedury

Nastavte vlastnost OnEnter pole se seznamem na následující proceduru:
Me.SelectOrderCombo.RowSource = "SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate FROM Orders WHERE " _
     & "CustomerID = '" & Forms![Customers]![CustomerID] & "' ORDER BY OrderDate DESC"

Metoda 2: Použití zobrazení serveru SQL Server

  1. Vytvořte v Návrháři zobrazení nové zobrazení a poté vyberte pole OrderID, CustomerID a OrderDate z tabulky Orders. Pro řazení objednávek od nejnovějších po nejstarší nastavte vlastnost Typ řazení pole OrderDate na hodnotu Sestupně .
  2. Uložte zobrazení pod názvem vwCustomerOrders.
  3. Nastavte vlastnost OnEnter pole se seznamem na následující proceduru:
    Me.SelectOrderCombo.RowSource = "SELECT * FROM vwCustomerOrders WHERE CustomerId = '" & Forms![Customers]![CustomerID] & "'"
Pro použití metody 3 a 4 je při události OnEnter volána metoda Requery , která vždy znovu spustí uloženou proceduru nebo funkci serveru SQL vracející odpovídající záznamy. V těchto příkladech je na formuláři definován ovládací prvek Parameter používající v podmínce hodnotu @ControlName. Aplikace Access automaticky vyhodnotí podmínku a vyžádá si odpovídající záznamy.

V následujících příkladech vrací pole se seznamem všechny objednávky aktuálního zákazníka. Protože textové pole CustomerID obsahuje ID aktuálního zákazníka, můžete se v podmínce uložené procedury nebo funkce serveru SQL odkazovat přímo na pole CustomerID.

Metoda 3: Použití uložené procedury serveru SQL Server

  1. V grafickém návrháři vytvořte novou proceduru.
  2. Vyberte tabulku Orders a poté do uložené procedury přidejte pole OrderID, CustomerID a OrderDate.
  3. Zadejte hodnotu @CustomerID jako podmínku pro pole CustomerID a seřaďte pole OrderDate sestupně.
  4. Uložte proceduru pod názvem spCustomerOrders a poté ji zavřete.
  5. Nastavte uloženou proceduru spCustomerOrders jako zdroj řádků pole se seznamem.

    Poznámka : Program Návrhář uložených procedur vytvoří a uloží následující příkaz v jazyku SQL:
    CREATE PROCEDURE dbo.spCustomerOrders
      (@CustomerID varchar(5))
      AS SELECT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC
  6. Nastavte vlastnost OnEnter pole se seznamem na následující proceduru:
    Me.SelectOrderCombo.Requery

Metoda 4: Použití funkce serveru SQL Server 2000

Tuto metodu můžete použít pouze tehdy, pokud aplikace Access používá SQL Server 2000 nebo vyšší jako datový zdroj.
  1. V grafickém návrháři vytvořte funkci.
  2. Vyberte tabulku Orders a poté do uložené procedury přidejte pole OrderID, CustomerID a OrderDate.
  3. Zadejte hodnotu @CustomerID jako podmínku pro pole CustomerID a seřaďte pole OrderDate sestupně.
  4. Uložte funkci pod názvem fnCustomerOrders a poté ji zavřete.
  5. Nastavte funkci fnCustomerOrders jako zdroj řádků pole se seznamem.

    Poznámka : Program Návrhář uložených procedur vytvoří a uloží následující příkaz v jazyku SQL:
    CREATE FUNCTION dbo.fnCustomerOrders
      (@CustomerID varchar(5))
      RETURNS TABLE
      RETURN ( SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC )
  6. Nastavte vlastnost OnEnter pole se seznamem na následující proceduru:
    Me.SelectOrderCombo.Requery
Pro vyzkoušení těchto metod otevřete formulář a vyberte v poli se seznamem nějakou položku. Událost OnEnter si vyžádá obsah pole se seznamem a automaticky vygeneruje seznam objednávek aktuálního zákazníka. Po klepnutí na nějakou objednávku v seznamu je zpracována událost OnClick pole se seznamem a je otevřen formulář Orders obsahující podrobnosti vybrané objednávky.

Vlastnosti

ID článku: 281870 - Poslední aktualizace: 6. listopadu 2003 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Access 2002 Standard Edition
Klíčová slova: 
kbhowto accesscs KB281870

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com