我花了几天时间,搜索了很多,我找不到答案,是的,我敢打赌这很简单。
Fuel_Cb1,我正在尝试通过 vb.net 组合框汇总访问数据库使用的燃料。在此语句中,我收到一个错误"从小于无穷大的数字进行铸造时"。
如果我将以下语句中的单词 bus 更改为已知数字(例如 43),它将返回该车辆编号的正确总和金额。此外,如果我删除"WHERE"语句,它将正确返回Fill_Liters列的总和。
将查询暗淡为字符串 = ("选择 sum (Fill_Liters) FROM 燃料 其中Bus_ID= '" & bus & "'")
它还将在使用时返回"从小于无穷大的数字进行铸造时"错误
如果我使用 sum 语句,将读取器调暗为 OleDbDataReader = cmd.ExecuteReader()
而读者。读取()
如果不使用 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")
*注意:这是经过试验和测试