2012-06-06 36 views
0

嗨,这是我的目标,我有一个开始日期(start_Date)和结束日期(end_Date)字段和一个交叉表查询作为记录源的报告。我希望能够根据表单上给出的日期对报告中的数据进行排序。我尝试了3种不同的方法。MS Access参考问题与表单字段

  1. 运行宏,并用打开报告,其中条件在这种情况下访问会抱怨,说“[报告]![AuditPTETotal]![日期]不是一个有效的参考”

  2. 设置我的报告通过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 
    
  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; 
+0

你说你要排序的日期,但你的代码表明你想过滤日期,你希望做什么?对于交叉表,如果您希望使用表单进行过滤,则必须包含一个参数。 – Fionnuala

+0

这['报告]![AuditPTETotal]![日期]'表明您有一个名为“日期”的字段或控件。日期是保留字,不应用于命名对象。 – Fionnuala

+0

本质上,我希望我的报告仅显示start_Date和end_Date提供的日期范围之间的记录。 – d9120

回答

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; 
+0

谢谢。我会给这个镜头。 – d9120

+0

错误消息已更改...“Microsoft Access数据库引擎不能识别”作为有效的字段名称或表达式“ – d9120

+0

我的查询高于 – d9120