2009-02-12 9 views
9

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?

+1

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

+0

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. –

+1

Naprawdę? Myślę, że znaczniki były wystarczające. Powielanie danych jest zazwyczaj złe. – EBGreen

Odpowiedz

6

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.

+0

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. –

+0

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

+0

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. –

0

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.

0

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 
+1

Ten kod jest uruchamiany tylko wtedy, gdy rekord został zaktualizowany, więc w rzeczywistości nie jest to rozwiązanie pierwotnego problemu. –

1

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:

  1. Formularz Cycle nieruchomości ustawiony na bieżący rekord.
  2. Właściwość podglądu klucza formularza ustawiona na Tak.
  3. 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!

0

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.

Powiązane problemy