2016-11-21 77 views
0

我自学VBA代码,我有一个问题。 希望能得到你的帮助。女士Access VBA日期过滤器

这里是我的情况:

我已经15个表中的记录,他们的日期值,如:
2016年1月31日,2016年2月29日11月30日2016年,2016年12月31日
领域名称是[dayTo]

而且我有两个表单,
1st Form =“F_temp”,这个表单中的文本框“date0”。
第二个表=“F_visitorRec”,此表将显示从[dayTo]记录

我想了一个用的OpenForm像条件:

DoCmd.OpenForm "F_visitorRec", acNormal, , "[dayTo] >= #" & Me![date0] & "#" 

但没成功,如果我输入2016年11月01日,它会显示全部15条记录。
如果我输入2016年11月9日,它会显示大于9月份的日期。
如果我输入2016年11月13日的结果是正确的,那么它可以显示大于2016年11月13日的记录。
我知道这个问题应该与日期格式有关,但我尝试了很多方法但仍无法修复。

希望能得到你的帮助。

+0

什么是你的表日期的数据类型?总是最好把日期称为年 - 月 - 日。 – Fionnuala

+0

谢谢!我已将字段,txt框,查询格式设置为yyyy/mmm/dd。但仍然无法工作。古斯塔夫的答案是工作。非常感谢 ! – Dan

回答

1

应用正确格式的字符串表达式的日期值:

DoCmd.OpenForm "F_visitorRec", acNormal, , "[dayTo] >= #" & Format(Me![date0].Value, "yyyy\/mm\/dd") & "#" 
+0

非常感谢!古斯塔夫!
但是我应该在字段中选择哪种格式,txt框,查询?或者让它保持空白? – Dan

+0

我试过下面的,但为什么没有工作。
Dim date0 As String date0 =格式(日期,“dd \ mmmm \ yyyy”) – Dan

+0

通常,您将_Format_属性设置为_Short Date_或_Long Date_。 – Gustav