【发布时间】:2014-02-24 21:11:46
【问题描述】:
我有一份带有子报告的报告。报告未绑定(它用作信函的模板,仅包含纯文本)。子报表中的值基于位于表单中的两个组合框的值。
所以逻辑如下 - 加载表单 (frmForReport) 时,用户在组合框中选择用于过滤数据库的值(cboSelectCompany 和 cboSelectPU),然后单击“确定”按钮打开我的报告及其子报告。子报表从查询中填充,其中两个字段将这些组合框作为条件。一切正常(我在组合框中选择我需要的内容,报表在报表视图中打开,子报表显示所有过滤的记录,没有任何警告或请求),直到我想切换到 打印预览 或 创建 PDF。每次这样做时,我都会看到弹出窗口输入参数值,其中引用了子报告中使用的标准之一。当我关闭此窗口时,我可以继续进行,将其另存为 pdf 或切换到报告视图,但子报告显示为空白,文字消失。
这适用于 Access 2010。下面是用作子报表记录源的查询:
SELECT qryForLetter.CrossingID, qryForLetter.DispID, qryForLetter.AgreType, qryForLetter.Legal
FROM qryForLetter
WHERE (((qryForLetter.Company)=[Forms]![frmForReport]![cboSelectCompany]) AND ((qryForLetter.PU)=[Forms]![frmForReport]![cboSelectPU]));
我错过了什么?如何摆脱这个弹出窗口?非常感谢任何帮助。
【问题讨论】:
-
如果您在设计视图中打开该查询,然后使用您的组合框添加两列,会发生什么情况?即“Expr1:[Forms]![frmForReport]![cboSelectCompany]”和“Expr2:[Forms]![frmForReport]![cboSelectPU]”?当您运行该查询时,您在组合框中选择的值是否显示在查询的这两列中?如果没有,您需要更改组合框的“绑定列”属性。
-
当我按照您的建议在该查询的设计视图中添加两列并运行查询时,我会弹出窗口要求首先为 Forms!frmForReport!cboSelectCompany 输入参数值,然后为 Forms!frmForReport! cboSelectPU。如果我在两个窗口中输入参数,查询将在数据表视图中打开,所有列加上 Expr1 和 Expr2,数据根据我输入的参数过滤。那么这是什么意思呢?
-
我的错,我应该说删除选择条件行。但是,您在两个新列中有什么值?如果不是组合框中的值,则需要更改“绑定列”设置。
-
好吧,当我删除选择标准时,我所描述的就会发生。如果我将选择标准留在原处并添加表达式,我只会得到一条记录。但是在这两种情况下,运行查询后,2 个新列都填充了我在弹出窗口中输入的值。对不起,如果我误解了。包含组合框的表单可以正常工作。报告打开也很好。子报表包含在组合框中选择的记录。当我想切换报告视图或将其保存为 pdf 时,我的问题就开始了。
-
如果运行以下 SQL 会发生什么?我删除了您的选择标准。如果仍然提示您输入任何参数,则表示“qryForLetter”正在询问参数。仍然想知道 Expr1 和 Expr2 是否显示您的组合框中的内容(您的表单需要打开,并进行选择):SELECT qryForLetter.CrossingID, qryForLetter.DispID, qryForLetter.AgreType, qryForLetter.Legal, [Forms]![frmForReport ]![cboSelectCompany] as Expr1, [Forms]![frmForReport]![cboSelectPU as Expr2 FROM qryForLetter