Access
 sql >> Baza danych >  >> RDS >> Access

Jak naprawić „Przekroczono zasoby systemowe” podczas migracji do systemu Windows 10?

Jak naprawić „Przekroczenie zasobów systemowych” podczas migracji do systemu Windows 10

Komunikat o błędzie przekroczenia zasobów systemowych

Ostatnio widzieliśmy lawinę klientów, którzy migrują do systemu Windows 10, którzy otrzymują „przekroczenie zasobów systemowych”, mimo że system działał dobrze we wcześniejszych wersjach systemu Windows. W niektórych przypadkach prześledziliśmy problem w aplikacjach, które używają wielu podformularzy w kontrolce karty, więc opiszę technikę, która zapobiegnie problemowi w przypadkach, gdy każda karta obsługuje podformularz.

Zakładki tworzą świetny interfejs użytkownika – do wyczerpania wspomnień

Niedawno pracowałem z aplikacją klienta, która miała trzy głębokość zakładek:zakładki w zakładkach, z których wszystkie były ładowane podformularzami przy każdym otwarciu formularza. Aplikacja działała dobrze w systemie Windows 7, ale powodowała komunikaty o błędach „Przekroczono zasoby systemowe” w systemie Windows 10. Rozwiązaniem jest załadowanie podformularza tylko wtedy, gdy użytkownik kliknie kartę i wyładowanie podformularza, gdy przejdzie do innej karty.

Private Sub TabTasks_Change()
10 Static LastSubform As Access.SubForm

12 If Not LastSubform Is Nothing Then
14 If Len(LastSubform.SourceObject) Then
16 LastSubform.SourceObject =vbNullString
18 End If
20 End If
22 Select Case Me.TabTasks.Value
24 Case Me.Orders.PageIndex
25 If Me.frmOrders.SourceObject =vbNullString Then
26 Set LastSubform =Me.frmOrders
28 LastSubform.SourceObject =“frmOrder_sub”
30 Zakończ If
32 Sprawa Me.Invoices.PageIndex
34 If Me.frmInvoices.SourceObject =vbNullString Then
36 Ustaw LastSubform =Me.frmInvoices
38 LastSubform.SourceObject =“frmInvoices_sub”
40 End If
42 Case Me.Payments.PageIndex
44 If Me.frmPayments.SourceObject =vbNullString Then
46 Ustaw LastSubform =Me .frmPayments
48 LastSubform.SourceObject =“frmPayments_sub”
50 End If
52 End Wybierz
End Sub

Przegląd kodu

Magia dzieje się w zdarzeniu Zmiana karty, które ma miejsce, gdy użytkownik kliknie każdą kartę kontrolki. W powyższym przykładzie kodu interesują mnie tylko zakładki, które mają podformularze, w tym przypadku trzy zakładki. (Technika jest bezużyteczna w przypadku kart bez podformularzy).

Statyczny obiekt LastSubForm (wiersz 10) śledzi ostatnio użyty podformularz i ustawia jego wartość SourceObject na null w wierszu 16. Spowoduje to usunięcie poprzedniej karty z pamięci i ograniczy użycie pamięci do minimum, gdy użytkownik się wyłączy do innej karty.

Instrukcja select w wierszu 22. służy do określenia, która karta została kliknięta, a następnie ustawia obiekt LastSubForm na podformularz zawarty w karcie i ostatecznie ustawia obiekt SourceObject podformularza w wierszu 28. Spowoduje to natychmiastowe załadowanie podformularza do pamięci. Przetwarzanie jest powtarzane dla pozostałych dwóch zakładek kontrolki z podformularzami.

Pamiętaj

Aby zminimalizować zużycie pamięci, musisz ustawić właściwość SourceObject każdej karty na pusty ciąg w widoku projektu, w przeciwnym razie wszystkie podformularze zostaną załadowane, co jest sprzeczne z celem tej techniki.

Pierwsza zakładka kontrolki powinna się wczytać, ponieważ to właśnie ją zobaczą użytkownicy po otwarciu formularza.

Po prostu dodaj więcej instrukcji select w razie potrzeby, jeśli chcesz użyć tej techniki z większą liczbą kart. Użyłem jej do kontroli kart, która miała 8 kart.

Jeśli masz zagnieżdżone karty, musisz powtórzyć podejście dla każdej kontrolki karty.

Jeśli nazwy podformularzy są takie same jak właściwości obiektu SourceObject, możesz dodatkowo zoptymalizować kod, używając w kodzie zmiennej ciągu.

Jeśli podoba Ci się ten post, udostępnij go!

Udostępnij ten post na LinkedIn, Twitterze i Facebooku, będzie to bardzo mile widziane!

Dołącz do mnie na następnym spotkaniu Access with SQL Server 8 maja o 18:30 CST. Aby uzyskać więcej informacji, kliknij tutaj.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skąd pobrać zestaw Runtime Kit dla Microsoft Access 2016

  2. Tworzenie opcjonalnych zależności

  3. Jak korzystamy z baz danych w naszym codziennym życiu

  4. Ilu użytkowników może uzyskać dostęp do pomocy technicznej?

  5. Jak pogrupować raport według wielu pól w programie Access 2016