MS Access-带有WhereCondition提示参数/无效括号的OpenReport

问题描述

在我的MS Access项目中,我有一个用来收集几个参数的表格。当用户单击def get_json_chunks(df,splits): """converts each chunk to a dict which is basically going to be a JSON load""" #documents = {"documents": []} # <-- wrong place df_chunks = get_chunk_df(df,splits) for chunk_df in df_chunks: documents = {"documents": []} # <-- good place for idx,row in chunk_df.iterrows(): documents["documents"].append({ "id": str(idx + 1),"text": row["lang"] }) yield documents 按钮时,它将运行一些代码,这些代码将使用SearchDoCmd.OpenReport打开报告。

我已经用其他10种形式做到了,所有方式都完全相同。当打开此特定报告时,出现错误

这是我的WhereCondition方法

Search_Button_Click

问题

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

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

我尝试使用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 甚至是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的别名。报告中没有nestComplete。仅在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",WhereCondition:=str
End Sub

解决方法

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

因此,如果您要按n.Complete进行过滤,则该字段必须是查询的SELECT列表的一部分。即使报表上并未实际使用它。

pn.Nest_Number同样适用。

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