无法在结果集索引中找到超出范围索引超出范围异常的指定列

时间:2012-04-23 14:27:13

标签: sql vb.net

我在文本框中输入值时遇到问题。每次售票时我都会将总价格放在一个文本框中,每次为同一个音乐会出售一张票,它会通过将其自身加到总价中来增加。它在第一次销售时起作用,但之后就会崩溃。这是代码,并提前感谢。

 Private Function DisplayMoneyTaken() As Integer
    Dim totalMoney As Integer
    'open the database connection
    strSQL = "SELECT MAX(Total_Money) FROM Sales WHERE Concert_Id =" + Mid(cboVenue.Text, 1, 4)

    conn.Open()
    cmd.Connection = conn
    cmd.CommandText = strSQL
    cmd.CommandType = CommandType.Text

    dr = cmd.ExecuteReader()

    'read the record returned
    dr.Read()
    If IsDBNull(dr.Item(0)) Then
        totalMoney = txtPrice.Text
    Else
        DisplayMoneyTaken = dr.Item("Total_Money") + Val(txtPrice.Text)
    End If



    'close the database
    conn.Close()
    Return totalMoney

End Function

2 个答案:

答案 0 :(得分:1)

您的查询似乎没有名为“Total_Money”的列。您没有命名查询返回的单个列。

答案 1 :(得分:0)

迈克尔,

使用聚合函数时,还需要为该列指定别名。 例如

strSQL = "SELECT MAX(Total_Money) as CaChing FROM Sales WHERE Concert_Id =" + Mid(cboVenue.Text, 1, 4)

如果您没有分配别名,服务器有时会分配一个别名。但你必须知道或猜测它会是什么。选择一个有意义的东西要好得多。

您还可以使用数字索引项目,这是您在检查NULL时所执行的操作。 访问该值时可能会使用相同的语法。

 DisplayMoneyTaken = dr.Item(0) + Val(txtPrice.Text)