[vb6sp6 + DAO] Deleting multiple items from listbox

Pagina: 1
Acties:

  • DPLuS
  • Registratie: April 2000
  • Niet online
Waarom gaat het volgende bij mij mis:

Ik heb een listbox, de items uit deze listbox komen uit een access-mdb bestand.
Als ik nu meerdere items verwijder uit de listbox, verwijdert het programma ze NIET ALTIJD UIT DE DATABASE.
Het irritante is dat het ook nog per keer verschilt, de ene keer selecteer ik 30 records en verwijdert 'ie er 20, de andere keer verwijdert 'ie er maar 10.
Waar kan dat aan liggen?

Als ik via debugger (F8) meerdere items verwijder, doet 'ie het trouwens wel goed?
Kan MS Access misschien niet zoveel queries aan??

Dit is de code:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub Command1_Click() 'delete record

    If List1.SelCount = 0 Then
    
        MsgBox "U heeft niets geselecteerd!", vbCritical, "Fout!"
        
    Else
    
        If MsgBox(List1.SelCount & " record(s) verwijderen?", vbYesNo + vbInformation, "Verwijderen?") = vbYes Then
        
            Screen.MousePointer = vbHourglass
            Dim db As Database
            Set db = OpenDatabase(App.Path & "\database.mdb")
            
            Dim i As Integer
            For i = List1.ListCount - 1 To 0 Step -1
                If List1.Selected(i) Then
                    db.Execute _
                    "DELETE FROM Telefoonlijst WHERE Telefoonlijst.Id=" & List1.ItemData(List1.ListIndex)
                    List1.RemoveItem i
                    DoEvents 'Heb ik er later bijgezet om zeker te zijn dat programma kans krijgt de delete-query te voltooien

                End If
            Next i
            
            db.Close
            Set db = Nothing
            Screen.MousePointer = vbDefault
        
        End If
        
    End If
    
End Sub

[ Voor 7% gewijzigd door DPLuS op 14-05-2004 18:03 ]


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Verwijdert hij ook wel de goede items?
Want volgens mij moet dit:
code:
1
"DELETE FROM Telefoonlijst WHERE Telefoonlijst.Id=" & List1.ItemData(List1.ListIndex)

dit worden:
code:
1
"DELETE FROM Telefoonlijst WHERE Telefoonlijst.Id=" & List1.ItemData(i)

Want .ListIndex geeft het door de gebruiker geselecteerde listitem aan, en niet die waar jij mee aan het loopen bent.

  • DPLuS
  • Registratie: April 2000
  • Niet online
That did the trick!

Thanks...