0

您好,这是我的目标,我有一个带有开始日期(start_Date)和结束日期(end_Date)字段的 for 以及一个包含交叉表查询作为记录源的报告。我希望能够根据表格上给出的日期对报告中的数据进行排序。我尝试了 3 种不同的方法。

  1. 运行宏并使用 where 条件打开报告,在这种情况下,Access 会抱怨并说“[Reports]![AuditPTTETotal]![Date] 不是有效的参考”

  2. 通过 VBA 设置我的报告的“where 条件”。另一个参考错误,但这一次,它说我的表单字段无效。

      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 
    
  3. 最后,将我的表单值传递给查询。这些方法都不适合我,我真的需要完成这项工作。我别无选择。任何帮助,将不胜感激。

询问

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;
4

1 回答 1

1

如果要通过使用表单来限制交叉表的结果,则必须具有参数:

PARAMETERS [Forms]![AForm]![text0] DateTime, [Forms]![AForm]![text2] DateTime;
TRANSFORM Count(Table1.AKey) AS CountOfAKey
SELECT Table1.AText
FROM Table1
WHERE (((Table1.ADate) Between [Forms]![AForm]![text0] And [Forms]![AForm]![text2]))
GROUP BY Table1.AText
PIVOT Table1.ADate;
于 2012-06-06T12:34:15.930 回答