Błąd (w ramach rekordu ForEachRecord można edytować lub usunąć tylko rekordy najbardziej zewnętrznego rekordu ForEachRecord). 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 ramach rekordu ForEachRecord można edytować lub usuwać tylko rekordy najbardziej zewnętrznego rekordu ForEachRecord.

Po kliknięciu przycisku OK zobaczysz, że w oknie Pojedynczy krok makra jest wyświetlana nazwa problematycznego makra wraz z numerem błędu: 2950.

Ponadto nie można użyć makra EditRecord ani makra CreateRecord w pętli wewnętrznej 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 w następujących zestawach rekordów:

  • Nadrzędny zestaw rekordów.
  • Najbardziej zewnętrzny zestaw rekordów, który jest relacją nadrzędną/podrzędną.

To ograniczenie jest z założenia. Dzieje się tak, ponieważ makra danych nie są zagnieżdżone jako transakcje, jeśli awaria systemu wystąpi podczas pętli ForEachRecord, pętla ForEachRecord może zostać uruchomiona ponownie w nieprawidłowym miejscu po ponownym uruchomieniu bazy danych. Ten problem może powodować wprowadzanie zduplikowanych wartości w bazie danych programu Access lub może spowodować przypadkowe wystrzelenie 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 opisany w sekcji "Objawy" znajduje się również w kolumnie Opis dziennika USysApplicationLog. Jednak numer błędu może być inny w dzienniku USysApplicationLog.