我遇到了Microsoft Access 2007上的查询问题。我从Access的查询编辑器运行时已经开发了正确运行的查询。我的问题是,我在事件 On Open '处理程序。我的目的是将此查询分配给该报告的属性RecordSource,允许使用我想要的任何查询动态创建报告。
当我实际打开并运行报告时会出现问题。当事件Open的处理程序完成其执行时,我得到错误:您试图执行不包含指定表达式的查询" ID"作为聚合函数的一部分。
这是查询(在打开事件处理程序的VBA代码中)。
Private Sub Report_Open(Cancel As Integer)
Dim Query As String
Dim WhereClause As String
WhereClause = [Forms]![Main Form]!
[WindowPrintOptions]![CustomizedReport]![txtResponsibility]
Query = "SELECT AllInfo.*
FROM (SELECT i.ID,
i.[Number],
i.Responsability.Value AS Responsability
FROM tbl_Projects AS p RIGHT JOIN
((tb_Items AS i LEFT JOIN tb_F_projects AS fp
ON i.ProjectID = fp.Id) LEFT JOIN
tb_items_comments AS ic ON ic.ItemID = i.ID)
ON i.ProjectID = p.Id WHERE ( (i.Status = 'Status 1')
AND (i.DateOpened >= #9/9/2014#) AND
(i.DateOpened <= #9/11/2014#) AND
(i.DueDate >= #9/12/2014#) AND (i.DueDate <= #9/12/2014#)
AND (i.Category = 'C1') AND (i.Deliverables LIKE '*'
& 'dates' & '*') AND (i.Responsability.Value = 'Some name')
) ) AS AllInfo"
Me.RecordSource = Query
End Sub
请注意,我没有使用“WhereClause&#39;然而。它将在之后插入查询中。我只是为了单独测试查询而删除它,并检查它是否正常,没有任何更改,发现它实际上并不是。所以,请记住:当我从MS Access查询构建器运行它时,这个查询可以正常工作,但动态地不在这里。可能是什么问题?