sql >> Base de Datos >  >> RDS >> Access

Cómo corregir el "recurso del sistema excedido" al migrar a Windows 10

Cómo solucionar los "recursos del sistema excedidos" al migrar a Windows 10

Mensaje de error de recursos del sistema excedidos

Últimamente hemos visto un aluvión de clientes que obtienen "Recursos del sistema excedidos" al migrar a Windows 10, a pesar de que el sistema funcionaba bien en versiones anteriores de Windows. En algunos casos, hemos rastreado el problema hasta aplicaciones que usan muchos subformularios en un control de pestañas, por lo que voy a describir una técnica que evitará el problema en aquellos casos en los que cada pestaña aloja un subformulario.

Las pestañas crean una excelente interfaz de usuario:hasta que se agoten los recuerdos

Justo el otro día estaba trabajando con la aplicación de un cliente que tenía tres niveles de pestañas profundos:pestañas dentro de pestañas, todas las cuales se cargaban con subformularios cada vez que se abría el formulario. La aplicación funcionó bien en Windows 7, pero causó mensajes de error de "Recursos del sistema excedidos" en Windows 10. La solución es cargar el subformulario solo cuando el usuario hace clic en la pestaña y descargar el subformulario cuando hace clic en otra pestaña.

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 End If
32 Case Me.Facturas.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

Revisión de código

La magia ocurre en el evento Cambiar de la pestaña, que ocurre cuando el usuario hace clic en cada pestaña del control. En el ejemplo de código anterior, solo me interesan las pestañas que tienen subformularios, en este caso, tres pestañas. (La técnica es inútil para pestañas sin subformularios).

El objeto estático LastSubForm, (línea 10), realiza un seguimiento del último subformulario utilizado y establece su valor de SourceObject en nulo en la línea 16. Esto dejará libre el formulario de la pestaña anterior de la memoria y mantendrá el uso de la memoria al mínimo cuando el usuario apague a otra pestaña.

La declaración de selección en la línea 22 se usa para identificar en qué pestaña se hizo clic, luego establecer el objeto LastSubForm en el subformulario contenido en la pestaña y finalmente configurar el SourceObject del subformulario en la línea 28. Al hacerlo, se cargará inmediatamente el subformulario en la memoria. El procesado se repite para las otras dos pestañas del control con subformularios.

Tenga en cuenta

Para minimizar el uso de la memoria, debe establecer la propiedad SourceObject de cada pestaña en cuestión en una cadena vacía en la vista de diseño; de lo contrario, se cargarán todos los subformularios, lo que anula el propósito de la técnica.

La primera pestaña de su control debería cargarse ya que es lo que verán sus usuarios cuando abran su formulario.

Simplemente agregue más declaraciones de selección según sea necesario si necesita usar esta técnica con más pestañas, la he usado para un control de pestañas que tenía 8 pestañas.

Si tiene pestañas anidadas, deberá repetir el método para cada control de pestaña.

Si los nombres de sus subformularios son los mismos que su propiedad SourceObject, puede optimizar aún más el código utilizando una variable de cadena en el código.

Si te gusta esta publicación, ¡compártela!

Comparta esta publicación en LinkedIn, Twitter y Facebook, ¡se lo agradeceremos mucho!

Acompáñeme en la próxima reunión de Access con SQL Server el 8 de mayo a las 6:30 p. m. CST. Para obtener más detalles, haga clic aquí.