Umiarkowany: wymaga podstawowych makro, kodowania i interoperacyjności umiejętności.Ten artykuł dotyczy bazy danych programu Microsoft Access (. mdb) i projektu programu Microsoft Access (. adp).

Symptomy

Podczas edytowania danych, który używa wielu formularzy, które mają tego samego źródła rekordów, może zostać wyświetlony następujący komunikat o błędzie:

Ten rekord został zmieniony przez innego użytkownika, ponieważ rozpoczęto jego edycję. Zapisanie rekordu spowoduje zastąpienie zmian wprowadzonych przez innego użytkownika. Skopiowanie zmian do Schowka pozwoli spojrzeć na wartości wprowadzone przez innego użytkownika, a następnie wklej zmiany z powrotem, jeśli zdecydujesz się wprowadzić zmiany.

Następnie można kliknąć jeden z następujących trzech przycisków:

  • Zapisz rekord

  • Kopiuj do schowka

  • Usuwanie zmian

Przyczyna

To zachowanie występuje po otwarciu dwóch formularzy, które aktualizują tego samego źródła danych w tym samym czasie. Pierwszy formularz umieszcza blokadę edycji w rekordzie lub rekordach, a następnie drugi formularz zmienia rekord lub rekordy i zapisuje zmiany. Gdy pierwszy formularz próbuje zamknąć i zapisać z powrotem do tabeli, zostaną wykryte zmiany wprowadzone przez drugi formularz. Powoduje to, że błąd ma zostać zwrócony.

Rozwiązanie

Aby obejść to zachowanie, należy użyć jednej z dwóch metod wymienionych dla pliku bazy danych (. mdb) programu Microsoft Access lub metody na liście dla pliku projektu programu Access (. adp).

Dla pliku bazy danych programu Microsoft Access (. mdb)

Metoda 1

Ustaw właściwość RecordLocks formularza na edytowany rekord. Aby to zrobić, wykonaj następujące kroki:

  1. Otwórz formularz w widoku Projekt. Uwaga W programie Access 2007 przejdź do kroku 3.

  2. W menu Widok kliknij polecenie Właściwości.

  3. Na karcie dane Zmień właściwość blokady rekordów na edytowany rekord.

Metoda 2

Dodaj kod do procedury zdarzenia OnDeactivate obu formularzy, aby zapisać rekord. Aby to zrobić, wykonaj następujące kroki:

  1. Otwórz formularz w widoku Projekt. Uwaga W programie Access 2007 przejdź do kroku 4.

  2. W menu Widok kliknij polecenie Właściwości.

  3. W menu Edycja kliknij polecenie Wybierz formularz.

  4. Na karcie zdarzenie kliknij prawym przyciskiem myszy w polu Właściwość OnDeactivate , a następnie kliknij polecenie Kompiluj.

  5. W Wybierz konstruktora pole, kliknij przycisk Konstruktora kodu, a następnie kliknij przycisk OK.

  6. Wpisz lub wklej następujący kod:

    DoCmd.RunCommand acCmdSaveRecord
  7. Otwórz drugi formularz w widoku Projekt i powtórz kroki od 2 do 6.

Dla pliku projektu programu Microsoft Access (. adp):

Dodaj kod do OnDeactivate i OnActivate procedury zdarzeń obu formularzy, aby zapisać rekord. Aby to zrobić, wykonaj następujące kroki:

  1. Otwórz formularz w widoku Projekt. Uwaga W programie Access 2007 przejdź do kroku 4.

  2. W menu Widok kliknij polecenie Właściwości.

  3. W menu Edycja kliknij polecenie Wybierz formularz.

  4. Na karcie zdarzenie kliknij prawym przyciskiem myszy w polu Właściwość OnDeactivate , a następnie kliknij polecenie Kompiluj.

  5. W Wybierz konstruktora pole, kliknij przycisk Konstruktora kodu, a następnie kliknij przycisk OK.

  6. Wpisz lub wklej następujący kod:

    DoCmd.RunCommand acCmdSaveRecord
  7. W menu plik kliknij polecenie Zamknij i wróć do programu Microsoft Access.

  8. Na karcie zdarzenie kliknij prawym przyciskiem myszy w polu Właściwość OnActivate , a następnie kliknij polecenie Kompiluj.

  9. W Wybierz konstruktora pole, kliknij przycisk Konstruktora kodu, a następnie kliknij przycisk OK.

  10. Wpisz lub wklej następujący kod:Uwaga przykładowy kod w tym artykule użyto Microsoft ActiveX Data Objects. Aby ten kod działał poprawnie, należy odwołać się do biblioteki Microsoft ActiveX Data Objects 2. x (gdzie 2. x jest 2,1 lub nowszej). Aby to zrobić, kliknij przycisk odwołania na Narzędzia menu w edytorze Visual Basic i upewnij się, że Biblioteka Microsoft ActiveX Data Objects 2. x pole wyboru jest zaznaczone.

    Dim rs As ADODB.RecordsetSet rs = Me.Recordset.Cloners.Bookmark = Me.BookmarkDoCmd.RunCommand acCmdRefreshMe.Bookmark = rs.Bookmarkrs.CloseSet rs = Nothing
  11. Otwórz drugi formularz w widoku Projekt, a następnie powtórz kroki od 2 do 10.

Więcej informacji

Kroki prowadzące do odtworzenia problemu w programie Access 2003

  1. Otwórz program Access.

  2. W menu Pomoc wskaż polecenie przykładowe bazy danych, a następnie kliknij przycisk Przykładowa baza danych Northwind.

  3. W oknie baza danych kliknij opcję tabele w obszarze obiekty, a następnie kliknij tabelę pracownicy .

  4. W menu Wstaw kliknij polecenie Autoformularz.

  5. Zapisz formularz jako frmNewEmployees.

  6. Otwórz formularz pracownicy, a następnie Zmień pole imię na Nancy1.

  7. Otwórz formularz frmNewEmployees, a następnie Zmień pole imię na Nancy2.

  8. Zamknij formularz frmNewEmployees.

  9. Zamknij formularz pracownicy. Należy zauważyć, że pojawi się komunikat "konflikt zapisu", który jest wymieniony w sekcji "Symptomy" tego artykułu.

Aby uzyskać dodatkowe informacje, kliknij następujący numer artykułu w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:

304181 nieoczekiwany błąd konfliktu zapisu podczas zamykania formularza

280730 ACC2000: błąd konfliktu zapisu podczas próby aktualizacji rekordów w połączonej tabeli programu SQL Server

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×