Moderato: Richiede competenze di interoperabilità, la codifica e macro di base.


In questo articolo si applica solo a un progetto di Microsoft Access (adp).


Sintomi

Quando si tenta di filtrare un report o una maschera di Access utilizzando un valore che viene visualizzato su un altro oggetto, ad esempio un altro form di accesso, il filtro non viene applicato.

Risoluzione

Esistono diversi metodi che è Impossibile utilizzare per risolvere l'impossibilità di filtrare una maschera o un report associato a una stored procedure o funzione. La maggior parte di queste risoluzioni implica sostituendo la stored procedure o funzione con un altro tipo di origine record, ad esempio una tabella, una vista o un'istruzione SQL.

La seguente risoluzione tuttavia mostra come è possibile continuare a utilizzare una stored procedure come origine record per una maschera e di implementare correttamente un filtro o condizione WHERE.

Attenzione: se si seguono i passaggi in questo esempio, si modifica il progetto di esempio NorthwindCS. adp. È possibile eseguire il backup del file NorthwindCS. adp e attenersi alla seguente procedura su una copia del progetto.

  1. Aprire il progetto di esempio NorthwindCS. adp.

  2. Nella finestra del Database, fare clic per evidenziare la tabella categorie e quindi scegliere maschera standard dal menu Inserisci .

    Nota: Se si utilizza Access 2007, fare clic per evidenziare la tabella categorie nella finestra del database e quindi fare clic su maschera nel gruppo maschere della scheda Crea .

  3. Aprire la maschera in visualizzazione struttura.

  4. Eliminare l'oggetto della sottomaschera denominata Table.Products dalla maschera principale e quindi aggiungere un pulsante di comando alla maschera. Se si avvia la procedura guidata, fare clic su Annulla.

  5. Impostare le seguenti proprietà per il pulsante di comando:
    Name: cmdFilterProducts
    Caption: Filter Products
    On Click: [Event Procedure]

  6. Impostare la proprietà OnClick del pulsante di comando per la routine evento seguente:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , , acFormEdit, acWindowNormal
    End Sub
  7. Dal menu File , scegliere Chiudi e torna a Microsoft Access.

  8. Dal menu File , fare clic su Salvae salvare il modulo come Categories1.

    Nota: Sulla barra degli strumenti Accesso rapido , fare clic su Salva.

  9. Nella finestra del Database, fare clic su querye quindi fare clic su Nuovo.

    Nota: Se si utilizza Access 2007, fare clic su Creazione guidata Query nel gruppo della scheda Crea .

  10. Nella finestra di dialogo Nuova Query , fare clic su Crea Stored Proceduree quindi fare clic su OK.

  11. Digitare o incollare la seguente istruzione Transact-SQL, quindi chiudere e salvare la procedura con il nome predefinito di spProducts:

    CREATE PROCEDURE spProducts
    @CatID int
    AS
    SELECT * FROM Products WHERE CategoryID = @CatID
    RETURN
  12. Aprire la maschera prodotti in visualizzazione struttura e quindi modificare la proprietà Origine Record da prodotti a spProducts.

  13. Scorrere la proprietà InputParameters del modulo e quindi assegnare il seguente valore per questa proprietà:

    Int @CatID = Forms! [Categories1]! [IDCategoria]

  14. Chiudere e salvare la maschera prodotti e quindi aprire il modulo Categories1.

  15. Individuare il CategoryName Dolciumie quindi fare clic sul pulsante Filtro prodotti . Si noti che la maschera prodotti apre e visualizza solo i prodotti in categorie sono uguale a dolciumi.

Stato

Questo è il comportamento previsto.

Ulteriori informazioni

Spesso, un utente di Access desidera limitare il numero di record visualizzati di una maschera o report. Per eseguire questa operazione è per filtrare i record della maschera (o rapporto) con una condizione WHERE e utilizzare un altro oggetto per fornire il valore condizionale. Ad esempio un form è possibile visualizzare un valore condizionale che verrà utilizzato da un altro form al fine di limitare il numero di record da visualizzare. Tuttavia, se il modulo che si desidera filtrare dispone di una stored procedure o una funzione come origine record, il filtro viene ignorato. La procedura seguente viene illustrato questo comportamento.

Attenzione: se si seguono i passaggi in questo esempio, si modifica il progetto di esempio NorthwindCS. adp. È possibile eseguire il backup del file NorthwindCS. adp e attenersi alla seguente procedura su una copia del progetto.

Procedura per riprodurre il comportamento in Access 2003

  1. Seguire i passaggi da 1 a 5 della sezione "Risoluzione" in questo articolo.

  2. Impostare la proprietà OnClick del pulsante di comando per la routine evento seguente:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , "[CategoryID] = " & Me!CategoryID, acFormEdit, acWindowNormal
    End Sub
  3. Dal menu File , scegliere Chiudi e torna a Microsoft Access.

  4. Dal menu File , fare clic su Salvae quindi salvare il modulo come Categories1.

  5. Aprire la maschera in visualizzazione Maschera.

  6. Individuare il CategoryName Dolciumie quindi fare clic sul pulsante Filtro prodotti . Si noti che la maschera prodotti apre e visualizza solo i prodotti in cui la categoria è uguale a dolciumi.

  7. Chiudere entrambi i prodotti e Categories1 form.

  8. Nella finestra del Database, fare clic su querye quindi fare clic su Nuovo. Fare clic su Crea Stored Proceduree quindi fare clic su OK.

  9. Digitare o incollare la seguente istruzione Transact-SQL, quindi chiudere e salvare la procedura con il nome predefinito di spProducts:

    CREATE PROCEDURE spProducts
    AS
    SELECT * FROM Products
    RETURN
  10. Aprire la maschera prodotti in visualizzazione struttura e quindi modificare la proprietà RecordSource da prodotti a spProducts.

  11. Chiudere e salvare la maschera prodotti e quindi aprire il modulo Categories1.

  12. Individuare il CategoryName Dolciumie quindi fare clic sul pulsante Filtro prodotti . Si noti che la maschera prodotti apre e visualizza tutti i prodotti anziché solo i prodotti della categoria di dolciumi.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della traduzione?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×