Formulár alebo zostavu viazanú na uloženú procedúru alebo funkciu neplatí podmienka WHERE

Mierna: Vyžaduje základné makro, kódovanie a interoperabilitu zručností.


Tento článok sa vzťahuje iba na projekt programu Microsoft Access (.adp).


Príznaky

Pri pokuse o filtrovať formulár alebo zostavu pomocou hodnotu, ktorá sa zobrazuje na iný objekt, napríklad iný formulár programu Access, filter sa nepoužíva.

Riešenie

Jeden môže použiť na vyriešenie nemožnosť filtrovať formulár alebo zostavu viazanú uloženej procedúry alebo funkcii niekoľkými spôsobmi. Väčšina z týchto zahŕňajú uložená procedúra alebo funkcia nahradí iný typ zdroja, tabuľky, zobrazenia alebo príkaz SQL.

Však nasledovné riešenie sa uvádza, ako budete môcť použiť uloženú procedúru ako zdroj záznamov formulára pri úspešnej implementácii podmienka WHERE alebo filtra.

Upozornenie: Ak budete postupovať podľa krokov v tomto príklade, môžete upraviť vzorky Access projekt NorthwindCS.adp. Môžete zálohovať súbor NorthwindCS.adp a postupujte podľa týchto krokov na kópiu projektu.

  1. Otvorte vzorky projekt NorthwindCS.adp.

  2. V okne databáze kliknutím zvýraznite kategórie tabuľky a kliknite na tlačidlo Automatický formát v ponuke Vložiť .

    Poznámka: Ak používate Access 2007, kliknutím zvýraznite kategórie tabuľky v okne databáze a kliknite na tlačidlo formulár v skupine Formuláre na karte vytvoriť .

  3. Otvorte formulár v návrhovom zobrazení.

  4. Odstráňte Podformulár označený Table.Products z hlavného formulára a potom pridať tlačidlo do formulára. Ak sa spustí sprievodca, kliknite na tlačidlo Zrušiť.

  5. Nastaviť nasledovné vlastnosti príkazového tlačidla:
    Name: cmdFilterProducts
    Caption: Filter Products
    On Click: [Event Procedure]

  6. Nastaviť OnClick vlastnosť príkazového tlačidla postupu nasledujúce udalosti:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , , acFormEdit, acWindowNormal
    End Sub
  7. V ponuke súbor kliknite na tlačidlo Zavrieť a vrátiť sa do programu Microsoft Access.

  8. V ponuke súbor kliknite na tlačidlo Uložiťa uložte formulár ako Categories1.

    Poznámka: Na paneli s nástrojmi Rýchly prístup , kliknite na tlačidlo Uložiť.

  9. V okne databáze kliknite na položku dotazya kliknite na tlačidlo nové.

    Poznámka: Ak používate Access 2007, kliknite na položku Sprievodca dotazom v iné skupiny na vytvoriť kartu.

  10. V dialógovom okne Nový dotaz kliknite na tlačidlo Vytvoriť Text uložená procedúraa potom kliknite na tlačidlo OK.

  11. Zadajte alebo prilepte nasledujúci príkaz Transact-SQL, zatvorte a uložte procedúry s predvoleným názvom spProducts:

    CREATE PROCEDURE spProducts
    @CatID int
    AS
    SELECT * FROM Products WHERE CategoryID = @CatID
    RETURN
  12. Otvorí formulár produkty v návrhovom zobrazení a zmeňte vlastnosť Zdroj záznamov produktov spProducts.

  13. Prejdite na InputParameters vlastnosť formulára a tento objekt priraďte nasledujúcu hodnotu:

    @CatID int = formuláre! [Categories1]. [Identifikácia kategórie]

  14. Zatvorte a uložte formulár produkty a otvorte Categories1 formulár.

  15. Vyhľadajte NázovKategórie cukrovinkya potom kliknite na tlačidlo Filter produktov . Vedomie, že produkty formulár otvorí a zobrazuje iba tie produkty, kde je rovná cukrovinky kategórie.

Stav

Toto správanie je zámerné.

Ďalšie informácie

Prístup používateľa často chcieť obmedziť počet záznamov na formulár alebo zostavu. Jedna metóda je filtrovať záznamy formulára (alebo správy) s podmienka WHERE alebo iný typ objektu na podmienené hodnoty. Napríklad jeden formulár môžete zobraziť podmienené hodnotu, ktorá sa použije iný formulár s cieľom obmedziť počet záznamov, ktoré sa zobrazí. Ak chcete filtrovať formulár uložená procedúra alebo funkcia ako zdroj záznamov, filter je ignorované. Nasledovné kroky ilustráciu tohto správania.

Upozornenie: Ak budete postupovať podľa krokov v tomto príklade, môžete upraviť vzorky Access projekt NorthwindCS.adp. Môžete zálohovať súbor NorthwindCS.adp a postupujte podľa týchto krokov na kópiu projektu.

Kroky na reprodukovanie správania Acess 2003

  1. Vykonajte kroky 1 až 5 v časti "Riešenie" tohto článku.

  2. Nastaviť OnClick vlastnosť príkazového tlačidla postupu nasledujúce udalosti:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , "[CategoryID] = " & Me!CategoryID, acFormEdit, acWindowNormal
    End Sub
  3. V ponuke súbor kliknite na tlačidlo Zavrieť a vrátiť sa do programu Microsoft Access.

  4. V ponuke súbor kliknite na tlačidlo Uložiťa uložte formulár ako Categories1.

  5. Otvorte formulár v podobe Zobraziť.

  6. Vyhľadajte NázovKategórie cukrovinkya potom kliknite na tlačidlo Filter produktov . Vedomie, že produkty formulár otvorí a zobrazuje iba tie produkty, kde je rovná cukrovinky kategórie.

  7. Zavrieť produkty a Categories1 formulárov.

  8. V okne databáze kliknite na položku dotazya kliknite na tlačidlo nové. Kliknite na tlačidlo Vytvoriť Text uložená procedúra, a potom kliknite na tlačidlo OK.

  9. Zadajte alebo prilepte nasledujúci príkaz Transact-SQL, zatvorte a uložte procedúry s predvoleným názvom spProducts:

    CREATE PROCEDURE spProducts
    AS
    SELECT * FROM Products
    RETURN
  10. Otvorí formulár produkty v návrhovom zobrazení a zmeňte vlastnosť Vlastnosti produktov spProducts.

  11. Zatvorte a uložte formulár produkty a otvorte Categories1 formulár.

  12. Vyhľadajte NázovKategórie cukrovinkya potom kliknite na tlačidlo Filter produktov . Vedomie, že produkty formulár otvorí a zobrazí všetky produkty namiesto iba tieto produkty v kategórii cukrovinky.

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×