组合框返回错误 - 从小于无穷大的数字进行转换时

时间:2014-11-15 04:08:16

标签: vb.net combobox

我花了几天时间在这上面,很多搜索,我找不到答案,是的,我敢打赌这很简单。

我试图通过vb.net组合框,Fuel_Cb1来累计从访问数据库中使用的燃料。 在这个声明中,我收到一个错误"当从一个小于无穷大的数字进行投射时#34;

如果我将以下语句中的单词总线更改为已知号码(例如43),它将返回该车辆号码的正确总金额。 此外,如果我删除' WHERE'声明它将正确返回Fill_Liters列的总和。

  

Dim Query As String =(" select sum(Fill_Liters)FROM Fuel where   Bus_ID ='" &安培;公共汽车"'&#34)

当从低于无穷大的数字进行投射时,它也会返回""使用

时出错
  

Dim reader As OleDbDataReader = cmd.ExecuteReader()

     

读者阅读()

如果我使用sum语句,如果sum语句不能使用,你可以从组合框中选择,它将显示Fill_Liters列中的最后一个条目

 Private Sub clickFuelCb1(ByVal sender As Object, ByVal e As EventArgs) 'Handles Cb1.SelectedIndexChanged

    Dim combobox = DirectCast(sender, ComboBox)
    Dim bus
    bus = Fuel_Cb1.Text
    With Fuel_GB1
        .Location = New Point(10, 50)
        .Text = "Fuel statistics for vehicle number " + bus
        .Size = New Size(300, 300)
    End With
    Dim Query As String = ("select sum (Fill_Liters)  FROM Fuel where Bus_ID= '" & bus & "'")
    Using con2 As New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0; data source=H:\Documents and Settings\Administrator\Desktop\Fuel\Fuel\DB1.accdb;")

        Dim cmd As New OleDb.OleDbCommand(Query, con2)
        con2.Open()
        'Dim reader As OleDbDataReader = cmd.ExecuteReader()
        'While reader.Read()
        Fuel_Lb2.Text = cmd.ExecuteScalar() 'reader.GetString(0)


        'End While
        con2.Close()

    End Using

End Sub

我希望我在这里有足够的信息,期待你的回答。

1 个答案:

答案 0 :(得分:0)

对不起,这花了一点时间,但是并且应该对你有用......你的第一个问题是因为你在where子句中的蜱虫。这些是字符串等,而不是数字数据类型。您的查询字符串现在应该被修复,但您使用错误的命令...

    Dim intSum As Integer = 0

    Using con2
        Using cmd
            con.Open()
            cmd.Connection = con
            cmd.CommandText = "select sum (Fill_Liters) FROM Fuel where Bus_ID= " & bus & """
            intSum = cmd.ExecuteScalar 'Lets get something back...
            con.Close()
        End Using
    End Using

    Fuel_Lb2.Text  = intSum.ToString("C")

*注意:这是经过试验和测试