环境:VB.net;Access;WinForm
在DataGrid中任意选中一行按Delete键删除后,点BtnSave按钮保存出错:不能通过已删除的行访问该行的信息,在如下代码中注明了出错位置,因为需要对表中第2列进行加密后再保存到数据库,所以用了For each语句,但是在增加,修改记录的时候没有错误出现,请帮忙看看问题如何解决,谢谢!!
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DG_Fill()
End Sub
Private Sub DG_Fill()
Dim CMD As New OleDb.OleDbCommand("select BNO ,NM1,NM2,GH from MYTB", MyConnection)
MyAdapter.SelectCommand = CMD
If MyConnection.State = ConnectionState.Closed Then
MyConnection.Open()
End If
NDataSet.Clear()
MyAdapter.Fill(NDataSet, "MYTB")
MYDG.DataSource = NDataSet
MYDG.DataMember = "MYTB"
MYDG.Refresh()
MyConnection.Close()
End Sub Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
Dim nr As DataRow
For Each nr In NDataSet.Tables("MYTB").Rows
nr(1) = EncryptString(nr(1)) 'debug到此处出现错误:不能通过已删除的行访问该行的信息
Next
Dim cb As New OleDb.OleDbCommandBuilder(MyAdapter)
MyAdapter.Update(NDataSet, "MYTB")
DG_Fill()
End Sub
在DataGrid中任意选中一行按Delete键删除后,点BtnSave按钮保存出错:不能通过已删除的行访问该行的信息,在如下代码中注明了出错位置,因为需要对表中第2列进行加密后再保存到数据库,所以用了For each语句,但是在增加,修改记录的时候没有错误出现,请帮忙看看问题如何解决,谢谢!!
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DG_Fill()
End Sub
Private Sub DG_Fill()
Dim CMD As New OleDb.OleDbCommand("select BNO ,NM1,NM2,GH from MYTB", MyConnection)
MyAdapter.SelectCommand = CMD
If MyConnection.State = ConnectionState.Closed Then
MyConnection.Open()
End If
NDataSet.Clear()
MyAdapter.Fill(NDataSet, "MYTB")
MYDG.DataSource = NDataSet
MYDG.DataMember = "MYTB"
MYDG.Refresh()
MyConnection.Close()
End Sub Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
Dim nr As DataRow
For Each nr In NDataSet.Tables("MYTB").Rows
nr(1) = EncryptString(nr(1)) 'debug到此处出现错误:不能通过已删除的行访问该行的信息
Next
Dim cb As New OleDb.OleDbCommandBuilder(MyAdapter)
MyAdapter.Update(NDataSet, "MYTB")
DG_Fill()
End Sub
帮不了你,表示歉意!
天狼工作室
http://www.j2soft.cn/