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

Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
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).

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, , , stLinkCriteriaExit_SelectOrderCombo_Click:    Exit SubErr_SelectOrderCombo_Click:    MsgBox Err.Description    Resume Exit_SelectOrderCombo_ClickEnd 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.
OfficeKBHowTo inf
Proprietà

ID articolo: 281870 - Ultima revisione: 12/05/2015 23:11:26 - Revisione: 1.0

Microsoft Access 2002 Standard Edition

  • kbnosurvey kbarchive kbhowto kbclientserver KB281870
Feedback