在我的MS Access项目中,我有一个表格,用来收集几个参数。当用户单击Search
按钮时,它将运行一些代码,使用DoCmd.OpenReport
和WhereCondition
打开报告。
我已经在其他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
别名。报告上没有Complete
或n.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
(。