doCmd.OpenReport where-condition语法

时间:2018-01-31 13:06:20

标签: ms-access parameters access-vba report ms-access-2010

我有一个非常小的Access数据库,我想要一个按钮,打开一个报告(" Mitarbeiterhonorare"),在组合字段中选择一个值" KF-Referentenname&#34 ;.不幸的是,我的条件似乎不起作用(必须有一些格式错误,因为它只是打开一个空的报告)。任何人都可以帮我解决语法吗?

非常感谢!

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;

1 个答案:

答案 0 :(得分:2)

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

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

它强制执行变量声明并在编译时报告未声明或拼写错误的变量/常量。 要在新模块中自动执行此操作,请在VBA编辑器中设置Require Variable Declaration选项 这对于VBA开发来说确实是必须的。