访问表单:在文本框中捕获日期更改
Posted
技术标签:
【中文标题】访问表单:在文本框中捕获日期更改【英文标题】:Access form: trapping date changes in textbox 【发布时间】:2014-03-19 09:17:38 【问题描述】:在普通文本框上,我通常使用AfterUpdate
事件来执行一些操作。这意味着用户必须在键入后按 Enter 或 Tab,或者单击另一个控件,我一直对这种行为感到满意。
现在我在 Access 2010 的连续表单的标题中设置了一个日期过滤器,我意识到通过自动出现的小日历更改日期不会触发 AfterUpdate
事件,在选择正确的日期,有点沉重。
使用OnChange
会在输入的每个字符处触发,这也不好。
有什么建议吗?
【问题讨论】:
如果你使用小日历,On Change 事件只会触发一次,那么人们会怎么做呢? @Remou:对,但我想让他们选择输入日期。我尝试使用 OnChange + 检查字符数和 IsDate(),但这会产生混乱的结果……我不想花半天时间。理想的情况是让“小日历”触发一个事件。 我看不到小日历会给你一个事件的任何方式,但是,按键事件只会在用户输入控件时发生,因此使用模块级变量、按键和改变事件,你可能会接近。 很好的提示,我会试试的。谢谢 【参考方案1】:回复有点晚,但我希望它会帮助其他人。 当使用文本框作为 DatePicker 时,您应该使用带有过滤器的更改事件。
但是,当您检查 Form_name.TextboxName
之类的文本框时,它将显示最后选择的日期。为避免这种情况并使用当前选定的日期,您需要提供当前日期,例如Form_name.TextboxName.Text
。这里要小心,因为.Text
属性对焦点很敏感。
...简而言之:
Form_name.TextboxName
- 将显示最后选择的日期Form_name.TextboxName.Text
- 将显示当前选择的日期
【讨论】:
【参考方案2】:好吧,从日期选择器中选择日期后,TextBox 控件会发生 Change 事件。然后,调用子或函数或将焦点设置到另一个控件...为了避免每个按下的键触发事件,请输入以下内容: 如果 Len(me.activecontrol)
希望对你有帮助
【讨论】:
【参考方案3】:我在文本框中使用 LostFocus 事件。它允许使用日历工具并更改内容。用户迟早必须离开文本框,不是吗?
【讨论】:
【参考方案4】:我就是这样用的
Private Sub txt_FirstDate_Change()
txt_FirstDate = txt_FirstDate.Text
myfilter
End Sub
【讨论】:
以上是关于访问表单:在文本框中捕获日期更改的主要内容,如果未能解决你的问题,请参考以下文章
VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确