2009-02-12 120 views
9

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

+1

如果您打算投票并且(我假设同一个人)投票结束。请评论为什么。我经常被指责为快乐,甚至在这里我看不到问题。 – EBGreen 2009-02-12 20:45:01

+0

我也没有看到问题。这似乎是一个合法的编程问题。它只需要一个更好的标题 - 就像在Access VBA中添加“最后”一样。 – 2009-02-12 20:48:27

+1

真的吗?我认为标签就足够了。数据的重复通常是一件坏事。 – EBGreen 2009-02-12 20:52:41

回答

6

Cycle属性只影响TAB键。

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

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

有,你可以用它来捕获回车键太多按键响应和的KeyDown事件,但是这更多的工作。

0

Cycle属性仅适用于Tab键。

有两种选择你可以追求。

你可以陷阱的KeyDown回车键/ KEYUP /的keyPressed
- 或 -
您可以将数据源过滤出你希望他们编辑的一个记录,并禁止通过表单添加新记录。

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 
1

当下键,如TABAlt键PGUPPgDn键输入在添加记录(最后一个字段后结束按下大多),数据库会自动保存您在表单中输入的所有信息并清除字段,以便输入下一个值。所以会发生的是数据被保存,但表格看起来是空的。

三件事要做:

  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 
    

    ,我发现这一点的同时淘网并没有考虑信用卡/代码责任,但我不知道在哪里,我发现它。适合我!

0

如果您进入文件页面的访问选项,请转到客户端设置,第一个设置将允许您选择在按Enter键时焦点更改的位置。至少在Access 2013中。