Formu vai atskaiti, kas ir saistīta ar iekļautā procedūra vai funkcija neattiecas WHERE nosacījums

Vidējs: Nepieciešama pamata makro, kodēšana un sadarbspēja iemaņas.


Šis raksts attiecas tikai uz Microsoft Access projekta (. adp).


Pazīmes

Mēģinot filtrēt piekļuves formas vai atskaites, izmantojot vērtību, kas tiek parādīts cits objekts, piemēram, citā Access veidlapu filtrs netiek lietots.

Risinājums

Ir vairākas metodes, kuras viens var izmantot, lai novērstu nespēja filtrētu formu vai atskaiti, kas ir saistīta ar iekļautā procedūra vai funkcija. Lielākā daļa no šiem risinājumiem ir jānomaina ar cita veida ieraksta avotu, piemēram, tabulas, skata vai SQL priekšraksta iekļautā procedūra vai funkcija.

Tomēr šis risinājums parāda, kā varat turpināt lietot saglabātā procedūra kā ieraksta avota veidlapas laikā veiksmīgi īstenot WHERE nosacījums vai filtru.

Uzmanību!: vadīties šajā piemērā, ja modificējat parauga Access projekta NorthwindCS.adp. Ieteicams dublēt failu NorthwindCS.adp un projekta kopiju, veiciet tālāk norādītās darbības.

  1. Atveriet parauga projektu NorthwindCS.adp.

  2. Datu bāzes logā iezīmējiet kategoriju tabulas un pēc tam noklikšķiniet uz automātiskās formas Ievietot izvēlnē.

    Piezīme. Izmantojot Access 2007, iezīmējiet kategoriju tabulas datu bāzes logā un pēc tam noklikšķiniet uz formas cilnes izveidot grupā formas .

  3. Atveriet formu noformējuma skatā.

  4. Dzēsiet apakšformas objekts, kuram ir apzīmēts Table.Products no galvenā forma un pēc tam pievienojiet komandu pogas formā. Ja vednis, noklikšķiniet uz Atcelt.

  5. Iestatiet šo rekvizītu komandpoga:
    Name: cmdFilterProducts
    Caption: Filter Products
    On Click: [Event Procedure]

  6. Iestatiet komandas pogas OnClick rekvizītā notikumu šādi:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , , acFormEdit, acWindowNormal
    End Sub
  7. Izvēlnē Fails noklikšķiniet uz Aizvērt un atgriezties Microsoft Access.

  8. Izvēlnē Fails noklikšķiniet uz saglabātun saglabājiet veidlapu kā Categories1.

    Piezīme. Ātrās piekļuves rīkjoslā noklikšķiniet uz saglabāt.

  9. Datu bāzes logā, noklikšķiniet uz vaicājumiun pēc tam noklikšķiniet uz Jauns.

    Piezīme. Ja lietojat Access 2007, noklikšķiniet uz Vaicājuma vedniscitas cilnes izveidot grupā.

  10. Dialoglodziņā Jauns vaicājums noklikšķiniet uz Izveidot teksta iekļautā procedūra, un pēc tam noklikšķiniet uz Labi.

  11. Ierakstiet vai ielīmējiet šādu paziņojumu Transact-SQL, aizveriet un saglabājiet procedūru spProducts noklusējuma nosaukumu:

    CREATE PROCEDURE spProducts
    @CatID int
    AS
    SELECT * FROM Products WHERE CategoryID = @CatID
    RETURN
  12. Atveriet produktu formu noformējuma skatā un pēc tam mainiet rekvizītu Ieraksta avots produktu spProducts.

  13. Ritiniet uz leju līdz formas rekvizīts InputParameters , un pēc tam piešķirt šo rekvizītu šādu vērtību:

    @CatID int = Forms! [Categories1]! [CategoryID]

  14. Aizveriet un saglabājiet formu Products un pēc tam atveriet formas Categories1.

  15. Atrodiet CategoryName saldumusun pēc tam noklikšķiniet uz pogas Filtrēt produktu . Ņemiet vērā, ka formas Products atveras un parāda tikai tiem produktiem, kur kategorija ir vienāds saldumus.

Statuss

Šī darbība ir ar nolūku.

Papildinformācija

Bieži vien Access lietotājs vēlaties ierobežot piekļuvi veidlapas vai atskaites ierakstu skaitu. Viena metode, kā to izdarīt ir filtrē ierakstus formā (vai atskaišu) WHERE stāvoklī un izmantot kādu citu objektu piedāvāt nosacījuma vērtība. Piemēram, vienā var parādīt nosacījuma vērtību, kas tiks izmantota citu veidlapu, lai ierobežotu skaitu apskatīt ierakstus. Tomēr, ja formas, ko vēlaties filtrēt ir iekļauta procedūra vai funkcija kā ieraksta avotu, filtrs tiks ignorēta. Šo problēmu ilustrē tālāk norādītās darbības.

Uzmanību!: vadīties šajā piemērā, ja modificējat parauga Access projekta NorthwindCS.adp. Ieteicams dublēt failu NorthwindCS.adp un projekta kopiju, veiciet tālāk norādītās darbības.

Darbības, kas jāveic, lai atjaunotu darbību Acess 2003

  1. Izpildiet no 1 līdz 5 iepriekš šajā rakstā sadaļā "Risinājums".

  2. Iestatiet komandas pogas OnClick rekvizītā notikumu šādi:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , "[CategoryID] = " & Me!CategoryID, acFormEdit, acWindowNormal
    End Sub
  3. Izvēlnē Fails noklikšķiniet uz Aizvērt un atgriezties Microsoft Access.

  4. Izvēlnē Fails noklikšķiniet uz saglabātun pēc tam saglabājiet veidlapu kā Categories1.

  5. Atveriet formu formas skatā.

  6. Atrodiet CategoryName saldumusun pēc tam noklikšķiniet uz pogas Filtrēt produktu . Ņemiet vērā, ka formas Products atveras un parāda tikai tiem produktiem, kur kategorija ir vienāds saldumus.

  7. Aizveriet produktu un Categories1 formas.

  8. Datu bāzes logā, noklikšķiniet uz vaicājumiun pēc tam noklikšķiniet uz Jauns. Noklikšķiniet uz Izveidot teksta iekļautā procedūra, un pēc tam noklikšķiniet uz Labi.

  9. Ierakstiet vai ielīmējiet šādu paziņojumu Transact-SQL, aizveriet un saglabājiet procedūru spProducts noklusējuma nosaukumu:

    CREATE PROCEDURE spProducts
    AS
    SELECT * FROM Products
    RETURN
  10. Atveriet produktu formu noformējuma skatā un pēc tam mainīt avotu rekvizītu produktu spProducts.

  11. Aizveriet un saglabājiet formu Products un pēc tam atveriet formas Categories1.

  12. Atrodiet CategoryName saldumusun pēc tam noklikšķiniet uz pogas Filtrēt produktu . Ņemiet vērā, ka formas Products atver un parāda visus produktus, nevis tikai tiem produktiem, saldumus kategorijā.

Vai nepieciešama papildu palīdzība?

Paplašiniet savas prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Microsoft Insider

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka jums varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta speciālistiem.

×