【问题标题】:Combo box returning error - when casting from a number less than infinity组合框返回错误 - 从小于无穷大的数字投射时
【发布时间】:2015-01-12 13:52:35
【问题描述】:

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

我正在尝试通过 vb.net 组合框 Fuel_Cb1 从访问数据库中汇总使用的燃料。 在此声明中,我收到“从小于无穷大的数字进行转换时”的错误。

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

Dim Query As String = ("select sum (Fill_Liters) FROM Fuel where Bus_ID= '" & 总线 & "'")

使用时也会返回“当从小于无穷大的数进行转换时”错误

Dim reader As OleDbDataReader = cmd.ExecuteReader()

而 reader.Read()

如果我使用 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

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

【问题讨论】:

    标签: vb.net combobox


    【解决方案1】:

    抱歉,这花了一点时间,但会而且应该为你工作......你的第一个问题是因为你在 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")
    

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

    【讨论】:

    • 非常感谢您的努力,我仍然有一个问题,但是使用您的工作代码,我会解决它。我需要回顾整个项目,看看我是否没有在其他地方声明过让其他一切都感到不安的事情。这是自从 VB6 仍然流行以来我所做的第一次编码,所以它是一个陡峭的曲线,但有了这个帮助,我会到达那里。谢谢达扎
    • @Mr CoDeXeR 代码不错,但 .ToString("C") 不是必需的,因为 intSum 是整数。您也可以删除 CommandText 末尾的三个引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多