我想使用数据网格视图将数据插入到我的SQL服务器数据库。我向网格添加了一些数据,需要使用for循环提交它们。
Dim i, rowCount As Integer
rowCount = dgOrder.Rows.Count
For i = 0 To (rowCount - 1)
objcon.DoExecute("INSERT INTO OrderMF (ItemType,ItemNm,UnitPrice,Quantity,Discount,TotalValue,FreeItem)VALUES('" _
& dgOrder.Item(i, 1).Value & "','" _
& dgOrder.Item(i, 0).Value & "','" _
& txtOrdNo.Text & "','" _
& dgOrder.Item(i, 3).Value & "','" _
& dgOrder.Item(i, 2).Value & "','" _
& dgOrder.Item(i, 5).Value & "','" _
& dgOrder.Item(i, 4).Value & "','" _
& dgOrder.Item(i, 6).Value & "')")
If objcon.m_Success = "0" Then
MsgBox("Record Added Successfully", MsgBoxStyle.Information, "ROBBIALAK")
Call ClearFields1()
cmdOrder.Enabled = False
End If
Next
这是我点击按钮的代码。但是它不适合我。它正在获得一个例外,说“索引超出范围。必须是非负数且小于集合的大小,参数名称:在这段代码中,dgorder是我的datagridview名称,我使用方法调用DoExecute来执行SQL String.please帮助我解决这个问题。
答案 0 :(得分:0)
反对直觉,.Item(columnIndex, rowIndex)
不是.Item(rowIndex, columnIndex)
。幸运的是还有.Item(columnName, rowIndex)
我建议你使用它,因为这会增加可读性。所以我认为你应该改变
dgOrder.Item(i, 1).Value
到
dgOrder.Item("ItemType", i).Value
(如果列名是" ItemType")等等。
此外,您似乎尝试插入的值多于指定的列
FreeItem - 7列:
dgOrder.Item(i,1).Value& "''" _
&安培; dgOrder.Item(i,0).Value& "''" _
&安培; txtOrdNo.Text& "''" _
&安培; dgOrder.Item(i,3).Value& "''" _
&安培; dgOrder.Item(i,2).Value& "''" _
&安培; dgOrder.Item(i,5).Value& "''" _
&安培; dgOrder.Item(i,4).Value& "''" _
&安培; dgOrder.Item(i,6).Value& "' - 8个值