Błąd (W forEachRecord tylko rekordy najbardziej zewnętrznego ForEachRecord mogą być edytowane lub usuwane.) po uruchomieniu makra danych ForEachRecord w programie Access

Oryginalny numer KB:   982781

Symptomy

Po uruchomieniu makra danych ForEachRecord w programie Microsoft Access zostanie wyświetlony następujący komunikat:

W forEachRecord tylko rekordy najbardziej zewnętrznych ForEachRecord mogą być edytowane lub usuwane.

Po kliknięciu przycisku OKw oknie Pojedynczy krok makra zostanie wyświetlona nazwa problematycznego makra wraz z numerem błędu: 2950.

Ponadto nie można użyć makra EditRecord ani createrecord w wewnętrznej pętli makra danych ForEachRecord.

Przyczyna

Ten problem występuje, ponieważ akcja makra danych EditRecord i akcja makra danych DeleteRecord są obsługiwane tylko wtedy, gdy są uruchamiane na następujących zestawach rekordów:

  • Nadrzędny rekord.
  • Najbardziej zewnętrzny rekord, który jest relacji nadrzędny/podrzędny.

To ograniczenie jest zgodnie z projektem. Dzieje się tak, ponieważ makra danych nie są zagnieżdżone jako transakcje, jeśli wystąpi błąd systemu podczas forEachRecord pętli, ForEachRecord pętli może zostać ponownie uruchomiony w niepoprawnym miejscu po ponownym uruchomieniu bazy danych. Ten problem może spowodować wprowadzenie zduplikowanych wartości do bazy danych programu Access lub nieumyślne odpalenie innego makra.

Obejście problemu

Aby obejść ten problem, zmień makro danych, tak aby zagnieżdżone makro danych ForEachRecord nie używało akcji EditRecord ani Akcji CreateRecord.

Więcej informacji

Błąd, który jest opisany w sekcji "Symptomy" jest również wymieniony w kolumnie Opis USysApplicationLog. Jednak numer błędu może być inny w USysApplicationLog.