请高手看看:索引超出数组界限问题

qsltz qsltz 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用DATAGRID绑定数据集中的一个表A,用BINDINGmanagerbase管理绑定
只要MOUSE在DATAFRID的垂直滚动条上按一下或移动,然后新增记录时,会出现如下错误,是什么原因?

"向原始数据区提交数据时出错........"
然后点击DATAGRID出现如下:

未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.windows.forms.dll 中。
索引超出数组界限.
代码如下:
Public Class Form1
Inherits System.Windows.Forms.Form
Dim bmmaster As BindingManagerBase
Dim strdataitem As String
Dim cnwhxz As New OleDbConnection
Dim dsusers As New DataSet
Public dausers As New OleDbDataAdapter


#Region " Windows 窗体设计器生成的代码 "

#End Region
Public Sub uploadadddata()
updatadata()


End Sub
Public Sub uploadmodifydata()
updatadata()


End Sub
Public Sub uploaddeleteData()
updatadata()


End Sub
Public Sub filldata()

dausers.Fill(Dsusers)



End Sub

Private Sub updatadata()
dausers.Update(Dsusers, "users")


End Sub



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

cnwhxz.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Application.StartupPath & "\data\whxz.mdb;User Id=admin;Password=;"

Dim myselecttext As String = "SELECT * FROM users"

Dim selectcmd As OleDbCommand = New OleDbCommand(myselecttext, cnwhxz)

selectcmd.CommandTimeout = 30
dausers.SelectCommand = selectcmd
dausers.DeleteCommand = New OleDbCommand("DELETE FROM users WHERE userid=?", cnwhxz)

dausers.InsertCommand = New OleDbCommand("INSERT INTO users(userid, username) " & _
"VALUES (?, ?)", cnwhxz)


dausers.UpdateCommand = New OleDbCommand("UPDATE users SET userID = ?, username = ? " & _
"WHERE userID = ?", cnwhxz)

dausers.InsertCommand.Parameters.Add("@userid", OleDbType.Char, 8, "userid")
dausers.InsertCommand.Parameters.Add("@username", OleDbType.VarChar, 40, "username")

dausers.UpdateCommand.Parameters.Add("@userID", OleDbType.Char, 8, "userID")
dausers.UpdateCommand.Parameters.Add("@username", OleDbType.VarChar, 40, "username")
dausers.UpdateCommand.Parameters.Add("@olduserid", OleDbType.Char, 8, "userid").SourceVersion = DataRowVersion.Original

dausers.DeleteCommand.Parameters.Add("@userid", OleDbType.Char, 8, "userID").SourceVersion = DataRowVersion.Original
dsusers.EnforceConstraints = False
dausers.Fill(dsusers, "users")
dsusers.EnforceConstraints = True

' dsusers.Tables("users").PrimaryKey = New DataColumn() {dsusers.Tables("users").Columns("userid")}


' Dim pkusers As Constraint = dsusers.Tables("users").Constraints.Add( _
' "PK_userid", dsusers.Tables("users").Columns("userid"), True)

txid.DataBindings.Clear()
txname.DataBindings.Clear()


txid.DataBindings.Add(New Binding("text", dsusers, "users.userid"))
txname.DataBindings.Add(New Binding("text", dsusers, "users.username"))

DataGrid1.SetDataBinding(dsusers, "")
DataGrid1.DataMember = "users"
DataGrid1.DataSource = dsusers


bmmaster = Me.BindingContext(dsusers, "users")


End Sub
Private Sub bnfirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnfirst.Click
bmmaster.Position = 0

End Sub

Private Sub bnprior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnprior.Click
If bmmaster.Position <> 0 Then
bmmaster.Position -= 1

End If
End Sub

Private Sub bnnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnnext.Click
If bmmaster.Position <> bmmaster.Count Then
bmmaster.Position += 1
Else
bmmaster.Position = bmmaster.Count

End If
End Sub

Private Sub bnlast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnlast.Click
bmmaster.Position = bmmaster.Count

End Sub

Private Sub bnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnadd.Click
Try
bmmaster.EndCurrentEdit()
bmmaster.AddNew()

Catch err As ApplicationException
MessageBox.Show(err.ToString, "新增记录发生错误", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)

End Try

txid.Focus()

End Sub

Private Sub bncancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bncancel.Click

bmmaster.CancelCurrentEdit()




End Sub

Private Sub bndelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bndelete.Click
If bmmaster.Count > 0 Then
If MessageBox.Show("确定删除本记录吗?", "删除确认", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _
DialogResult.Yes Then

bmmaster.RemoveAt(bmmaster.Position)
End If

End If
End Sub


Private Sub bnupdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnupdate.Click

dsusers.EnforceConstraints = False
bmmaster.EndCurrentEdit()
If dsusers.HasChanges(DataRowState.Deleted) Then
Try
uploaddeleteData()
dsusers.AcceptChanges()

Catch err As SystemException
dsusers.RejectChanges()
MessageBox.Show(Err.ToString)

End Try
End If

If dsusers.HasChanges(DataRowState.Added) Then
Try
uploadadddata()
dsusers.AcceptChanges()

Catch err As System.Data.OleDb.OleDbException
dsusers.RejectChanges()
MessageBox.Show(err.ToString)
Catch err As System.SystemException
dsusers.RejectChanges()
MessageBox.Show(err.ToString)


End Try
End If

If dsusers.HasChanges(DataRowState.Modified) Then
Try
uploadmodifydata()
dsusers.AcceptChanges()

Catch err As System.SystemException
dsusers.RejectChanges()
MessageBox.Show(err.ToString)

End Try
End If
dsusers.EnforceConstraints = True
MessageBox.Show("数据更新完成!", "消息", MessageBoxButtons.OK, _
MessageBoxIcon.Information)

End Sub


Private Sub bnload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnload.Click
dsusers.EnforceConstraints = False
filldata()
dsusers.EnforceConstraints = True
MessageBox.Show("数据填入完成!", "消息", MessageBoxButtons.OK, _
MessageBoxIcon.Information)

End Sub

...全文

相关推荐

川崎机器人报警代码.pdf

PO117 无效变量(或程序)名:变量或程序的命名规则不正确。19. PO118 非法的变量型类:变量类型不被系统支持或定义错误。20. PO119 数组下标错误:数组索引超出了数组界限。21.

是空空呀

关于“检查更新,联网失败!索引超出了数组界限”的问题解决办法

检查网络连接和代理配置。尝试手动更新程序。检查并修复更新机制中的代码边界处理问题。更改 DNS 设置,确保网络正常。确认更新服务器是否可用或被屏蔽。希望如上措施及解决方案能够帮到有需要的你。PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

bug菌¹

关于C#索引超出了数组界限的问题??

在C#编程中,"索引超出了数组界限"是一个常见的错误,通常发生在尝试访问数组元素时,使用的索引值超过了数组定义的合法范围。

zhuo885566dong

ThoughtWorks.QRCode 1.0.4374.31614版本,可解决“索引超出了数组界限”问题

二维码生成dll,ThoughtWorks.QRCode 1.0.4374.31614版本,可解决“索引超出了数组界限”问题

lotus_twee

Java中的索引超出界限错误。

博客通过代码示例展示了在Java中如何使用try-catch结构处理索引超出界限异常。介绍了ORB对象的初始化、POA管理器的激活、ProfilerServant实例的创建及绑定到命名服务的过程,并详

weixin_38650066
评论 4
收藏 已收藏
分享
返回顶部
qsltz
VB 16,718 成员 110,520 内容