Occorre acquisire anche la PK del record e memorizzarla nella riga del listview, esempio nella proprietà TAG, oppre nella KEY.
Cosa che tu non fai, e questo può compromettere il risultato nel caso vi siano omonimi. E comunque si deve usare sempre e solo la PK. Ogni altro metodo è sbagliato perché troppo rischoso.
Così facendo, quando è ora di eliminare non fai altro che scorrere gli items con un ciclo (For i, oppure For Each) e di quelli selezionati leggi la PK e la accodi in una variabile locale (String), costruendo così una stringa da passare all'operatore IN.
Supponiamo che la PK sia il campo IDUtente di tipo numerico, e che l'utente abbia selezionato 3 utenti la cui PK è 25,26,37, il ciclo dovrà comporre una stringa di questo tipo:
codice:sIN = "25,26,37"
che passerai all'opratore IN nella DELETE:
codice:strSQL = "DELETE FROM utenti WHERE IDUtente IN (" & sIN & ")"
Una volta eliminati dal database, li elimini dal listview.
Il tutto, ovviamente, deve essere racchiuso all'interno di una transazione, altrimenti possono essere guai e trovarti ad esempio che i record non sono stati eliminati dal database, ma solo dal listview.
![]()