Help and Support

Identificativo articolo: 278378 - Ultima modifica: mercoledì 21 febbraio 2007 - Revisione: 5.4

Utilizzo di AddItem e RemoveItem per spostare le selezioni da una casella di riepilogo a un'altra

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I278378
Utenti esperti: sono richieste conoscenze avanzate di gestione di codice, interoperabilità e funzioni multiutente.

Le informazioni contenute in questo articolo si applicano ai database di Microsoft Access (mdb) e ai progetti di Microsoft Access (adp).

Espandi tutto | Chiudi tutto

Sommario

In questo articolo viene spiegato come gestire due elenchi in modo che le voci di uno possano essere trasferite singolarmente o in gruppo al secondo elenco e viceversa. Il processo è simile a quello delle creazioni guidate di Access, ad esempio la Creazione guidata Casella di riepilogo.

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presume che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle routine. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze. ATTENZIONE: la procedura riportata in questo esempio comporta la modifica del database di esempio Northwind.mdb. È consigliabile eseguire una copia di backup del file Northwind.mdb sulla quale eseguire la procedura.

Quando si utilizza la Creazione guidata Casella di riepilogo per selezionare campi da una tabella o da una query, nel terzo passaggio della procedura vengono visualizzati due elenchi: Campi disponibili e Campi selezionati. Il campo Campi selezionati è inizialmente vuoto. È possibile selezionare i campi in un elenco e spostarli nell'altro facendo clic su uno dei quattro pulsanti.

In questo articolo viene spiegato come creare una maschera con elenchi simili, utilizzabili per selezionare record specifici da elaborare. Ciò può risultare utile, ad esempio, quando è necessario selezionare alcuni clienti le cui identità sono note all'operatore ma per i quali non è agevole impostare criteri in una query.

Per creare una maschera che consenta di selezionare clienti in questo modo, attenersi alla seguente procedura:
  1. Avviare Access, quindi aprire il database di esempio Northwind.mdb oppure il progetto di esempio NorthwindCS.adp.
  2. Creare un nuovo modulo in visualizzazione Struttura, quindi salvarla con il nome Select Customers.
  3. Creare due caselle di riepilogo nella sezione dei dettagli della maschera e assegnarvi i nomi List1 e List2. Impostare le relative proprietà TipoOrigineRiga su Elenco valori.
  4. Creare quattro pulsanti di comando, uno sotto l'altro nella sezione dei dettagli della maschera, quindi impostarne le proprietà come riportato di seguito:
         Nome                  Didascalia
         ----------            ----------
         cmdMoveToList2        >
         cmdMoveAllToList2     >>
         cmdMoveToList1        <
         cmdMoveAllToList1     <<
  5. Sulla barra degli strumenti fare clic sul pulsante Codice, quindi nella finestra del codice digitare o incollare una delle seguenti routine, a seconda che venga utilizzato Northwind.mdb o NorthwindCS.adp:
    • Se si utilizza Northwind.mdb, digitare o incollare la seguente routine:
      Private Sub Form_Load()
         Dim db As DAO.Database
         Dim rs As DAO.Recordset
         Dim strSQL As String, strItem As String
      
         strSQL = "SELECT CustomerID, CompanyName FROM Customers"
         Set db = CurrentDb
         Set rs = db.OpenRecordset(strSQL)
         Do Until rs.EOF
            strItem = rs.Fields("CustomerID").Value & ";" _
               & rs.Fields("CompanyName").Value
            Me.List1.AddItem strItem      ' Row Source Type must be Value List
            rs.MoveNext
      
         Loop
         rs.Close
         Set rs = Nothing
         Set db = Nothing
      End Sub
      						
    • Se si utilizza NorthwindCS.ad, digitare o incollare la seguente routine:
      Private Sub Form_Load()
      
         Dim cn As ADODB.Connection
         Dim rs As ADODB.Recordset
         Dim strSQL As String, strItem As String
      
         strSQL = "SELECT CustomerID, CompanyName FROM Customers"
         Set cn = Application.CurrentProject.Connection
         Set rs = New ADODB.Recordset
         rs.Open strSQL, cn, adOpenForwardOnly, adLockOptimistic
        
         Do Until rs.EOF
            strItem = rs.Fields("CustomerID").Value & ";" _
               & rs.Fields("CompanyName").Value
            Me.List1.AddItem strItem      ' Row Source Type must be Value List
            rs.MoveNext
         Loop
         rs.Close
         Set rs = Nothing
      
         Set cn = Nothing
      
      End Sub
      						
  6. Aggiungere le seguenti routine per Northwind.mdb o NorthwindCS.adp:
    Private Sub cmdMoveAllToList1_Click()
        MoveAllItems "List2", "List1"
    End Sub
    
    Private Sub cmdMoveAllToList2_Click()
        MoveAllItems "List1", "List2"
    End Sub
    
    Private Sub cmdMoveToList1_Click()
        MoveSingleItem "List2", "List1"
    End Sub
    
    Private Sub cmdMoveToList2_Click()
         MoveSingleItem "List1", "List2"
    End Sub
    
    Sub MoveSingleItem(strSourceControl As String, strTargetControl As String)
        
        Dim strItem As String
        Dim intColumnCount As Integer
        For intColumnCount = 0 To Me.Controls(strSourceControl).ColumnCount - 1
            strItem = strItem & Me.Controls(strSourceControl).Column(intColumnCount) & ";"
        Next
        strItem = Left(strItem, Len(strItem) - 1)
    
        'Check the length to make sure something is selected
        If Len(strItem) > 0 Then
            Me.Controls(strTargetControl).AddItem strItem
            Me.Controls(strSourceControl).RemoveItem Me.Controls(strSourceControl).ListIndex
        Else
            MsgBox "Please select an item to move."
        End If
    
    End Sub
    
    
    Sub MoveAllItems(strSourceControl As String, strTargetControl As String)
        Dim strItem As String
        Dim intColumnCount As Integer
        Dim lngRowCount As Long
        
        For lngRowCount = 0 To Me.Controls(strSourceControl).ListCount - 1
            For intColumnCount = 0 To Me.Controls(strSourceControl).ColumnCount - 1
                strItem = strItem & Me.Controls(strSourceControl).Column(intColumnCount, lngRowCount) & ";"
                
            Next
            strItem = Left(strItem, Len(strItem) - 1)
            Me.Controls(strTargetControl).AddItem strItem
            strItem = ""
        Next
            
        Me.Controls(strSourceControl).RowSource = ""
    End Sub
  7. Scegliere Riferimenti dal menu Strumenti, quindi verificare che sia selezionato Microsoft DAO 3.6 Object Library o Microsoft ActiveX Data Objects 2.x Library (dove 2.x si riferisce alla versione 2.1 o successiva), a seconda che venga utilizzato Northwind.mdb o NorthwindCS.adp, quindi chiudere Visual Basic Editor.
  8. Nella visualizzazione Struttura della maschera impostare la proprietà SuClic di ciascuno dei pulsanti di comando su [Procedura evento].
  9. Salvare la maschera e aprirla in visualizzazione Maschera.
  10. Selezionare una o tutte le voci di uno degli elenchi, quindi utilizzare i pulsanti di comando per spostare la voce o le voci da un elenco all'altro.

Le informazioni in questo articolo si applicano a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Chiavi: 
kbprogramming kbhowto KB278378
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.

Traduzione articoli

 

Related Support Centers