下面是我的代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
ltRooms.Text = CInt(Session("numOfRooms"))
'Calculate total cost
Dim intPrice As Integer
Dim intTotal As Integer
intPrice = AccessDataSource1.SelectCommand = "SELECT [Price] FROM [Rooms] WHERE ([RoomType] = 'RoomType')"
intTotal = intPrice * intRooms
ltPrice.Text = intTotal.ToString
End Sub
和我的数据源
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="Hostel.accdb"
SelectCommand="SELECT * FROM [Bookings]"></asp:AccessDataSource>
我试图从选择查询中存储值,然后使用它来计算总价,然后将其存储在文字中。到目前为止,我只得到0。没有编译错误。
有谁知道为什么这不起作用吗?
我正在将各种评论合并为一个答案,以明确起见,并阻止页面抱怨扩展的讨论。这些都是我的想法,所以代码中可能会有一些错误。但这应该足以找出问题所在。
首先,现在我再次看它今天,我认为你的代码只是设置数据源的SelectCommand属性,而不是实际查询数据库。我认为你需要使用数据源。选择方法。
你的代码可能看起来像这样:
AccessDataSource1.SelectCommand = "SELECT [Price] FROM [Rooms] WHERE ([RoomType] = '" & RoomType & "')"
Dim intPrices As List(Of Integer) = AccessDataSource1.Select(DataSourceSelectArguments.Empty)
' Now do stuff with your price data.
如果上面没有帮助,那么我将检查Select调用返回的intPrice
的值。您还应该检查RoomType设置是否正确。
如果错误的数据从数据库返回,那么你应该能够修复你的SQL查询来检索正确的数据。如果你需要进一步的帮助,请张贴SQL查询和表结构。
如果正确的数据返回,则检查intRooms
定义的位置。如果它是零,那么无论intPrice
的值如何,您的总数将被计算为零。