ACC2002: Utilizzo di caselle combinate con parametri in un progetto Access

Traduzione articoli Traduzione articoli
Identificativo articolo: 281870 - Visualizza i prodotti a cui si riferisce l?articolo.
DifficoltÓ media: sono richieste conoscenze di base di creazione di macro, gestione di codice e di interoperabilitÓ.

Il contenuto di questo articolo Ŕ applicabile solo ai progetti di Microsoft Access (adp).

Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Le caselle combinate rappresentano un valido metodo per presentare agli utenti un elenco di scelte. Se Ŕ necessario basare l'origine riga di una casella combinata su un sottoinsieme di record di una tabella o di una query, Ŕ possibile aggiungere una clausola WHERE per limitare le scelte.

L'esempio riportato in questo articolo consente di aggiungere una casella combinata alla maschera Clienti nel progetto di esempio NorthwindCS.adp. Nella casella combinata sono elencati gli ordini effettuati dal cliente corrente. Quando viene selezionata, viene aperta la maschera Ordini in cui sono riportati i dettagli dell'ordine selezionato.

╚ possibile utilizzare quattro diversi metodi per ottenere un elenco di ordini corrispondenti effettuati da un cliente. Per tutti i metodi viene utilizzata come origine dati un progetto Access (adp) con Microsoft SQL Server 2000. La descrizione dei metodi Ŕ riportata nella sezione successiva.

Informazioni

Creazione della casella combinata

In questa sezione viene spiegato come creare una casella combinata nella maschera Clienti per visualizzare un elenco degli ordini effettuati dal cliente corrente.
  1. Aprire la maschera Clienti in visualizzazione Struttura.
  2. Nella casella degli strumenti fare clic su Creazioni guidate Controllo, quindi aggiungere una casella combinata alla maschera.
  3. Nella prima pagina della Creazione guidata scegliere di ricercare i valori in una tabella o in una query, quindi scegliere Avanti.
  4. Nella seconda pagina della Creazione guidata fare clic sulla tabella Ordini, quindi scegliere Avanti.
  5. Nella terza pagina della Creazione guidata aggiungere IDOrdine, IDCliente e DataOrdine come campi della casella combinata, quindi scegliere Avanti.
  6. Nella quarta pagina della Creazione guidata deselezionare la casella di controllo Nascondi colonna chiave (scelta consigliata), quindi ridurre la colonna IDCliente in modo che non sia visibile. Scegliere Avanti.
  7. Nella quinta pagina della Creazione guidata fare clic nuovamente su Avanti per accettare IDOrdine come campo da memorizzare o utilizzare nel database.
  8. Nella sesta pagina della Creazione guidata scegliere di memorizzare il valore per l'utilizzo successivo, quindi scegliere Avanti.
  9. Nell'ultima pagina della Creazione guidata assegnare alla casella combinata l'etichetta Seleziona ordine, quindi fare clic su Fine.
  10. Aprire il foglio delle proprietÓ della casella combinata, quindi modificare il nome della casella in SelectOrderCombo.
  11. Impostare la proprietÓ OnClick della casella combinata sulla seguente routine evento:
    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

Aggiunta del codice per l'aggiornamento della casella combinata

In questa sezione vengono illustrati i metodi disponibili per aggiornare la casella combinata. Selezionare uno dei seguenti quattro metodi, quindi aggiungere il codice appropriato all'evento OnEnter della casella combinata.

Per i metodi 1 e 2 ogni volta che si seleziona la casella combinata, l'evento OnClick reimposta l'origine riga della casella in modo da visualizzare solo gli ordini effettuati dal cliente corrente.

NOTA: poichÚ il campo IDCliente Ŕ un campo di testo, Ŕ necessario racchiudere il riferimento Maschere tra virgolette singole. Ad esempio la clausola WHERE generata viene convertita da:
WHERE CustomerID = '" & Forms![Customers]![CustomerID] & "'"
in:
WHERE CustomerID = 'ALFKI'

Metodo 1: Uso della selezione specifica

Impostare la proprietÓ OnEnter della casella combinata sulla seguente routine evento:
Me.SelectOrderCombo.RowSource = "SELECT TOP 100 PERCENT OrderID, CustomerID, OrderDate FROM Orders WHERE " _
     & "CustomerID = '" & Forms![Customers]![CustomerID] & "' ORDER BY OrderDate DESC"

Metodo 2: Uso di una visualizzazione SQL Server

  1. Creare una nuova visualizzazione in Progettazione visualizzazioni, quindi selezionare i campi IDOrdine, IDCliente e DataOrdine dalla tabella Ordini. Per ordinare l'elenco degli ordini a partire da quello pi¨ recente, impostare il Tipo di ordinamento per il campo DataOrdine su Decrescente.
  2. Salvare la visualizzazione come vwCustomerOrders.
  3. Impostare la proprietÓ OnEnter della casella combinata sulla seguente routine evento:
    Me.SelectOrderCombo.RowSource = "SELECT * FROM vwCustomerOrders WHERE CustomerId = '" & Forms![Customers]![CustomerID] & "'"
Per i metodi 3 e 4 viene richiamato il metodo Requery della casella combinata sull'evento OnEnter in modo da rieseguire una stored procedure o una funzione SQL che restituisca i record corrispondenti. In questi esempi il parametro viene definito come controllo della maschera i cui criteri comprendono @ControlName. I criteri vengono valutati automaticamente in modo da richiedere i record corrispondenti.

Negli esempi che seguono la casella combinata restituisce un elenco di tutti gli ordini effettuati dal cliente corrente. PoichÚ la casella di testo IDCliente contiene l'ID del cliente corrente, Ŕ possibile fare direttamente riferimento a tale casella di testo nei criteri della stored procedure o della funzione SQL.

Metodo 3: Uso di una stored procedure SQL Server

  1. Creare una nuova stored procedure nello strumento di progettazione grafica.
  2. Selezionare la tabella Ordini, quindi aggiungere i campi IDOrdine, IDCliente e DataOrdine alla stored procedure.
  3. Immettere @CustomerID come criterio per il campo IDCliente, quindi impostare l'ordinamento decrescente per il campo DataOrdine.
  4. Salvare la stored procedure come spCustomerOrders, quindi chiuderla.
  5. Impostare la stored procedure spCustomerOrders come origine riga per la casella combinata.

    NOTA: la seguente istruzione SQL viene creata e salvata dallo strumento di progettazione di stored procedure:
    CREATE PROCEDURE dbo.spCustomerOrders
      (@CustomerID varchar(5))
      AS SELECT OrderID, CustomerID, OrderDate
      FROM   dbo.Orders
      WHERE  (CustomerID = @CustomerID)
      ORDER BY OrderDate DESC
  6. Impostare la proprietÓ OnEnter della casella combinata sulla seguente routine evento:
    Me.SelectOrderCombo.Requery

Metodo 4: Uso di una funzione SQL Server 2000

╚ possibile utilizzare questo metodo solo se come origine dati del progetto Access viene utilizzato SQL Server 2000 o versione successiva.
  1. Creare una funzione nello strumento di progettazione grafica.
  2. Selezionare la tabella Ordini, quindi aggiungere i campi IDOrdine, IDCliente e DataOrdine alla stored procedure.
  3. Immettere @CustomerID come criterio per il campo IDCliente, quindi impostare l'ordinamento decrescente per il campo DataOrdine.
  4. Salvare la funzione come fnCustomerOrders, quindi chiuderla.
  5. Impostare la funzione fnCustomerOrders come origine riga per la casella combinata.

    NOTA: la seguente istruzione SQL viene creata e salvata dallo strumento di progettazione di stored procedure:
    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. Impostare la proprietÓ OnEnter della casella combinata sulla seguente routine evento:
    Me.SelectOrderCombo.Requery
Per verificare il funzionamento di questi metodi, aprire la maschera, quindi effettuare una selezione dalla casella combinata Seleziona ordine. L'evento OnEnter esegue una query sulla casella combinata, generando automaticamente un elenco degli ordini effettuati dal cliente corrente. Una volta selezionato un ordine, viene eseguito l'evento OnClick della casella combinata e nella maschera Ordini aperta viene visualizzato l'ordine selezionato.

ProprietÓ

Identificativo articolo: 281870 - Ultima modifica: giovedý 29 gennaio 2004 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Access 2002 Standard Edition
Chiavi:á
kbhowto kbclientserver KB281870
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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