Ms-Access MDB: divide el campo Memo en varios campos de texto. (Para evitar la corrupción de datos)

StackOverflow https://stackoverflow.com/questions/826668

Pregunta

Utilizo una base de datos de Access utilizada como back-end.
Yo uso algunos campos Memo.

He aprendido que los campos Memo están sujetos a causar daños en la base de datos porque se almacenan en una página de datos separada; el registro solo contiene un puntero a la página de datos donde se almacenan los datos reales.

La mayoría de las veces solo necesito de 100 a 1000 caracteres o así, así que tuve una idea ...
Mi " brillante " (o no) la idea era dividir la nota en 4 o 5 campos de texto (pueden contener 255 caracteres cada uno).

¿Alguien ha hecho esto antes?
¿Algún problema conocido?
¿Sería este enfoque menos propenso a la corrupción de datos?

Gracias,
Jag

P.S.
1. He tenido problemas de corrupción antes.
2. Sé que lo mejor sería migrar a otro back-end, pero no es posible.

¿Fue útil?

Solución

La mejor solución es desagregar la página de datos de la nota de su registro adjunto. La forma de hacerlo es colocar los campos memo en una tabla separada. Puede hacerlo con una tabla 1: 1 (con múltiples notas en la tabla lateral), o, mejor, como una tabla 1: N con un campo de tipo memo. La última forma es la única forma de evitar por completo el problema del puntero de memo, aunque, como en la solución anterior, la corrupción de cualquier puntero de memo en la tabla de memo hace que los pierda todos.

Además, debe considerar por qué su base de datos está corrompiendo los punteros de las notas. Aparte de la sugerencia anterior, probablemente deberías considerar editar tus memos sin unir, aunque, dado que no parece que estés usando una interfaz de Access para tu Jet MDB, probablemente no sea un problema. Veo corrupción de notas de vez en cuando, pero no muy a menudo. Si lo ve a menudo, me sugiere que su aplicación está mal diseñada o que su entorno operativo es muy deficiente.

Otros consejos

Parece que desea tomar un campo de memo existente y cortarlo antes de colocarlo en la base de datos y luego pegarlo de nuevo cuando necesite mostrarlo.

Creo que te enfrentarás a un mundo de dolor si lo intentas. Me esforzaría más para cambiar el backend si esa fuera tu única opción :)

Aprovecharé la respuesta de DWF sugiriendo que hagas algo como lo que sugieres. Haga una tabla 1: N (lo llamaré UserNotes) con un campo de texto (frente a los memos con los que parece tener problemas).

Luego cree un subformulario con UserNotes como su fuente de registro y reemplace el campo memo con el subformulario UserNotes. Esto permite al usuario decidir dónde están los saltos de línea / párrafo dentro del contexto del campo de texto de 255 caracteres. (para la conversión, todavía tendrás que cortar los memos, pero eso es solo una operación de una sola vez)

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