首页 > 解决方案 > 索引超出范围,必须为非负数且小于集合大小

问题描述

我有一个有 5 列的 datagridview1,我从 datagridview2 添加到该 gridview 项目,这没有错,现在当我尝试使用 2 面额 for 循环从 Datagridview1 获取这些值时,将其插入我的 sql db,它显示这个错误。

指数超出范围。必须是非负数且小于集合的大小。参数名称索引。

我希望我解释得很好。

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try

            con.ConnectionString = "Data Source = OMAR\MSSQLSERVER01;Initial Catalog=AccountsC20;Persist Security Info=True;User ID=ofamo;"
            con.Open()
            cmd.Connection = con



            Dim Selected = ListBox1.SelectedValue.ToString()
            If Selected = "0" Then
                MessageBox.Show("Make sure to select a valued product")
            Else
                MessageBox.Show((TextBox4.Text) + 1)

                For i As Integer = 0 To DataGridView1.RowCount - 1

                    For j As Integer = 0 To DataGridView1.ColumnCount - 1

                        cmd.CommandText = "Insert into SInvoice  Values('SIV-" & (TextBox4.Text) + 1 & "',0," & j + 1 & ",(select nodeno from productmast where arabic_name= '" & Selected & "')," & DataGridView1.Item(i, 2).Value & ",0.000000,'2019-04-04 13:40:00'," & DataGridView1.Item(i, 4).Value & "," & DataGridView1.Item(i, 3).Value & ",'',0,1,1,1,1,'04/04/2019 13:39:44','',1.000000,1,0,'','b',0.000000,5,0.000000," & DataGridView1.Item(i, 3).Value & ",'Nos',1.000000,'','','','','','','','','','','','','','','','','','','','','',0,3,'" & Label4.Text & "',1,1,1,1,1,1,0.000000)"
                        cmd.ExecuteNonQuery()

                    Next


                Next

标签: vb.net

解决方案


你用什么方式填充你的datagridview 1或2?如果您使用的是数据表之类的东西,或者您可以使用非常轻松快速地传输到 sql 数据库sqlbulkcopy,但我不知道您是否想要这样,或者您是否使用数据表等。

For Each row As DataGridViewRow In DataGridView1.Rows
    For j = 0 To DataGridView1.Columns.Count - 1....

尝试使用 for each 循环,看看它是否有所作为


推荐阅读