表单过滤器之间的 MS-Access

Posted

技术标签:

【中文标题】表单过滤器之间的 MS-Access【英文标题】:MS-Access between filter on form 【发布时间】:2013-02-28 20:50:27 【问题描述】:

您好,我创建了一个访问表单,如下所示:

我可以做到,所有过滤器都可以工作,除了年份和长度过滤器。 Year 框未绑定,左侧称为Year1,右侧称为Year2。我尝试使用 Me.Filter 代码,但它不起作用。它不会出现错误,只是不会过滤我的数据。所以我需要做的是让用户可以在 Year1Year2 中输入一年,并过滤这两年之间的数据。例如,他们将 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的主要内容,如果未能解决你的问题,请参考以下文章

查询组合框过滤器在 Null 时不起作用(仅在表单中)

MS-Access 查询过滤器在“=”上正常,但在我使用“<>”时不可用?

子表单最初不显示过滤结果

ms-access:仅显示特定日期内记录的报告

使用数据表表单过滤器过滤报告

在节点编辑表单中嵌入带有公开表单过滤器的视图(VBO 表单)