嗨,这是我的目标,我有一个开始日期(start_Date)和结束日期(end_Date)字段和一个交叉表查询作为记录源的报告。我希望能够根据表单上给出的日期对报告中的数据进行排序。我尝试了3种不同的方法。MS Access参考问题与表单字段
运行宏,并用打开报告,其中条件在这种情况下访问会抱怨,说“[报告]![AuditPTETotal]![日期]不是一个有效的参考”
设置我的报告通过VBA的“哪里条件”。另一个参考错误,但这次,它说我的表单域是无效的。
Private Sub ViewReport_Click() Dim strWhere As String If Not IsNull(Me.start_Date) Then strWhere = strWhere & " AND [Reports]![AuditPTETotal]![Date] >=#" & [Forms]! [AuditPTETotals]![start_Date] & "# " End If If Not IsNull(Me.end_Date) Then strWhere = strWhere & " AND [Reports]![AuditPTETotal]![Date] <=#" & [Forms]! [AuditPTETotals]![end_Date] & "# " End If DoCmd.OpenReport "AuditPTETotal", acViewNormal, , strWhere End Sub
最后,将我的表单值传递到查询中。这些方法都没有为我工作,我真的需要做到这一点。我没有选择权。任何帮助,将不胜感激。
查询
PARAMETERS [Forms]![AuditPTETotals]![start_Date] DateTime, [Forms]![AuditPTETotals]! [end_Date] DateTime;
TRANSFORM Sum(ScrapCollection.PTEtotal) AS SumOfPTEtotal
SELECT ScrapCollection.Date, ScrapCollection.regNum
FROM ScrapCollection INNER JOIN (ScrapTireType INNER JOIN ScrapCollectionTireType ON (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID) AND (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID)) ON ScrapCollection.scrapCollectionID = ScrapCollectionTireType.scrapCollectionID
WHERE (((ScrapCollection.Date) Between [Forms]![AuditPTETotals]![start_Date] And [Forms]![AuditPTETotals]![end_Date]))
GROUP BY ScrapCollection.Date, ScrapCollection.regNum
PIVOT ScrapTireType.description;
你说你要排序的日期,但你的代码表明你想过滤日期,你希望做什么?对于交叉表,如果您希望使用表单进行过滤,则必须包含一个参数。 – Fionnuala
这['报告]![AuditPTETotal]![日期]'表明您有一个名为“日期”的字段或控件。日期是保留字,不应用于命名对象。 – Fionnuala
本质上,我希望我的报告仅显示start_Date和end_Date提供的日期范围之间的记录。 – d9120