2012-04-23 45 views
2

我无法在文本框中添加值。每次售票时,我都会将总价格放在一个文本框中,每次为同一个音乐会销售一张票时,它会通过将其自身添加到总价中而增加。它在第一次销售时有效,但在此之后它就崩溃了。这里是代码,并提前感谢。无法在结果集索引中找到指定的列索引超出范围索引超出范围

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 

回答

1

看起来您的查询没有名为“Total_Money”的列。您没有为您的查询返回的单个列命名。

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)