2012-04-23 14 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) 

ため、サーバーは時々1を割り当てます。しかし、あなたはそれが何であるかを知っていなければなりません。それは理にかなったものを選ぶだけの方がはるかに優れています。

また、数値で項目を索引付けすることもできます。これは、NULLをチェックしていたときの結果です。 この同じ構文は、値にアクセスするときに使用されている可能性があります。

DisplayMoneyTaken = dr.Item(0) + Val(txtPrice.Text) 
関連する問題