Access 2010 - 报告要求输入参数值

时间:2014-02-24 21:11:46

标签: ms-access ms-access-2010

我有一份包含子报告的报告。报告未绑定(它用作字母的模板,仅包含纯文本)。子报表中的值基于位于表单中的两个组合框的值。

所以逻辑如下 - 当加载表单(frmForReport)时,用户选择用于过滤数据库的组合框中的值(cboSelectCompany和cboSelectPU),然后单击OK按钮,打开我的报告及其子报表。从一个查询中填充子报表,其中两个字段将这些组合框作为条件。一切正常(我在组合框中选择了我需要的内容,报表在报表视图中打开,子报表显示所有已过滤的记录,没有任何警告或请求),直到我想切换到打印预览创建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]));

我想念什么?如何摆脱这个弹出窗口?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试用函数替换参数[Forms]![frmForReport]![cboSelectCompany])[Forms]![frmForReport]![cboSelectPU]

在模块的标题中创建全局变量:

Public Company As ...
Public PU As ...

...用正确的数据类型替换省略号...

在组合框的AfterUpdate事件中,将与Combo关联的值分配给适当的全局变量,例如:

Company = cboSelectCompany

PU = cboSelectPU

并创建函数(再次使用正确的数据类型替换省略号...):

Public Function fnCompany() As ...
    fnCompany = Company
End Function

Public Function fnPU() As ...
    fnPU= PU
End Function

然后将数据源更改为:

SELECT qryForLetter.CrossingID, qryForLetter.DispID, qryForLetter.AgreType, qryForLetter.Legal
FROM qryForLetter
WHERE (((qryForLetter.Company)=fnCompany()) AND ((qryForLetter.PU)=fnPU()));

这样可以消除表单字段中报表的依赖性,这似乎是个问题。