我在Access 2003中有一个表单,只能使用单个记录。我可以将Cycle
属性设置为Current Record
,但是当我按Enter键时,表单仍会跳转到下一条记录。我的第一个想法是KeyPreview
属性,但我没有看到。我的另一个想法可能是KeyPress
或KeyUp
事件,但我想如果出现意想不到的后果我会问。有什么想法吗?
答案 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件事:
将以下代码添加到表单的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中。