VBA无法从查询中找到日期字段

问题描述 投票:1回答:1

我从3个相关表中创建了一个查询OrderAllQuery。其中一个字段是日期字段,在原始表中具有相同的名称,并且查询名为OrdDate

我有一个简单的子运行查询,然后运行特定日期范围的报告。 OrdDate必须在范围内。该子(见下文)显示了Odate =线上的2465。

看不出问题。任何的建议都受欢迎

Private Sub cmdOrders_Click()
    DoCmd.OpenQuery "OrderAllQuery"
    Dim Odate As Date
    Odate = [OrderAllQuery.OrdDate]
    DoCmd.Close acQuery, "OrderAllQuery"

    Call RunReport("Orders Report", Odate, Me.txtDateFrom, Me.txtDateTo)
End Sub
ms-access access-vba
1个回答
1
投票

请注意,OpenQuery对象的DoCmd方法仅在数据表视图中打开给定名称的查询(假设查询不是动作查询,并且未指定视图参数);然后,您无法通过代码直接从数据表视图中获取数据。

要从查询中获取值,您可以将查询作为DAO或ADO记录集打开,例如:(使用DAO):

Private Sub cmdOrders_Click()
    With CurrentDb.OpenRecordset("OrderAllQuery")
        If Not .EOF Then
            .MoveFirst
            Call RunReport("Orders Report", !OrdDate, Me.txtDateFrom, Me.txtDateTo)
        End If
        .Close
    End With
End Sub

或者如果您对返回的记录无动于衷,请使用域聚合函数,例如DLookupDFirst

Private Sub cmdOrders_Click()
    Dim odate As Date
    odate = DFirst("OrdDate", "OrderAllQuery")

    If Not IsNull(odate) Then
        Call RunReport("Orders Report", odate, Me.txtDateFrom, Me.txtDateTo)
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.