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

时间:2019-03-25 17:43:05

标签: ms-access access-vba

我已经从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

1 个答案:

答案 0 :(得分:1)

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

要从查询中获取值,您可以将查询作为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