doCmd.OpenReport where 条件语法

doCmd.OpenReport where-condition syntax

我有一个非常小的 Access 数据库,我想要一个按钮,它可以打开一个报告 ("Mitarbeiterhonorare"),该报告由组合字段 "Kf-Referentenname" 中的选定值过滤。不幸的是,我的 where-condition 似乎不起作用(必须有一些格式错误,因为它只是打开一个空报告)。谁能帮我解决那里的语法问题?

非常感谢!

Private Sub cmdOpenReport_Click()
    If IsNull(Me.Kf_Referentenname) Then
        Me.Kf_Referentenname.SetFocus
        MsgBox "Bitte einen Mitarbeiter auswählen!", vbExclamation
    Else
        DoCmd.OpenReport ReportName:="Mitarbeiterhonorare",      View:=acViewPreview, _
            WhereCondition:=Referent_Name = "& Me.Kf_Referentenname"
    End If
End Sub

报告所基于的查询如下所示:

SELECT Sum(Honorare.Betrag) AS Gesamtbetrag_Honorare, Mitarbeiter.Referent_Name FROM Mitarbeiter INNER JOIN Honorare ON Mitarbeiter.Mitarbeiter_ID = Honorare.Mitarbeiter_ID GROUP BY Honorare.Mitarbeiter_ID, Mitarbeiter.Referent_Name;

这甚至不应该编译 *,双引号是错误的。

WhereCondition 必须是字符串:

   DoCmd.OpenReport ReportName:="Mitarbeiterhonorare", View:=acViewPreview, _
        WhereCondition:="Referent_Name = " & Me.Kf_Referentenname

然后 Referent_Name 可能是一个文本字段,因此您需要在参数周围附加引号:

    DoCmd.OpenReport ReportName:="Mitarbeiterhonorare", View:=acViewPreview, _
        WhereCondition:="Referent_Name = '" & Me.Kf_Referentenname & "'"

(*) 你的模块顶部有 Option Explicit 吗?

它强制变量声明并在编译时报告未声明或拼写错误 variables/constants。 要在新模块中自动启用此功能,请在 VBA 编辑器中设置 Require Variable Declaration 选项。
这确实是 VBA 开发的必备条件。