ced*_*r01 2 parameters ms-access vba access-vba
我想使用VBA脚本自动化一些访问报告。但是,当我要使用它们运行时DoCmd.OpenReport,我遇到了一个问题,即每个报表都有一些弹出窗口,其中包含一些来自基础查询的参数。
这是参数在查询中的样子:
PARAMETERS [Time] Text ( 255 );
Run Code Online (Sandbox Code Playgroud)
我在Google上搜索了很多并尝试:
DoCmd.OpenReport "B_My_Report", acViewPreview, , "[Time]= 423"
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。弹出窗口仍然出现,当我什么也不输入时,查询将失败,因为Time参数为空。
有没有一种方法可以用参数值调用报表。我读了很多关于完全删除Parameter并在中使用where条件的建议OpenReport。但是我无法更改这些查询,因为它们不是我制作和维护的。有时候我只需要运行它们。因此,我很想拥有一种无需触摸报表或查询的解决方案。
如果您的Access版本> = 2010,请考虑使用DoCmd.SetParameter方法。
此查询是我的报告的记录源:
PARAMETERS which_id Long;
SELECT rmy.id, rmy.reportDate, rmy.gainOrLoss
FROM record_matYields AS rmy
WHERE rmy.id=[which_id] OR [which_id] Is Null;
Run Code Online (Sandbox Code Playgroud)
因此,我可以为参数分配一个值,然后打开仅显示匹配记录的报告(id是主键):
DoCmd.SetParameter "which_id", 4
DoCmd.OpenReport "rptFoo",acViewReport
Run Code Online (Sandbox Code Playgroud)
或者,由于OR [which_id] Is Null查询WHERE子句中的条件,如果我希望包括所有记录而不管它们的id值如何,我可以在打开报表之前将Null分配给参数:
DoCmd.SetParameter "which_id", Null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2377 次 |
| 最近记录: |