这一定是一个非常简单的错误。我无法看到它。 我的字符串:
strWhere = "tbl_final.[Geschäftspartner] = " & Chr(34) & BP & Chr(34)
应该去哪里:
DoCmd.OpenReport "Contribution", acViewPreview, , strWhere
结果是报告打开...但包含所有记录。我已经玩了不同版本的SQL字符串很长一段时间,甚至将参数引入底层查询(我知道这不是解决方案)。
我没看到什么?
更新: 底层查询是直接嵌入到报表RecordSource属性
中的SQL语句 UPDATE2:
如果我创建一个仅包含字段Geschäftspartner
和一个度量字段的全新报表,则代码可以正常工作。因此,错误必须由报告中的某些内容引起。
UPDATE3:链接到报告的完整查询
SELECT tbl_final.Geschäftspartner, tbl_final.Referenzwährung, tbl_final.Periodenbeginn, tbl_final.Periodenende, tbl_final.Anlagekategorie, tbl_final.[Produkt / ISIN], tbl_final.ISIN, tbl_final.[Telekurs Valorennummer], tbl_final.[Asset Domicile], tbl_final.[Valor name], tbl_final.[FIRE: Kontonummer], tbl_final.[Special Fund Category], tbl_final.[FRS: Type of Collateral], tbl_final.[Nominal Currency], tbl_final.[Asset Type], tbl_final.[Anteile per Periodenende], tbl_final.[Marktwert per Periodenende], tbl_final.[Durchschn# Marktwert in Referenzwährung], tbl_final.[Durchschnittlicher Anteil in %], tbl_final.[AVA_TER in %], tbl_final.[AVA_TER Datum], tbl_final.[VDF_TER in %], tbl_final.[VDF_TER Datum], tbl_final.[TER in %], tbl_final.[TER Datum], tbl_final.[Gewichtete TER in %], tbl_final.[TER in Referenzwährung], tbl_final.Client, tbl_final.CRM, tbl_final.[Received TER-Report for 2014], tbl_final.Language
FROM tbl_final;
答案 0 :(得分:2)
在完成SQL语句并确保它在虚拟表,虚拟查询和虚拟报告上正常工作之后,我最终回到了我的VBA代码。
在那里我发现了问题:
我编写了代码,在使用Where Condition打开报表之前,以编程方式更改报表上的标签。我有以下几行代码:
DoCmd.OpenReport REPORT_NAME, acDesign
Set rptObject = Reports(REPORT_NAME)
'Various other objects being changed here but edited out for readability
'...
rptObject.OLEUnbound86.Visible = True
DoCmd.Close acForm, REPORT_NAME, acSaveYes
在最后一行,我关闭了一个FORM,而不是关闭一个REPORT。一个不存在的。不幸的是,Access从未提醒我这个事实!因此,报告保持开放,当我试图通过Where条件时,它没有将其应用于报告(大概是因为对象仍然是开放的)。
解决方案是简单地将最后一行更改为:
DoCmd.Close acReport, REPORT_NAME, acSaveYes
答案 1 :(得分:1)
使用Debug.Print
查看您的strWhere
,您会看到。
或尝试此修改 - 输入数字:
strWhere = "[Geschäftspartner] = " & BP & ""