按Enter键时阻止移动到下一条记录?

时间:2009-02-12 20:42:16

标签: ms-access vba access-vba ms-access-2003

我在Access 2003中有一个表单,只能使用单个记录。我可以将Cycle属性设置为Current Record,但是当我按Enter键时,表单仍会跳转到下一条记录。我的第一个想法是KeyPreview属性,但我没有看到。我的另一个想法可能是KeyPressKeyUp事件,但我想如果出现意想不到的后果我会问。有什么想法吗?

6 个答案:

答案 0 :(得分:6)

Cycle属性仅影响TAB键。

控制作为全局属性的Enter键的行为。

转到工具/选项 - 键盘选项卡,然后在“移动后输入”选择“下一个字段”

您可以使用KeyPress和KeyDown事件来捕获Enter键,但这样做更有效。

答案 1 :(得分:3)

这也可以在vba中完成。

Application.GetOption "Move After Enter" 'get current setting
Application.SetOption "Move After Enter", 0 'don't move
Application.SetOption "Move After Enter", 1 'Next Field
Application.SetOption "Move After Enter", 2 'Next Record

http://www.pcreview.co.uk/forums/enter-key-moving-next-field-t3454281.html

答案 2 :(得分:1)

TAB Alt PgUP PgDn 输入在添加记录结束时(主要在最后一个字段之后)按下,数据库会自动保存您在表单上输入的所有信息并清除字段,以便您可以输入下一个值。所以会发生什么是保存数据但表格看起来是空的。

要做的3件事:

  1. 表单周期属性设置为当前记录。
  2. 表单键预览属性设置为是。
  3. 将以下代码添加到表单的KeyDown事件:

    '33 - PgUp; 34 - PgDown; 9 - Tab; 18=Alt; 13=Enter
    
    Select Case KeyCode
    Case 33, 34, 18, 9, 13
    KeyCode = 0    
    Case Else
    'Debug.Print KeyCode, Shift
    End Select
    

    我在搜索网页的过程中发现了这一点并且没有对代码负责,但我不知道我在哪里找到它。适合我!

答案 3 :(得分:0)

Cycle属性仅适用于Tab键。

您可以选择两种方式。

您可以在KeyDown / KeyUp / KeyPressed中捕获Enter键 - 或 -
您可以将数据源过滤到要编辑的一条记录,并禁用通过该表单添加新记录。

答案 4 :(得分:0)

您可以在表单“BeforeUpdate”活动中添加以下代码。如果使用想要移动到下一条记录,它将要求用户保存然后关闭表格,然后才能转移到另一个记录。

  Private Sub Form_BeforeUpdate(Cancel As Integer)
    Select Case MsgBox("Save?", vbYesNo)
      Case vbYes
        DoCmd.Close
      Case vbNo
        Cancel = True
    End Select
  End Sub

答案 5 :(得分:0)

如果您进入文件页面上的“访问选项”,请转到“客户端设置”,然后您可以通过第一个设置选择按Enter键时焦点更改的位置。至少在Access 2013中。