如何在MS Access Report标题中引用用户输入的起止日期参数
MS Access 报表标题显示用户输入起止日期的实现方法
以下3种方案都适配你当前用参数查询生成报表的场景,按需选就行:
- 直接引用查询参数(零代码,最快实现)
你现有查询里弹出输入框的提示文本就是参数名,比如你在查询的日期筛选条件里写的是Between [请输入起始日期] And [请输入截止日期],方括号里的内容就是可直接引用的参数。
直接在报表页眉区域插入一个文本框,删除它默认绑定的字段,把控件来源设置为如下表达式:="统计周期:" & [请输入起始日期] & " 至 " & [请输入截止日期]
注意:表达式里方括号内的参数文本必须和查询里写的提示内容完全一致,多一个空格都会触发重复弹出日期输入框。设置完成后打开报表,文本框会自动读取用户之前输入的两个日期值直接展示。如果需要统一日期格式,套一层Format函数即可,比如改成="统计周期:" & Format([请输入起始日期],"yyyy年mm月dd日") & " 至 " & Format([请输入截止日期],"yyyy年mm月dd日")。 - 用独立输入窗体承接日期参数(更推荐,稳定性高)
查询自带的弹出输入框容错性差,输错没法直接改,更稳妥的方式是做一个专用的日期输入窗体作为报表入口:- 新建空白窗体,添加两个格式为短日期的文本框,分别命名为
txt_StartDate、txt_EndDate,再加一个「打开报表」的命令按钮 - 把原有参数查询的日期筛选条件改为
Between Forms!日期输入窗体!txt_StartDate And Forms!日期输入窗体!txt_EndDate - 报表标题的文本框控件来源直接引用窗体上的两个日期控件即可:
="统计周期:" & Format(Forms!日期输入窗体!txt_StartDate,"yyyy-mm-dd") & " 至 " & Format(Forms!日期输入窗体!txt_EndDate,"yyyy-mm-dd")
这种方式支持用户在打开报表前反复调整日期,也不会出现参数名匹配错误反复弹框的问题,日常使用体验更好。
- 新建空白窗体,添加两个格式为短日期的文本框,分别命名为
- 通过报表加载事件赋值(适配已有VBA逻辑的场景)
如果你已经写了VBA逻辑控制报表生成,也可以直接在报表加载事件里读取查询参数给标题赋值:
打开报表设计视图,选中报表主体进入VBA代码编辑界面,在Report_Load事件中添加如下代码:
代码里把查询名、参数名、文本框控件名替换成你自己实际使用的名称即可。Private Sub Report_Load() Dim qdf As QueryDef Set qdf = CurrentDb.QueryDefs("你的参数查询名称") Me.txt_Title.Value = "统计周期:" & Format(qdf.Parameters("请输入起始日期"), "yyyy-mm-dd") & " 至 " & Format(qdf.Parameters("请输入截止日期"), "yyyy-mm-dd") Set qdf = Nothing End Sub
避坑提示:不要直接在报表里用InputBox函数重新获取日期,否则用户需要重复输入两次日期,体验很差。
内容的提问来源于stack exchange,提问作者David Johnson
相关产品推荐
相关产品推荐

