sql >> Database >  >> RDS >> Access

Hoe 'Systeembron overschreden' te repareren bij migratie naar Windows 10

Hoe 'Systeembron overschreden' te repareren bij migratie naar Windows 10

Foutmelding systeembron overschreden

De laatste tijd zien we een spervuur ​​​​van klanten die "System Resource Exceeded" krijgen bij het migreren naar Windows 10, hoewel het systeem prima werkte in eerdere versies van Windows. In sommige gevallen hebben we het probleem getraceerd naar apps die veel subformulieren in een tabbladbesturingselement gebruiken, dus ik ga een techniek beschrijven die het probleem zal voorkomen in die gevallen waarin elk tabblad een subformulier host.

Tabs zorgen voor een geweldige gebruikersinterface - totdat de herinneringen opraken

Laatst werkte ik met de app van een klant die drie was tabniveaus diep:tabbladen binnen tabbladen, die allemaal werden geladen met subformulieren telkens wanneer het formulier werd geopend. De app werkte prima in Windows 7, maar veroorzaakte foutmeldingen "System Resource Exceeded" in Windows 10. De oplossing is om het subformulier alleen te laden wanneer de gebruiker op het tabblad klikt en het subformulier te verwijderen wanneer ze naar een ander tabblad klikken.

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

12 Als niet LastSubform niets is dan
14 If Len(LastSubform.SourceObject) Then
16 LastSubform.SourceObject =vbNullString
18 End If
20 End If
22 Selecteren 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 End If
32 Case Me.Invoices.PageIndex
34 If Me.frmInvoices.SourceObject =vbNullString Then
36 Set LastSubform =Me.frmInvoices
38 LastSubform.SourceObject =“frmInvoices_sub”
40 End If
42 Case Me.Payments.PageIndex
44 If Me.frmPayments.SourceObject =vbNullString Then
46 Set LastSubform =Me .frmPayments
48 LastSubform.SourceObject =“frmPayments_sub”
50 End If
52 End Select
End Sub

Codebeoordeling

De magie gebeurt op de Change-gebeurtenis van het tabblad, die optreedt wanneer de gebruiker op elk tabblad van het besturingselement klikt. In het bovenstaande codevoorbeeld ben ik alleen geïnteresseerd in tabbladen met subformulieren, in dit geval drie tabbladen. (De techniek is nutteloos voor tabbladen zonder subformulieren).

Het statische LastSubForm-object, (regel 10), houdt het laatst gebruikte subformulier bij en stelt de SourceObject-waarde in op null in regel 16. Hierdoor wordt het formulier van het vorige tabblad uit het geheugen verwijderd en wordt het geheugengebruik tot een minimum beperkt wanneer de gebruiker uitschakelt naar een ander tabblad.

De select-instructie in regel 22 wordt gebruikt om te identificeren op welk tabblad is geklikt, stelt vervolgens het LastSubForm-object in op het subformulier in het tabblad en tenslotte stelt u het SourceObject van het subformulier in op regel 28. Als u dit doet, wordt het subformulier onmiddellijk in het geheugen geladen. De verwerking wordt herhaald voor de andere twee tabbladen van het besturingselement met subformulieren.

Houd rekening met

Om het geheugengebruik te minimaliseren, moet u de eigenschap SourceObject van elk tabblad in de ontwerpweergave instellen op een lege tekenreeks, anders worden alle subformulieren geladen, wat het doel van de techniek tenietdoet.

Het eerste tabblad van uw besturingselement zou moeten laden, omdat dit is wat uw gebruikers zullen zien wanneer ze uw formulier openen.

Voeg zo nodig meer select-statements toe als u deze techniek met meer tabbladen wilt gebruiken. Ik heb het gebruikt voor een tabbladbesturingselement met 8 tabbladen.

Als u geneste tabbladen heeft, moet u de aanpak herhalen voor elk tabbladbesturingselement.

Als uw subformuliernamen hetzelfde zijn als uw SourceObject-eigenschap, kunt u de code verder optimaliseren door een tekenreeksvariabele in de code te gebruiken.

Als je dit bericht leuk vindt, deel het dan!

Deel dit bericht op LinkedIn, Twitter en Facebook, het wordt zeer op prijs gesteld!

Kom naar de volgende Access with SQL Server-bijeenkomst op 8 mei om 18:30 uur CST, klik hier voor meer informatie.


  1. String-array retourneren en gebruiken op AutoCompleteTextview

  2. Aanroepnotatie voor PL/SQL-subroutines in Oracle Database

  3. Wat is een uitschieter bij een zoekopdracht en hoe u deze kunt oplossen?

  4. Activeer trigger bij update van columnA of ColumnB of ColumnC