Newsgroup: it.comp.appl.access
Titolo: Eliminazione multipla in ListBox

Ciao!
In un gestionale per l'AVIS (donatori sangue), ho una listbox che
elenca i donatori che soddisfano determinati criteri di ricerca.
Vorrei poter applicare il seguente codice, non solo ad un donatore per
volta (nella listbox) ma a più donatori selezionati con la modalità
"estesa".
Cosa dovrei modificare?
Come si vede, il seguente codice permette di cancellare un record
associato alla tabella donatori. Io vorrei cancellarne molti per
volta.
**************************************************************
.
..
...
.....
  If Me.Risultati.ItemsSelected.Count = 0 Then
     MsgBox "Seleziona un donatore!", vbInformation
     Exit Sub
  Else
     For intSelezionato = 0 To Me.Risultati.ListCount - 1
       If Me.Risultati.Selected(intSelezionato) Then
 
       strSQL = "DELETE tblDonatori.* FROM tblDonatori " & _
                 "WHERE tblDonatori.IdDonatore = " & _
                  Me.Risultati.Column(0, intSelezionato) & ";"
 
       End If
 
     Next intSelezionato
 
   If MsgBox("Sei sicuro di voler cancellare questo donatore?",
vbExclamation + vbYesNo) = vbYes Then
      DoCmd.RunSQL strSQL
....
...
..
.
***********************************************************
grazie mille!
luca

 ***********************************************************
Forse ti aiuta questo esempio:
http://groups.google.com/groups?&selm=c12oi6$1ddi1c$1...@ID-46617.news.uni-berlin.de
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 + CISA1, Arezzo, 4+5/6/2005
la prima Conferenza Italiana per Sviluppatori di Access 

 ha scritto nel messaggio
news:d95188c8.05031...@posting.google.com...

Prova così:
    Dim strLista As String
    Dim strCriteri As String
    Dim varItem As Variant
    Dim strSQL As String
    'Se non ci sono voci selezionate
    'non ci sono attività da effettuare
    If Me!Risultati.ItemsSelected.Count = 0 Then
       MsgBox "Seleziona un donatore!", vbInformation
       Exit Sub
    End If
    'Cicla nell'insieme delle voci selezionate
    For Each varItem In Me!Risultati.ItemsSelected
        'Cattura la colonna IdDonatore di ciascuna
        'voce selezionata
        strLista = strLista & _
            Me!Risultati.Column(0, varItem) & ","
    Next varItem
    'Elimina la virgola eccedente
    strLista = Left$(strLista, Len(strLista) - 1)
    'Crea stringa SQL
     strSQL = "DELETE tblDonatori.* FROM tblDonatori " & _
                     "WHERE tblDonatori.IdDonatore IN ( " & _
                     strLista  & ");"
    'Elimina record
    DoCmd.RunSQL strSQL
    'Deseleziona tutte le righe della casella di riepilogo
    Dim Cont As Integer
    For Cont = 0 To Me!Risultati.ListCount - 1
        Me!Risultati.Selected(Cont) = False
    Next Cont
Dovrebbe funzionare.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel messaggio
news:d95188c8.05031...@posting.google.com...

Il codice che hai postato esegue un ciclo sulle righe della listbox; non
devi fare altro che portare l'esecuzione della query di eliminazione
all'interno del ciclo; potresti poi, per migliorare l'efficienza, portare al
di fuori l'assegnazione della variabile strSQL:
******************************************
Dim strSQL as String
strSQL = "DELETE tblDonatori.* FROM tblDonatori " & _
                 "WHERE tblDonatori.IdDonatore = " & _
                  Me.Risultati.Column(0, intSelezionato) & ";"
If Me.Risultati.ItemsSelected.Count = 0 Then
     MsgBox "Seleziona un donatore!", vbInformation
     Exit Sub
  Else
Docmd.Setwarnings False
     For intSelezionato = 0 To Me.Risultati.ListCount - 1
       If Me.Risultati.Selected(intSelezionato) Then
       If MsgBox("Sei sicuro di voler cancellare questo donatore?",
        vbExclamation + vbYesNo) = vbYes Then
          DoCmd.RunSQL strSQL
        End If
    End If
Next intSelezionato
Docmd.Setwarnings True
End If
***********************************
Siccome ho scritto al volo senza poter provare, controlla che non abbia
fatto errori nei vari if...then nidificati.
--
Ciao
Galliano.

...

Grazie,
sei stato davvero gentile!  :))
l.

...

Grazie mille!!!  :))
luca

...

Infatti non funziona...
non capisco...
sia selezionando un donatore, sia selezionandone più di uno, il
risultato è la semplice deselezione del tutto.
Ho ricontrollato il codice più volte e mi sembra tutto ok... strano!

...

OK!
Adesso funziona!!!
Avevo semplicemente dimenticato di aggiungere un me.risultati.requery
in coda per vedere gli effetti...  :))
grazie tante!
luca