Mam formularz w programie Access 2003, który powinien działać tylko z jednym rekordem. Mogę ustawić właściwość Cycle
na Current Record
, ale formularz nadal przeskakuje do następnego rekordu po naciśnięciu klawisza Enter. Moja pierwsza myśl to własność KeyPreview
, ale jej nie widzę. Moją drugą myślą jest być może zdarzenie KeyPress
lub KeyUp
, ale pomyślałem, że zapytam w razie niezamierzonych konsekwencji. Jakieś pomysły?Zapobieganie przechodzeniu do następnego rekordu po naciśnięciu Enter?
Odpowiedz
Właściwość Cycle wpływa tylko na klawisz TAB.
Aby kontrolować zachowanie klawisza Enter, który jest właściwością globalną.
przejdź do Narzędzia/Opcje - zakładka Keyboard oraz „Move Po Enter” wybierz „następnym polu”
Istnieje przyciśnięcie i keyDown zdarzenia, które można użyć do pułapki klawisz Enter zbyt ale to więcej pracy.
Zabawne, nigdy nie doszło do tego, że moje "preferencje użytkownika" wpłynęły na moją aplikację. Na szczęście moi użytkownicy prawdopodobnie nie są wystarczająco mądrzy, aby przejść przez opcje. To działa dla mnie. Dzięki. –
Nie wpłynie to na całą aplikację. Co jeśli chcesz to zrobić tylko w niektórych formach, nie wszystkie? Czy domyślnym zachowaniem nie jest także "Następne pole"? – BIBD
Najprawdopodobniej Twoja aplikacja powinna sprawdzić ustawienia tej opcji, korzystając z funkcji GetOption, a jeśli nie jest to to, czego potrzebujesz, ustaw ją za pomocą GetOption. Jeśli chcesz przywrócić ustawienia użytkownika do jego oryginalnego ustawienia, będziesz chciał buforować oryginalną wartość i zresetować ją po zamknięciu aplikacji. –
Właściwość Cykl działa tylko za pomocą klawisza Tab.
Istnieją dwie opcje, które można wykonać.
Mógłbyś pułapka klawisz Enter w KeyDown/KeyUp/keyPressed
- ALBO -
Można filtrować źródła danych do jednego rekordu chcesz ich edycji i wyłączyć dodawanie nowych rekordów za pośrednictwem tego formularza.
Możesz dodać poniżej kod do zdarzenia "BeforeUpdate" formularza. Jeśli użytkownik chce przejść do następnego rekordu, poprosi użytkownika o zapisanie, a następnie zamknięcie formularza, zanim będzie mógł przejść do innego rekordu.
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Save?", vbYesNo)
Case vbYes
DoCmd.Close
Case vbNo
Cancel = True
End Select
End Sub
Ten kod jest uruchamiany tylko wtedy, gdy rekord został zaktualizowany, więc w rzeczywistości nie jest to rozwiązanie pierwotnego problemu. –
Można to również zrobić w 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
Klucze Moment Like TAB, Alt, PgUp, PgDn, Wprowadź są dociskane pod koniec dodawania rekordu (po ostatnim polu głównie), baza danych automatycznie zapisuje wszystkie informacje wprowadzone w formularzu i usuwa dane z pól, dzięki czemu można wprowadzić następną wartość. Tak więc, dane są zapisywane, ale formularz wygląda pusto.
3 rzeczy do zrobienia:
- Formularz Cycle nieruchomości ustawiony na bieżący rekord.
- Właściwość podglądu klucza formularza ustawiona na Tak.
Dodaj następujący kod do KeyDown zdarzenia w postaci:
'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
Znalazłem to podczas szorowania po sieci i nie wziąć kredyt/odpowiedzialność za kod, ale nie wiem, gdzie znalazłem go . Pracuje dla mnie!
Jeśli wejdziesz w Opcje dostępu na stronie pliku, przejdź do Ustawień klienta, a pierwsze ustawienie pozwoli Ci wybrać miejsce, w którym zmienia się ostrość, gdy naciśniesz Enter. Przynajmniej w Access 2013.
Jeśli zamierzasz głosować i (zakładam tę samą osobę) głosować, aby zamknąć. Proszę skomentuj dlaczego. Regularnie oskarżam mnie o bycie szczęśliwym, a nawet nie widzę tutaj problemu. – EBGreen
Nie widzę problemu. Wydaje się, że to uzasadnione pytanie programistyczne. Potrzebny jest tylko lepszy tytuł - na przykład dodanie "w Access VBA" do końca. –
Naprawdę? Myślę, że znaczniki były wystarczające. Powielanie danych jest zazwyczaj złe. – EBGreen