MS Access-OpenReport,WhereCondition提示参数/括号无效



在我的MS Access项目中,我有一个表格,用来收集几个参数。当用户单击Search按钮时,它将运行一些代码,使用DoCmd.OpenReportWhereCondition打开报告。

我已经在其他10种表格上做过了,都是完全相同的方式。当谈到打开这个特定的报告时,我会出错。

这是我的Search_Button_Click方法:

Private Sub Search_Button_Click()
Dim str As String
str = "[n.Complete] = True"    
str = str & " AND [pn.Processing_Date] BETWEEN #" & From_Date.value & "# AND #" & To_Date.value & "#"
str = str & " AND pn.Nest_Number LIKE '" & Nest_Number.value & "*'"

DoCmd.OpenReport "r_Processed_Jobs_New", acViewReport, WhereCondition:=str
End Sub

问题

使用此代码,得到的错误消息是:

运行时错误"3126":名称"[n.Complete]"的方括号无效。

我尝试使用n.[Complete]甚至n.Complete,但这两个选项都提示我说:Enter Parameter Value代表n.Complete

我的项目

报告Record Source被设置为查询Q_Processed_Jobs。以下是查询:

SELECT nj.Job_Number, nj.Nest_Number, nj.Customer_Name, nj.Job_Date, pn.Processing_Date AS [Processing Date]
FROM (Nest AS n INNER JOIN Nest_Job AS nj ON n.Nest_Number = nj.Nest_Number) INNER JOIN Processing_Nest AS pn ON n.Nest_Number = pn.Nest_Number;

所以我有n,它将表Nest别名。报告上没有Completen.Complete。它只在WhereCondition中,应该用于过滤查询结果。表别名和列都存在,为什么它会提示我好像不识别它们一样?

工作示例

同样,我已经对其他查询和报告做了无数次这样的操作,它们都没有出现任何错误。为什么会发生在这里?

下面是我的另一个表单的示例:

Private Sub Search_Button_Click()
Dim str As String
str = "[t.Date_Received] BETWEEN #" & From_Date.value & "# AND #" & To_Date.value & "#"
str = " AND [pli.PO_Number] = " & PO_Number.value

DoCmd.OpenReport "r_Receiving_By_Date", acViewReport, WhereCondition:=str
End Sub

以及相应的查询:

SELECT pli.PO_Number, pli.Inventory_Code, r.ID, r.Date_Received, rli.Quantity, rli.Weight, rli.CWT, rli.Total, pli.Total, iif(pli.Complete = True, 0, pli.Total - rli.Total) AS Balance, rli.MTR_Number, rli.Heat_Number
FROM ([PO Line Items] AS pli INNER JOIN (SELECT t.PO_Number, t.ID, t.Date_Received FROM Receiving AS t)  AS r ON pli.PO_Number = r.PO_Number) INNER JOIN [Receiving Line Items] AS rli ON (rli.Inventory_Code = pli.Inventory_Code) AND (r.ID = rli.Receiving_Id);

DoCmd.OpenReport ... , WhereCondition:=str获取报告的记录源(Q_Processed_Jobs(,并将WhereCondition应用于该查询的结果集

因此,如果要按n.Complete进行筛选,那么这必须是查询的SELECT列表的一部分。即使报告中没有实际使用它。

这同样适用于pn.Nest_Number

n.[Complete]是正确的形式(或n.Complete(。

最新更新