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



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

Fuel_Cb1,我正在尝试通过 vb.net 组合框汇总访问数据库使用的燃料。在此语句中,我收到一个错误"从小于无穷大的数字进行铸造时"。

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

将查询暗淡为字符串 = ("选择 sum (Fill_Liters) FROM 燃料 其中Bus_ID= '" & bus & "'")

它还将在使用时返回"从小于无穷大的数字进行铸造时"错误

将读取器调暗为 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 SettingsAdministratorDesktopFuelFuelDB1.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

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

抱歉,

这花了很长时间,但会并且应该为您工作...您的第一个问题是因为您在 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")

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

最新更新