Access
 sql >> база данни >  >> RDS >> Access

Как да коригирате „Превишен системен ресурс“ при мигриране към Windows 10

Как да коригирате „Превишен системен ресурс“ при мигриране към Windows 10

Съобщение за грешка при превишаване на системния ресурс

Напоследък виждаме множество клиенти, получаващи „Превишен системен ресурс“  при мигриране към Windows 10, въпреки че системата работеше добре в предишни версии на Windows. В някои случаи проследихме проблема до приложения, които използват много подформуляри в контрола на раздел, така че ще опиша техника, която ще предотврати проблема в случаите, когато всеки раздел хоства подформуляр.

Разделите са страхотен потребителски интерфейс – докато спомените изтекат

Само онзи ден работех с клиентско приложение, което беше три дълбоки нива на раздели:раздели в разделите, всички от които се зареждаха с подформуляри всеки път, когато формулярът беше отворен. Приложението работеше добре в Windows 7, но предизвика съобщения за грешка „Системен ресурс надвишаван“ в Windows 10. Решението е да заредите подформуляра само когато потребителят щракне върху раздела и да разтовари подформуляра, когато щракне към друг раздел.

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

12 Ако не LastSubform е нищо тогава
14 Ако Len(LastSubform.SourceObject) Тогава
16 LastSubform.SourceObject =vbNullString
18 Край Ако
20 Край Ако
22 Изберете Case Me.TabTasks.Value
24 Case Me.Orders.PageIndex
25 If Me.frmOrders.SourceObject =vbNullString Then
26 Set LastSubform =Me.frmOrders
28 LastObject.Source.Source. =“frmOrder_sub”
30 End If
32 Case Me.Invoices.PageIndex
34 If Me.frmInvoices.SourceObject =vbNullString Then
36 Задайте LastSubform =Me.frmInvoices
38 LastSubform.SourceObject =“frmInvoices_sub”
40 End If
42 Case Me.Payments.PageIndex
44 Ако Me.frmPayments.SourceObject =vbNullString Тогава
46 Me Set LastSubform .frmPayments
48 LastSubform.SourceObject =“frmPayments_sub”
50 Край Ако
52 Край Изберете
Край под

Преглед на кода

Магията се случва в събитието Change на раздела, което се случва, когато потребителят щракне върху всеки раздел на контролата. В примерния код по-горе се интересувам само от раздели, които имат подформуляри, в този случай три раздела. (Техниката е безполезна за раздели без подформуляри).

Статичният обект LastSubForm, (ред 10), следи последния използван подформуляр и задава стойността му SourceObject на нула в ред 16. Това ще освободи формуляра на предишния раздел от паметта и ще намали използването на паметта до минимум, когато потребителят изключи към друг раздел.

Инструкцията select в ред 22 се използва за идентифициране на кой раздел е щракнат, след което задайте обекта LastSubForm на подформуляра, съдържащ се в раздела и накрая задаване на SourceObject на подформуляра в ред 28. Това веднага ще зареди подформуляра в паметта. Обработката се повтаря за другите два раздела на контролата с подформуляри.

Имайте предвид

За да сведете до минимум използването на паметта, трябва да зададете свойството SourceObject на всеки въпросен раздел на празен низ в изглед за проектиране, в противен случай всички подформуляри ще се заредят, което нарушава целта на техниката.

Първият раздел на вашата контрола трябва да се зареди, тъй като това е това, което вашите потребители ще видят, когато отворят формуляра ви.

Просто добавете повече оператори за избор, ако е необходимо, ако трябва да използвате тази техника с повече раздели, използвах я за контрола на раздели, която имаше 8 раздела.

Ако имате вложени раздели, ще трябва да повторите подхода за всеки контрол на раздели.

Ако имената на подформулярите ви са същите като вашето свойство SourceObject, можете допълнително да оптимизирате кода, като използвате низова променлива в кода.

Ако ви харесва тази публикация, споделете я!

Моля, споделете тази публикация в LinkedIn, Twitter и Facebook, ще бъде много оценена!

Присъединете се към мен на следващата среща Access with SQL Server на 8 май, в 18:30 CST, за повече подробности, моля, щракнете тук.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Присъединете се към мен за сесия на Microsoft Access със SQL Server Academy

  2. Историята на базите данни

  3. Как лесно да експортирате данни от Microsoft Access в Excel

  4. Еволюцията и бъдещето на Microsoft Access

  5. Кои са 10-те най-добри функции на Microsoft Access?