我试图让以下代码从数据库中删除列表视图的所选项目,但它仅删除第一项:
Private Sub delBtn_Click()
confirm = MsgBox("Do you want to delete the Employee Record", vbYesNo +
vbCritical, "Deletion Confirmation")
If confirm = vbYes Then
Set rs = New ADODB.Recordset
rs.ActiveConnection = con
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.Source = "SELECT * FROM tblB where ProjectName= '" & Trim(Listview1.SelectedItem) & "'"
rs.Open
If Not rs.EOF Then
With rs
.Delete adAffectCurrent
.MoveNext
End With
Listview1.ListItems.Clear
MsgBox "Record successfully deleted..", vbInformation, "Success" ..
End If
loaddata
End If
End Sub
rs.EOF
为True:If Not rs.EOF Then
With rs
.MoveFirst
Do While Not .EOF
.Delete adAffectCurrent
.MoveNext
Loop
End With
End If
Dim itm As ListItem
Dim sSQLStatement As String
For Each itm In ListView1.ListItems
If itm.Selected Then
' Delete item from database
sSQLStatement = "DELETE FROM tableName WHERE CheckItem=" & itm.Text
' Execute sSQLStatement on your ADO connection
con.Execute sSQLStatement
End If
Next
' Refresh ListView from Database
想法是,您的列表视图将具有要删除的所需项目(您可以在列表视图上启用MultiSelect以选择多个项目),并且可以遍历所有项目来查找这些项目。对于每个选定的项目,使用该项目中的数据执行DELETE命令。当您填充ListView时,可以在添加项目时指定键值:
ListView1.ListItems.Add [index], [key], [text]
删除记录时可以使用此键:
sSQLStatement = "DELETE FROM tableName WHERE CheckItem=" & itm.Key