Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql vb.net-Index超出范围。必须为非负数且小于集合的大小。参数名称:索引_Mysql_Vb.net_Datagridview - Fatal编程技术网

Mysql vb.net-Index超出范围。必须为非负数且小于集合的大小。参数名称:索引

Mysql vb.net-Index超出范围。必须为非负数且小于集合的大小。参数名称:索引,mysql,vb.net,datagridview,Mysql,Vb.net,Datagridview,当在datagridview中单击时,我试图在数据库中扣除1本书的数量,但我有这种类型的错误。我该怎么办?请提供任何建议。您的更新sql语句不正确。Values关键字仅在插入新行时正确。假设您希望将带有BookListId的where子句设置为所选行: Dim Query2 As String For i As Integer = Me.DataGridView1.SelectedRows.Count - 1 To 0 Step -1

当在datagridview中单击时,我试图在数据库中扣除1本书的数量,但我有这种类型的错误。我该怎么办?请提供任何建议。

您的更新sql语句不正确。Values关键字仅在插入新行时正确。假设您希望将带有BookListId的where子句设置为所选行:

    Dim Query2 As String
             For i As Integer = Me.DataGridView1.SelectedRows.Count - 1 To 0 Step -1
                Dim Query2 As String
   ****error***Query2 = "Update booklist SET quantity=(quantity-1) where quantity = '" & Me.DataGridView1.SelectedRows(i).Cells(0).Value.ToString() & "'"***error***
                COMMAND = New MySqlCommand(Query, MysqlConn)
                SDA.SelectCommand = COMMAND
                SDA.Fill(dbDataSet)
                bSource.DataSource = dbDataSet
                DataGridView1.DataSource = bSource
                SDA.Update(dbDataSet)
Query2=“updatebooklistset quantity=(quantity-1)Where=”&Me.DataGridView1.SelectedRows(i).Cells(0.Value.ToString()&“
编辑: 索引错误并不是来自错误的SQL,但它将在以后引起您的关注。索引异常来自根据错误消息访问上下文中不存在的.Cells(0)。但是如果没有关于DataGridView1的更多信息或代码,就很难提供帮助

Query2 = "Update booklist SET quantity=(quantity-1) Where  <BookListIdOrSomething>  = '" & Me.DataGridView1.SelectedRows(i).Cells(0).Value.ToString() & "'"

终于找到了!错误在第5行。很抱歉打扰您,谢谢您的建议。

我理解您的立场。你是一个自由的人,不想遵循压迫性(VB.NET)系统的僵化规则。你想让你的指数像风一样自由,并得到他们想要的任何值!我和你在一起,姐姐/哥哥!不幸的是VB.NET太强大了,我们不能应用我们的免费索引思想而不产生一些后果。。。我担心你将不得不修改你的代码以适应VB.NET提拉尼,对此我很抱歉:)我理解先生,但我只是一个新手程序员。先生,这一点(你没有VB.NET的经验)从一开始我就非常清楚;尽管这一事实在这里并不相关,因为错误是非常描述性的,解决方案是显而易见的。因此,这不是一个学习基础知识的地方(如果你知道的不够多,你应该在这里学习,而不是在这里提问),而是一个在其他地方很难找到的问题的地方。一条错误信息清楚地表明问题是什么(以及如何解决问题)不属于SO。那么,如果您清楚,先生,为什么要浪费您的时间来评论我的问题??因为对我来说,不清楚错误是什么。我只是想告诉你,先生,你帮不了我。你只是在戏弄我们这些新手程序员。也很抱歉:)这有点可笑,先生,因为就在昨天,我启动了一个元线程,其目标正是改善与新手的沟通(主要是SO,但也包括编程)。我的建议没有得到任何支持(恰恰相反),因为显然,先生,这里有相当多的人认为新手被吓到是件好事。先生,你们大多数人对某些事情了解不够,不知道什么最适合你们。在这里问每一个细节当然不是。在这种情况下,先生,您已经将这种行为带到了其纯粹的极限…我.DataGridView1.SelectedRows(i).Cells在调试期间返回了什么?先生,我返回了零。我不知道如何获得数量列的值。有什么建议吗,先生?您也可以使用列名访问Cells集合。因此,例如,如果网格中的列被称为Quantity,则可以像
DataGridView1.SelectedRows(i).Cells(“Quantity”).Value那样访问它。您的网格中有多少列?谢谢您的努力,先生,我有6列,先生。按列名称获取值的结果是什么?
      Dim Query2 As String
         For i As Integer = Me.DataGridView1.SelectedRows.Count - 1 To 0 Step -1
            Dim Query2 As String
            Query2 = "Update booklist SET quantity=(quantity-1) where quantity = '" & Me.DataGridView1.SelectedRows(i).Cells(0).Value.ToString() & "'"
            COMMAND = New MySqlCommand(Query2, MysqlConn)
            SDA.SelectCommand = COMMAND
            SDA.Fill(dbDataSet)
            bSource.DataSource = dbDataSet
            DataGridView1.DataSource = bSource
            SDA.Update(dbDataSet)