我是非常新的访问和vba。
我创建了一个访问数据库并创建了一个报告。报告中的一列是日期列,我想创建一个动态用户过滤器,用户可以在其中输入日期范围,查询将接受该过滤器。
我正在使用Access 2013.在属性表上,我看到一个查找部分,我可以在其中选择文本框,列表框或组合框。我还看到了“输入掩码”部分。我需要使用这些,如果是这样,怎么样?我在任何地方都需要vba代码吗?
答案 0 :(得分:2)
有两种方法可以解决这个问题。哪种方法取决于诸如您移动的数据量等因素。
示例您有一个名为ShipDate的字段,并且您希望查看6月1日到6月10日之间发送的所有内容
让我们假设txtStartDate
和txtEndDate
是填充了日期
使用Filter
Reports![MyReportName].RecordSource = "MyQuery"
Reports![MyReportName].Filter = "ShipDate BETWEEN #" & txtStartDate & "# AND #" & txtEndDate & "#"
Reports![MyReportName].FilterOn = True
Filter
和FilterOn
编辑SQL字符串
strSQL = "SELECT ShipDate FROM MyTable WHERE ShipDate BETWEEN #" & txtStartDate & "# AND #" & txtEndDate & "#"
Reports![MyReportName].RecordSource = strSQL
- 积极:仅提取显示所需的绝对最低记录
- 否定:您必须构建查询字符串并设置RecordSource
我个人使用过滤器方法,直到我开始使用返回超过几百条记录的查询。我没有注意到两种方法之间存在任何显着的时间差异,除了我有一个返回大约50k记录的查询
答案 1 :(得分:1)
我通常会创建一个包含用户可以添加的动态信息的表单。即使它只是一个日期字段,也没关系。
报告背后的查询将包含您正在使用的日期字段,您可以在标准中添加
=[Forms]![MyFormName]![MyTextBoxName]
其中MyFormName是上述表单的名称,MyTextboxName是用户输入日期的文本框的名称。
然后在打开报告的表单上放置一个按钮。完成!