我已经从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
答案 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
或者如果对返回的记录不敏感,请使用域聚合函数,例如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