访问 OpenReport 不适用于 Where 条件

Access OpenReport not working with Where condtion

这一定是一个非常简单的错误。我只是看不到它。 我的位置字符串:

strWhere = "tbl_final.[Geschäftspartner] = " & Chr(34) & BP & Chr(34)

应该放在这里:

DoCmd.OpenReport "Contribution", acViewPreview, , strWhere

结果是报告打开...但包含所有记录。我一直在研究不同版本的 SQL 字符串,甚至将参数引入底层查询(我知道这不是解决方案)。

我没看到什么?

更新: 底层查询是直接嵌入到报告 RecordSource 属性

中的 SQL 语句

更新 2: 如果我创建一个全新的报告,其中只包含字段 Geschäftspartner 和一个度量字段,那么代码就可以工作。因此错误一定是由报告中的某些内容引起的。

更新 3:链接到报告的完整查询

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;

使用Debug.Print查看您的strWhere,您将会看到。

或者尝试这个修改 - 对于一个数字:

strWhere = "[Geschäftspartner] = " & BP & ""

在完成 SQL 语句并确保它在虚拟 table、虚拟查询和虚拟报告上正常工作后,我最终回到了我的 VBA代码。

在那里我发现了问题:

我编写了代码,在使用 Where 条件打开报表之前以编程方式更改报表上的标签。我有以下代码行:

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

在最后一行,我没有关闭 REPORT,而是关闭了 FORM。一个不存在的。不幸的是,Access 从未提醒我这个事实!因此,报表保持打开状态,当我尝试传递 Where 条件时,它没有将它应用于报表(大概是因为对象仍然打开)。

解决方案是将最后一行简单地更改为:

DoCmd.Close acReport, REPORT_NAME, acSaveYes