Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB6]Problema ListBox - errore 381

    Ciao.
    Da una textbox inserisco delle righe in una listbox e contemporaneamente le inserisco in un db.
    Dalla listbox posso anche eliminare le righe, quindi anche nel db.
    codice:
    For i = 0 To lstCategorie.ListCount - 1
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)        RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
        End If
    Next i
    Il problema è che se ho più record nella listbox e voglio cancellare
    un record che non sia l'ultimo della lista, mi restituisce l'errore runtime 381 "indice della matrice di proprietà non valido".
    La ListBox ha lo Style=1.
    Idee?

  2. #2
    ...dimenticavo...l'errore me lo da sulla riga di codice
    codice:
    If lstCategorie.Selected(i) = True Then

  3. #3
    Una volta eliminata la riga dalla listbox devi uscire dal ciclo FOR:
    codice:
    For i = 0 To lstCategorie.ListCount - 1
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)        RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
            Exit For
        End If
    Next i

  4. #4
    Già, però il problema si presenta se io do la possibilità di selezionare più di una riga.
    Nel codice che mi hai postato posso eliminare solo una riga alla volta.

  5. #5
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    potrebbe essere un errore dovuto al fatto che quando elimini una riga dalla list NON si aggiornano gli estremi del ciclo for e quindi, essendo diminuito il numero di righe nella lista, gli ultimi indici non esistono. Potresti provare "invertendo" il ciclo

    codice:
    For i = lstCategorie.ListCount - 1 downTo 0
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
            RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
            Exit For
        End If
    Next i
    S'i fosse foco, arderei 'l mondo

  6. #6
    Non mi funziona. Mi da errore sul downTo.

  7. #7
    scusa, errore mio:

    codice:
    For i = lstCategorie.ListCount - 1
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
            RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
            Exit For
        End If
    Next i

  8. #8
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    Originariamente inviato da Stefanik
    Non mi funziona. Mi da errore sul downTo.
    hai ragione, non esiste il downto.
    Ho sbagliato linguaggio.
    S'i fosse foco, arderei 'l mondo

  9. #9
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    trasforma il for in un while
    codice:
    i = lstCategorie.ListCount - 1
    while i>=0
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
            RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
            Exit For
        End If
        i=i-1
    Wend
    e se ti dà ancora errore dimmi il valore della i
    S'i fosse foco, arderei 'l mondo

  10. #10
    Originariamente inviato da Pieruccio
    scusa, errore mio:

    codice:
    For i = lstCategorie.ListCount - 1
        If lstCategorie.Selected(i) = True Then
            qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
            RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
            lstCategorie.RemoveItem (lstCategorie.ListIndex)
            RsRimozione.Delete
            RsRimozione.Update
            RsRimozione.Close
            Exit For
        End If
    Next i
    Mi da un errore, si aspetta il "to" dopo
    codice:
    For i = lstCategorie.ListCount - 1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.