【问题标题】:doCmd.OpenReport where-condition syntaxdoCmd.OpenReport where-condition 语法
【发布时间】:2018-07-10 14:36:16
【问题描述】:

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

非常感谢!

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;

【问题讨论】:

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


    【解决方案1】:

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

    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 开发的必备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      相关资源
      最近更新 更多