以ms访问形式输入的快速日期

问题描述 投票:1回答:1

我有一个简单的数据库,我在其中通过称为[帐户交易清单]的表格在表格中输入我的日常交易。我没有在发生交易的当天输入所有交易。我宁愿坐下来,一次输入一个星期的所有日期。因此,我需要手动调整日期字段以匹配实际交易日期。我喜欢使用快捷键,而不是每次都键入整个日期。

我一生中使用过Quickbooks。在Quickbook中,您可以使用“ +”,“-”和其他键快速操作日期。例如,“ +”将日期提前1天,而“-”从日期中减去一天。 “ y”将您带到一年的第一天,而“ r”将您带到一年的最后一天。还有其他人,但这给您一个想法。我正在尝试在我的访问表格中复制此内容。这是我在On Key Down事件中的Date控件上拥有的代码。

Private Sub Entry_Date_Keydown(KeyCode As Integer, Shift As Integer)
Dim dte As Date

Select Case KeyCode
    Case 189, 109 'Minus key '-'
    KeyCode = 0
    'subtract one day from current date
    Me.Entry_Date = Me.Entry_Date - 1
    SendKeys "{ESCAPE}"
    Me.Dirty = False
    Case 187, 107 '= key (used for the plus)
    KeyCode = 0
    'add one day to current date
    Me.Entry_Date = Me.Entry_Date + 1
    SendKeys "{ESCAPE}"
    Case 84 ' T key
    KeyCode = 0
    Me.Entry_Date = Now
    SendKeys "{ESCAPE}"
    'Let any other key press go
    Case Else
    KeyCode = KeyCode

End Select

End Sub

这在大多数情况下效果很好。但是,有时它会关闭Num Lock。我无法弄清楚为什么或何时这样做的模式。有时会,有时却不会。可能与我按快捷方式的次数有关。对于高效的数据输入而言,这很烦人,因为下一个控件中的第二个控件是数字控件。我相信这与SendKeys有关,但无法理解如何避免它们。 SendKeys帮助在每次按键之间更新控件,以便您在按快捷键时可以看到日期更新。否则,日期控件仅在退出时更新。

是否可以在每次按键结束或退出控制后验证NUM LOCK是关闭还是打开?

OR

在这种情况下避免使用SendKeys? (因为我认为这是引起问题的原因)

谢谢

forms access-vba
1个回答
0
投票

SendKeys确定是您遇到麻烦的钥匙(双关语专用)。

而不是操纵接口,而是处理表单的RecordsetClone。这样,您可以轻松地编辑和保存数据。

此外,您也可以按照我的文章中所述优化界面以快速输入日期:

Entering ISO formatted date with input mask and full validation in Microsoft Access

((如果您没有帐户,请浏览链接:阅读全文)

代码太多,无法在此处发布,但是您可以修改它以接受您的快捷方式。完整的代码随时在GitHubVBA.DateEntry

© www.soinside.com 2019 - 2024. All rights reserved.