Impedir a mover-se para próximo registro ao bater Enter?
-
23-08-2019 - |
Pergunta
Eu tenho um formulário no Access 2003 que só deve ser trabalhar com um único registro. Eu posso definir a propriedade Cycle
para Current Record
, mas o formulário ainda salta para o próximo registro quando eu pressione Enter. Meu primeiro pensamento foi uma propriedade KeyPreview
, mas eu não estou vendo um. Meu outro pensamento é talvez o KeyPress
ou KeyUp
evento, mas eu pensei que eu ia perguntar em caso de consequências não intencionais. Alguma idéia?
Solução
A propriedade Ciclo afeta apenas a tecla TAB.
Para controlar o comportamento de inserir a chave que é uma propriedade global.
Vá para Ferramentas / Opções - guia Teclado e em "Mover após Enter", selecione "Next campo"
Existem eventos KeyPress e KeyDown que você pode usar para capturar a tecla Enter também, mas isso é mais trabalho.
Outras dicas
Isto pode também ser feito em 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
As chaves momento como TAB , Alt , PgUP , PgDn , Enter são pressionados no final de adicionar o registro (após o último campo na maior parte), o auto de banco de dados salva todas as informações que você inseriu no formulário e apaga os campos de modo que você pode digitar o valor seguinte. Então, o que acontece é que os dados são salvos, mas a forma parece vazia.
3 coisas a fazer:
- Form Ciclo propriedade definida como registro atual.
- set Pré-visualizar formulário chave de propriedade para Sim.
-
Adicionar seguinte código para o evento KeyDown da forma:
'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
Eu encontrei isso enquanto vasculhando a web e não tomar crédito / responsabilidade para o código, mas eu não sei onde eu o encontrei. Obras para mim!
A propriedade Ciclo só funciona com a tecla Tab.
Existem duas opções que você pode prosseguir.
Você poderia prender a chave na KeyDown / KeyUp / KeyPressed
Enter
- OU -
Você pode filtrar a fonte de dados para o registro que você quer que eles editar e desativar a adição de novos registros através desse formulário.
Você pode adicionar o código abaixo no seu formulário de evento 'BeforeUpdate'. Se o uso deseja mover para o próximo registro, ele irá pedir usuário para salvar feche o formulário antes que eles possam passar para outro Recorde.
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Save?", vbYesNo)
Case vbYes
DoCmd.Close
Case vbNo
Cancel = True
End Select
End Sub
Se você entrar em Opções de acesso na página de arquivo, vá para Configurações de Cliente e a primeira configuração permitirá que você escolha onde seu foco muda para quando você pressionar enter. Pelo menos no Access 2013.