我花了几天时间在这上面,很多搜索,我找不到答案,是的,我敢打赌这很简单。
我试图通过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
我希望我在这里有足够的信息,期待你的回答。
答案 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")
*注意:这是经过试验和测试