netkuk
asked on
Delete multiple selected records in DBgrid
Hi, my question is about DBGrid Data bound. I have a Database in Access 97 and when I try
to delete more than one register using del key, visual basic says to me that is impossible to
delete multiple records. However, in the Help there is a little code that must do that. This is:
Sub DeleteRows()
Do While DBGrid1.SelBookmarks.Count <> 0
Data1.Recordset.Bookmark = DBGrid1.SelBookmarks(0)
Data1.Recordset.Delete
Data1.Refresh
Loop
End Sub
This code is not correctly (I mean). Only removes on record.
Please give me a solution.
Thanks a lot.
to delete more than one register using del key, visual basic says to me that is impossible to
delete multiple records. However, in the Help there is a little code that must do that. This is:
Sub DeleteRows()
Do While DBGrid1.SelBookmarks.Count
Data1.Recordset.Bookmark = DBGrid1.SelBookmarks(0)
Data1.Recordset.Delete
Data1.Refresh
Loop
End Sub
This code is not correctly (I mean). Only removes on record.
Please give me a solution.
Thanks a lot.
ASKER
This solution requires an object at line 2.
ASKER
my answer is wrong. Sorry MikeP. The error that your program gives me is that the subindex is out of range.
Try changing the first line to:
For i = 0 to db1.selbookmars.count -1
For i = 0 to db1.selbookmars.count -1
ASKER
I'm sorry ZSI but your answer it doesn't run good. When I try to delete the records in DBgrid from this recordset of MSAcces, the selbookmarks return right the number of records that I have selected but when I delete the first, the next one is empty (bookmark=subindex out of range). It's possible to delete ?
Is my database wrong ?
Is my database wrong ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
netkuk,
Try deleting the records in reverse order. This should alleviate the problem.
-------------------------- -------
For i = DBGrid1.SelBookmarks.Count - 1 to 0 Step -1
Data1.RecordSet.Bookmark = DBGrid1.SelBookmarks(i)
Data1.RecordSet.Delete
Next i
Try deleting the records in reverse order. This should alleviate the problem.
--------------------------
For i = DBGrid1.SelBookmarks.Count
Data1.RecordSet.Bookmark = DBGrid1.SelBookmarks(i)
Data1.RecordSet.Delete
Next i
zsi,
unfortunately it don't work because as soon as you assigned to Data1.Recordset.bookmark the DBGrid1.SelBookmarks collection is cleared, probably because it is data bound to Data1.
unfortunately it don't work because as soon as you assigned to Data1.Recordset.bookmark the DBGrid1.SelBookmarks collection is cleared, probably because it is data bound to Data1.
Still, the point I wanted to make is that the loop should be executed in reverse order. This will prevent the 'index out of range' error that netkuk experienced.
ASKER
Congratulations ! You have reason. Thank you.
Second Zsi's solution is right, too. Congratulations, too.
Thank you a lot.
Second Zsi's solution is right, too. Congratulations, too.
Thank you a lot.
data1.recordset.bookmark = db1.selbookmarks(i)
data1.recordset.delete
data1.refresh
next i