首页 > 解决方案 > MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表

问题描述

我正在尝试从表单打印批次 ID 数据表而不打开报告。使用下面的代码,我可以打开只显示我想要的数据的报告

Private Sub PrntbLblV1_Click()   
Dim str As String
str = "[BatchID] = " & Me.BatchID
DoCmd.OpenReport "RprtLblPrint", acViewPreview, , str
DoEvents
End Sub

这会在打印预览中打开我想要的记录...但是我只想将记录发送到打印机..我试过了

 DoCmd.OpenReport "RprtLblPrint", acNormal, , str
    DoCmd.RunCommand acCmdPrint
   DoEvents

但它会打印每批交易,而不仅仅是当前的...我认为问题是我在报告属性中有一个进一步的过滤器,它在加载时过滤以删除已完成的交易 [Complete] = False,这是一个真/假复选框。 . 我似乎无法将已完成和批处理条件嵌套到 DoCmd.OpenReport 的 where 部分中它不断抛出类型不匹配错误

str = "[BatchID] = " & Me.BatchID And [Complete] = False

我试过把它分开

Dim str As String
Dim Cmplt As String
str = "[BatchID] = " & Me.BatchID
Cmplt = [Complete] = False
    DoCmd.OpenReport "RprtLblPrint", acNormal, , str And Cmplt
    DoCmd.RunCommand acCmdPrint

关于如何将 2 个过滤条件放入 DoCmd.OpenReport where 条件的任何建议?

标签: vbams-access

解决方案


它必须是过滤器字符串的一部分,如下所示:

str = "[BatchID] = " & Me.BatchID & " And [Complete] = False"

推荐阅读