我从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
请注意,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
或者如果您对返回的记录无动于衷,请使用域聚合函数,例如DLookup
或DFirst
:
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