【发布时间】:2020-08-17 22:50:07
【问题描述】:
在我的 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 for 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);
【问题讨论】:
-
对
SQL语句使用Where条件而不是过滤报告。 SQL 查询中没有包含n.Complete的字段。那么n.Complete如何过滤报告呢?
标签: ms-access