ACC2000: Abrir y cerrar un formulario cientos de veces notablemente afecta a los recursos del sistema

Id. de artículo: 248910 - Ver los productos a los que se aplica este artículo
Moderada: Requiere macro básico, codificación y las capacidades de interoperabilidad.

Este artículo hace referencia a una base de datos de Microsoft Access (.mdb) y a un proyecto de Microsoft Access (.adp).

Expandir todo | Contraer todo

En esta página

Síntomas

En una base de datos de Microsoft o un proyecto con Microsoft Windows 95 o Microsoft Windows 98 que un formulario se abre y cierra cientos de veces durante la misma sesión, el sistema se convierte en tardan en responder y puede ver los mensajes de error siguientes:
No hay memoria suficiente para actualizar la presentación. Cierre algunos programas que no utilice y vuelva a intentarlo.
- y -
Microsoft Access no pudo crear una ventana. El sistema está fuera de recursos o memoria. Cierre algunos programas que no utilice y vuelva a intentarlo.

Para obtener más información sobre cómo liberar memoria, busque el índice de Ayuda de Microsoft para ' memoria, solución de problemas '.

Causa

Cada vez que un formulario de Access se abren y cierran en Windows 95 o Windows 98, una pequeña cantidad de recursos GDI del sistema utilizados para fuentes es tomada y no publicada. Esto va inadvertido en la mayoría de situaciones; sin embargo, si tiene una base de datos que permanece abierta durante largos períodos de tiempo, como en un 7 x 24 entorno y un formulario en esa base de datos es repetidamente abierto y cerrado quizás cientos de veces, puede que finalmente vea problemas de rendimiento o errores de memoria insuficiente. El número de veces que puede abrir un formulario antes de ver este comportamiento varía porque depende de la complejidad de la forma y qué otros programas pueden ser ejecutar en Windows.

Nota : el número de veces que se pueden abrir y cerrar un formulario antes de ver estos síntomas es menor para algunas versiones internacionales de Access 2000 que son la fuente más intensivo, como el chino; por lo tanto, se puede ver este problema con más frecuencia en estas versiones.

Solución

Para resolver este problema, obtenga Microsoft Office 2000 Service Release 1/1a (SR-1/SR-1a).

Para obtener SR-1/SR-1a, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
245025OFF2000: Cómo obtener e instalar Microsoft Office 2000 Service Release 1/1a (SR-1/SR-1a)
Para solucionar temporalmente este problema, libere recursos del sistema. Para ello, cierre todas las instancias de Access y vuelva a abrir la base de datos.

Nota : este problema no ocurre en Windows NT o Windows 2000.

Si está automatizando la apertura y cierre de un formulario repetidamente con el método SendKeys , debería utilizar los métodos DoCmd.OpenForm y DoCmd.CloseForm en su lugar. Estos métodos no hacen que este comportamiento.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.
Este problema se ha solucionado en la revisión SR-1/SR-1a de Microsoft Office 2000.

Más información

Precaución : Si sigue los pasos descritos en este ejemplo, modificará la base de datos de ejemplo Neptuno.mdb. Quizás desee hacer una copia de seguridad del archivo Neptuno.mdb y realizar estos pasos sobre una copia de la base de datos.

Pasos para reproducir este comportamiento

  1. En un equipo que ejecuta Windows 95 o Windows 98, abra la base de datos de ejemplo Neptuno.mdb.
  2. En el menú Herramientas , elija macro y, a continuación, haga clic en Editor de Visual Basic .
  3. En el Editor de Visual Basic, escriba o pegue el siguiente código:
    Function memFormTest(stTestForm As String, intIter As Integer)
    
        Dim i As Integer
        
        DoCmd.SelectObject acForm, stTestForm
        
        For i = 1 To intIter
            Debug.Print "Opening form " & stForm & " for the " & i & " time"
            SendKeys "{F11}", False: DoEvents
            SendKeys "%o", False: DoEvents
            SendKeys "^{F4}", False: DoEvents
        Next
        
    End Function
    					
  4. En el menú archivo , haga clic en Guardar Neptuno .
  5. Deje abierto el Editor de Visual Basic y, a continuación, vuelva a Access. Abra el formulario categorías.
  6. Con el formulario categorías como el formulario activo, presione ALT+F11 para volver al Editor de Visual Basic.
  7. Escriba la línea siguiente en la ventana Inmediato y presione ENTRAR:
    ?memFormTest("Categories","2000")
    						
    , vea acceso ahora de apertura y cierre el formulario categorías.

    importante : dejar el equipo undisturbed hasta que vea un error. No se toquen el teclado o mouse (ratón).
  8. Una vez que vea uno de los mensajes de error que se indican en la sección "Síntomas", haga clic en Aceptar unas cuantas veces ver cada uno de los dos errores enumerados en la sección "Síntomas".
  9. Después de ver los errores, presione CTRL+INTER hasta que el procedimiento finaliza la ejecución.
  10. En el Editor de Visual Basic, desplácese hacia abajo hasta la parte inferior de la ventana Inmediato. Hay ve el número de veces que ha tardado la pérdida de recursos del sistema para convertirse en graves.

    Nota : este número puede variar de un sistema a sistema.

Propiedades

Id. de artículo: 248910 - Última revisión: lunes, 25 de noviembre de 2002 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Access 2000 Standard Edition
Palabras clave: 
kbmt kbbug kberrmsg kbpending KB248910 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 248910

Enviar comentarios