在Visual Studio中选择查询Access数据库



下面是我的代码:

  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的值如何,您的总数将被计算为零。

最新更新