Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

ListBox in MULTISELEZIONE ESTESA per filtrare una Form

  1. #1
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno, premetto che avevo utilizzato la seguente soluzione su un altro programma.
    Private Function FillItems(lst As Access.ListBox) As String
        Dim varItem As Variant
        Dim strItems As String
        
        For Each varItem In lst.ItemsSelected
            strItems = strItems & lst.Column(0, varItem) & ","
        Next
        If Len(strItems) > 0 Then strItems = Mid$(strItems, 1, Len(strItems) - 1)
        FillItems = strItems
    End Function
    
    Private Sub cmdRecSurce_Click()
    
        If Me.MiaLista.ListIndex < 0 Then Exit Sub
    
        Dim strItems As String
        strItems = FillItems(Me. MiaLista.)
        If Len(strItems) > 0 Then
            strItems = "SELECT * FROM Products WHERE CodiceD IN (" & strItems & ")"
            Me.RecordSource = strItems
        End If
    End Sub
    
    Ho cercato di riutilizzarla per filtrare un'altra form ma non ho ottenuto lo stesso risultato. Non mi da alcun errore ma mi richiede di reinserire il codice degli elementi selezionati. Quasi sicuramente l'errore sta nel codiceId che un campo di tipo testo indicato con una lettera. ho provato ad effettuare alcune modifiche con apici e virgolette senza alcun risultato. Le mie lacune con il VBA sono enormi. Chiedevo gentilmente come poter agire per far capire che il filtro deve essere fatto su un campo Id di testo e non numerico.
    Grazie mille per l'aiuto.
    Ultima modifica di @Alex; 27-08-2020 09:51 

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,803
    Like Inviati  
    0
    Like Ricevuti  
    23
    Prim acosa usa i TAG per il codice, per questa volta correggo io.

    Mi pare sia codice conosciuto...
    Il codice della Funzione FillItems che restituisce la Stringa deve funzionare, il problema come lo chiami e come usi il risultato...!
    Da quanto vedo nella Sub [cmdRecSurce_Click] c' qualche cosa che non mi quadra... non capisco dove sia la List e dove sia il codice in questione ma di certo qualche cosa non torna.

    Anche questa sintassi anomala, uno spazio ed il PUNTO FINALE...[code]
    strItems = FillItems(Me. MiaLista.)[/(code]
    Ti suggerisco di mettere un breakPoint e stampa in finestra immediata della Stringa per verificarne l'efficienza.
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    La sintassi forse un problema di copia incolla, di per se funziona nel senso che se selzione tre elementi con codice esempio (A,C e F) mi compaiono in successione tre richieste di inserimento parametro, reinserendo le lettere A,C e F filtra la maschera.

  4. #4
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    Il codice privo di spazi e punti questo:
    Private Sub cmdcmdRecSurce_Click()

    If Me.MiaLista.ListIndex < 0 Then Exit Sub

    Dim strItems As String
    strItems = FillItems(Me.MiaLista)
    If Len(strItems) > 0 Then
    strItems = "SELECT * FROM Products WHERE CodiceID IN (" & strItems & ")"
    Me.RecordSource = strItems
    End If
    End Sub

    Sto facendo delle prove sul tuo esempio modificando il ProductID come testo e mi da lo stesso problema.

  5. #5
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Questo
    Quote Originariamente inviato da @alex
    Ti suggerisco di mettere un breakPoint e stampa in finestra immediata della Stringa per verificarne l'efficienza.
    significa
        If Len(strItems) > 0 Then
            strItems = "SELECT * FROM Products WHERE CodiceD IN (" & strItems & ")"
            Debug.Print strItems '<=== riga da aggiungere
            Me.RecordSource = strItems '<==== riga sulla quale mettere un punto di interruzione
        End If
    
    poi dicci che cosa appare nella finestra immediata

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,803
    Like Inviati  
    0
    Like Ricevuti  
    23
    Se il Campo di tipo TESTO, la Funzione [FillItems] va modificata.
    ℹ️ Leggi di pi su @Alex ...

  7. #7
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ho modificato il filtro del record surce(il 2 esempio) come indicato ma richiede sempre l'inserimento del valore parametro, cio il ProductID "E" compare la finestra E come se fosse il nome del campo in cui devo reinserire "E" una volta reinserito filtra i dati.

  8. #8
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    Immagino di si ma non s proprio da dove iniziare uso alcuni comandi in VBA ma di programmazione nulla.

  9. #9
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,803
    Like Inviati  
    0
    Like Ricevuti  
    23
    Il testo richiede gli Apici, quindi mentre in caso di NUMERI(le chiavi primarie Counter sono LONG) la stringa verrebbe cos
    IN (1, 5, 9)
    
    Nel caso di Campo Testo il criterio sarebbe
    IN ('A', '5', 'Pippo')
    
    Quindi la Funzione di cui sopra va adeguata inserendo gli Apicetti.
    ℹ️ Leggi di pi su @Alex ...

  10. #10
    arietis non  in linea Novello
    Post
    16
    Like Inviati  
    0
    Like Ricevuti  
    0
    Modificato cos
    IN (" & "'" & strItems & "'" & ")
    Funziona se seleziono un elemento con due o pi non da nessun dato

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Articolo: ListBox Selezione Multipla Estesa per Filtrare Form
    Da @Alex nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 27-02-2013, 13:57
  2. Listbox e multiselezione
    Da Diablo nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 01-10-2009, 07:31
  3. Filtrare dati in due sub form
    Da seamission nel forum Microsoft Word
    Risposte: 8
    Ultimo Post: 10-04-2009, 17:59
  4. Risposte: 2
    Ultimo Post: 21-07-2008, 13:18
  5. La listbox per filtrare i dati non funziona
    Da GoldSeven nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 16-11-2006, 22:51