Teď jste offline a čekáte, až se znova připojí internet.

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

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

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čítkoPrůvodci ovládacími prvkya 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čítkoDalší.
  4. Na druhé stránce průvodce klepněte na tabulku Orders a poté klepněte na tlačítkoDalší.
  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čítkoDalší.
  6. Na čtvrté stránce průvodce zrušte zaškrtnutí políčkaSkrýt sloupec klíčůa poté zmenšete šířku sloupce CustomerID tak, že nebude vidět. Klepněte na tlačítkoDalší.
  7. Na páté stránce průvodce klepněte na tlačítkoDalší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čítkoDalší.
  9. Na poslední stránce průvodce zadejte popisek pole se seznamemVyberte objednávkua poté klepněte na tlačítkoDokončit.
  10. Otevřete stránku vlastností pole se seznamem a změňte název pole naSelectOrderCombo.
  11. Nastavte vlastnostOnClickpole 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, , , stLinkCriteriaExit_SelectOrderCombo_Click:    Exit SubErr_SelectOrderCombo_Click:    MsgBox Err.Description    Resume Exit_SelectOrderCombo_ClickEnd 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 vlastnostOnEnterpole 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 vlastnostTyp řazenípole OrderDate na hodnotuSestupně.
  2. Uložte zobrazení pod názvem vwCustomerOrders.
  3. Nastavte vlastnostOnEnterpole 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 metodaRequery, 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@CustomerIDjako 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 vlastnostOnEnterpole 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@CustomerIDjako 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 vlastnostOnEnterpole 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.
inf
Vlastnosti

ID článku: 281870 - Poslední kontrola: 11/06/2003 17:56:00 - Revize: 1.0

  • Microsoft Access 2002 Standard Edition
  • kbhowto accesscs KB281870
Váš názor