sql >> Database teknologi >  >> RDS >> Access

Sådan rettes 'Systemressource overskredet' ved migrering til Windows 10

Sådan rettes 'Systemressource overskredet' ved migrering til Windows 10

Fejlmeddelelse om systemressource overskredet

På det seneste har vi set en byge af klienter, der får "Systemressource overskredet" ved migrering til Windows 10, selvom systemet fungerede fint i tidligere versioner af Windows. I nogle tilfælde har vi sporet problemet til apps, der bruger mange underformularer i en fanekontrol, så jeg vil beskrive en teknik, der vil forhindre problemet i de tilfælde, hvor hver fane er vært for en underformular.

Faner giver en fantastisk brugerflade – indtil minderne løber tør

Forleden arbejdede jeg med en klients app, der var tre faneniveauer dybe:faner i faner, som alle blev indlæst med underformularer, hver gang formularen blev åbnet. App'en fungerede fint i Windows 7, men forårsagede "System Resource Exceeded" fejlmeddelelser i Windows 10. Løsningen er kun at indlæse underformularen, når brugeren klikker på fanen og fjerne underformularen, når de klikker på en anden fane.

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 Vælg Case Me.TabTasks.Value
24 Case Me.Orders.PageIndex
25 If Me.frmOrders.SourceObject =vbNullString Then
26 Indstil LastSubform =Me.frmOrders
28 LastSubform.SourceObject =“frmOrder_sub”
30 End If
32 Sag Me.Invoices.PageIndex
34 If Me.frmInvoices.SourceObject =vbNullString Then
36 Indstil LastSubform =Me.frmInvoices
38 LastSubform.SourceObject =“frmInvoices_sub”
40 End If
42 Case Me.Payments.PageIndex
44 If Me.frmPayments.SourceObject =vbNullString Then
46 Indstil LastSubform =Me .frmPayments
48 LastSubform.SourceObject =“frmPayments_sub”
50 End If
52 End Select
End Sub

Kodegennemgang

Magien sker på fanens Change-begivenhed, som opstår, når brugeren klikker på hver fane i kontrolelementet. I kodeeksemplet ovenfor er jeg kun interesseret i faner, der har underformularer, i dette tilfælde tre faner. (Teknikken er ubrugelig til faner uden underformularer).

Det statiske LastSubForm-objekt, (linje 10), holder styr på den sidst anvendte underformular og sætter dens SourceObject-værdi til null i linje 16. Dette vil forlade den tidligere fanes formular fra hukommelsen og holde hukommelsesbrug nede på et minimum, når brugeren slukker til en anden fane.

Select-sætningen i linje 22 bruges til at identificere, hvilken fane der blev klikket på, og sæt derefter LastSubForm-objektet til den underformular, der er indeholdt i fanen, og til sidst indstilles SourceObject for underformularen i linje 28. Hvis du gør det, indlæses underformularen med det samme i hukommelsen. Det behandlede gentages for de to andre faner i kontrolelementet med underformularer.

Husk

For at minimere hukommelsesbrug skal du indstille egenskaben SourceObject for hver pågældende fane til en tom streng i designvisning, ellers vil alle underformularer indlæses, hvilket besejrer formålet med teknikken.

Den første fane i din kontrol skal indlæses, da det er det, dine brugere vil se, når de åbner din formular.

Bare tilføj flere udvalgte sætninger efter behov, hvis du har brug for at bruge denne teknik med flere faner. Jeg har brugt den til en fanekontrol, der havde 8 faner.

Hvis du har indlejrede faner, skal du gentage fremgangsmåden for hver fanekontrol.

Hvis dine underformularnavne er de samme som din SourceObject-egenskab, kan du optimere koden yderligere ved at bruge en strengvariabel i koden.

Hvis du kan lide dette opslag, del det!

Del venligst dette opslag på LinkedIn, Twitter og Facebook, det vil blive værdsat!

Slut dig til det næste Access med SQL Server-møde den 8. maj kl. 18:30 CST. Klik her for flere detaljer.


  1. MySQL – Sådan genereres tilfældigt tal

  2. Hvordan tilføjer jeg en reference til MySQL-stikket til .NET?

  3. Sådan køres Opret tabel DDL med UDFØR STRAKS i Oracle-databasen

  4. Sådan får du den aktuelle tid (uden tidszone) i PostgreSQL