表单过滤器之间的 MS-Access
Posted
技术标签:
【中文标题】表单过滤器之间的 MS-Access【英文标题】:MS-Access between filter on form 【发布时间】:2013-02-28 20:50:27 【问题描述】:您好,我创建了一个访问表单,如下所示:
我可以做到,所有过滤器都可以工作,除了年份和长度过滤器。 Year 框未绑定,左侧称为Year1,右侧称为Year2。我尝试使用 Me.Filter 代码,但它不起作用。它不会出现错误,只是不会过滤我的数据。所以我需要做的是让用户可以在 Year1 和 Year2 中输入一年,并过滤这两年之间的数据。例如,他们将 2000 放在 Year1 中,将 2010 放在 Year2 中,然后当他们运行查询时,它只显示 2000 年到 2010 年的数据。
这是我目前使用的代码:
Private Sub Year2_AfterUpdate()
Me.Filter = "[Year] BETWEEN #" & Me.Year1 & "# AND #" & Me.Year2 & "#"
Me.Filteron = true
任何帮助将不胜感激! :) (如果您能解释一下代码是做什么的,那也将不胜感激,这样我就可以自己学习编写它,以便我能更好地理解!谢谢!)
【问题讨论】:
【参考方案1】:当您在过滤器中使用日期文字时,您只能使用 "#" 字符。如果它只是一个数字,您将使用:
Me.Filter = "[Year] BETWEEN " & Me.Year1 & " AND " & Me.Year2
如果 [Year] 实际上是一个日期,那么您应该使用:
Me.Filter = "[Year] BETWEEN #01/01/" & Me.Year1 & "# AND #12/31/" & Me.Year2 & "#"
如果您在年份文本框中输入 2010 和 2011,则计算结果为 [Year] BETWEEN #01/01/2010# AND #12/31/2011#
。
【讨论】:
[Year] 是我的列,其中包含我的所有数据,其中包含我的年份。我更改了代码并取出了 "#" 但它仍然不会不行!啊!我已经用这个尝试了一百万件事,但我不明白为什么它不起作用! :( 还有什么我应该为它工作的地方吗? 它应该可以工作。您的 [Year] 列是什么类型的?您是否将 Year2 的值更改为测试(因为您的过滤器仅在 Year2_AfterUpdate() 事件中设置,就您向我们展示的而言。您能显示命令按钮的代码吗? 类型?这只是一个写满了多年的专栏。一般的?也许?不,我没有更改 Year2 的值来测试,我该怎么做?抱歉,我对 Excel 有点陌生。我的 RunQuery 按钮只是一个设置为 Open Query 的宏 查询是查询一个表,我说的是你查询的表中[Year]的类型。右键单击表格,单击设计,查找[年份],查看属性中的内容。这也是一个 Access 问题,对,不是 Excel? 啊。类型是数字。是的,对不起,它是 Access(我只是累了,所以我写了 excel)。我应该将数字更改为日期/时间吗?虽然总的来说我认为这并不重要,因为我所拥有的只是例如。 1996、2001 等,所以我只需要在两个数字之间进行搜索。为什么这行不通! D:【参考方案2】:您必须使用查询名称 (frmAufträgeQuery) 而不是表单 (frmAufträge):
出错后继续下一步
FromDate = "01.01.2021"
ToDate = "01.04.2021"
Me.Filter = "([frmAufträgeQuery].[Administrativ abgeschlossen] 介于 #" & Format(FromDate, "yyyy-mm-dd") & "# AND #" & Format(ToDate, "yyyy-mm-dd ") & "#)"
Me.FilterOn = True
【讨论】:
以上是关于表单过滤器之间的 MS-Access的主要内容,如果未能解决你的问题,请参考以下文章