Pregunta

Estoy en un cliente haciendo algunas correcciones rápidas a su aplicación de acceso. Fue un tiempo que tuve acceso, pero me estoy recuperando rápidamente. Sin embargo, he descubierto un problema interesante:

Para algunos informes, obtengo un " Registro borrado " error. He revisado los informes y parece que hay un problema con una tabla. Al abrir esa tabla, encuentro un registro donde todas las columnas están marcadas " # eliminado " ;. Así que obviamente, esta fila parece ser el culpable. Sin embargo, cuando intento eliminar esa fila, realmente no pasa nada. Si vuelvo a abrir la tabla, la fila todavía existe.

¿Hay una corrupción en la base de datos? ¿Cómo puedo eliminar este registro para siempre?

Editar: Es una versión de MS2000

Solución: Simplemente comprimir / reparar no funcionó. En cambio, convertí la base de datos al formato de archivo de 2003, lo que sirvió. He marcado la primera respuesta que sugiere comprimir / reparar, ya que me indicó la dirección correcta. Gracias!

¿Fue útil?

Solución

¿Ha probado la herramienta compacta / reparación Access integrada? Esto debería vaciar los registros eliminados de la base de datos.

La ubicación exacta varía según la versión de Access que esté ejecutando, pero en Access 2003 está en Herramientas > Utilidades de base de datos > Base de datos compacta y de reparación. Algunas versiones anteriores de Access tenían dos herramientas separadas, una para compactar y otra para reparar, pero se accedía a ellas desde una ubicación similar. Si están separados en la versión que tiene el cliente, debe ejecutar ambos.

Esto debería ser una operación no destructiva, pero sería mejor probar esto en una copia del archivo MDB (disculpas por afirmar lo obvio).

Otros consejos

Tony Toews, Access MVP, tiene una guía completa de corrupción:

Preguntas frecuentes sobre Microsoft Access MDB corruptos

  • Algunos síntomas de corrupción
  • Determinar la estación de trabajo que causó la corrupción
  • Causas de corrupción
  • Para recuperar sus datos

Como nota aparte, decompile es muy útil para resolver sucesos impares Al codificar y para mejorar los tiempos de arranque.

también puede probar esta utilidad de línea de comandos

// andy

La compactación y la importación no solucionarán el problema del error reportado, que es claramente un puntero dañado para un campo memo. Lo único que puede hacer es eliminar y volver a crear el registro que está causando el problema. Y debe encontrar formas de editar los datos de las notas (o eliminar los campos de notas, ¿realmente necesita más de 255 caracteres o no?) Que no lo exponga a riesgos de corrupción. Eso significa evitar los controles enlazados en los formularios de los campos memo.

En su lugar, use un cuadro de texto independiente y, en el evento OnCurrent del formulario, asigne los datos actuales de la fuente de registros subyacente del formulario:

  Me!txtMyMemo = Me!MyMemo

Para guardar las ediciones en el control independiente, use el evento AfterUpdate del control:

  Me!MyMemo = Me!txtMyMemo
  Me.Dirty = False        ' save the whole record

¿Por qué los campos de notas están sujetos a corrupción? Debido a que no se almacenan en la misma página de datos que los campos que no son memo, sino que todo lo que está en la página de datos principal del registro es un puntero a alguna otra página de datos (o un conjunto de páginas de datos si es una gran parte de datos) donde se almacenan los datos reales de la nota. Si no se hiciera de esta manera, un registro con una nota en él superaría muy rápidamente la longitud máxima de registro.

El puntero se puede corromper con relativa facilidad, más a menudo por un problema fatal durante la edición en un control enlazado. La edición con un control independiente no elimina el problema por completo, pero significa que el tiempo en el que está expuesto al peligro es muy, muy corto (es decir, el tiempo que tardan en ejecutarse esas dos líneas de código en el evento AfterUpdate) .

Aparte de las opciones ya publicadas anteriormente, también he usado otro método simple: simplemente cree un nuevo archivo MDB e importe todos los objetos del corrupto. No te olvides de obtener objetos del sistema y / u ocultos cuando vayas por este camino.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top