Trasteando con campos de tipo Texto largo me topé con la propiedad «solo anexar» situada al final de la pestaña General.
Me intrigó esa opción porque no recordaba haberla visto antes. Pues resulta que está ahí desde la versión 2007 (cuando se cambió el formato de mdb a accdb).
El funcionamiento de ese campo es simple:
- No: Cuando se escribe en el campo se sustituye lo que hubiera previamente escrito
- Si: el valor previamente escrito se almacena en una tabla oculta interna (hidden history) con el historial de los valores que ha contenido ese campo.
¿Qué posibilidades abre ese campo?
Pues almacenar los diferentes valores de ese campo a modo de historial de cambios.
¿Cómo defino ese campo?
Fácil: para una campo de tipo Texto largo (los antiguos Memo) hay que activar la propiedad a Si.

Una vez hecho esto pasamos a la edición del registro.

Si hacemos clic con el botón secundario en el campo una vez validado el registro, aparece la opción Mostrar historial de columna.

Al acceder a esa opción el sistema muestra una ventana emergente con los distintos valores que ha contenido el campo para ese registro:

Si modificamos el campo para el registro:

Y volvemos a mostrar el historial:

Vemos como nos va mostrando los cambios que se han producido cronologicamente.
¿Cómo obtengo, por código, el historial de valores que ha contenido el registro?
Hay que utilizar el método ColumnHistory del objeto Application. Ese método exige 3 argumentos:
- Nombre de la tabla
- Nombre del campo de texto largo
- Criterio para localizar el registro
Ejemplo en la ventana de inmediato:
? Application.ColumnHistory("tblTextoLargo", "UltimaAccion", "Id=1")
¿Cómo veo el historial en un formulario?
Pues de la misma forma que en una tabla existe la opción con el botón secundario, en un control de un formulario también disponemos de esa opción.

Pero también podemos crear un control de tipo cuadro de texto dónde, el la propiedad ControlSource, invocaremos el método ColumnHistory. En este caso sustituiremos el Id del criterio por una llamada al campo del formulario.
=ColumnHistory(«tblTextoLargo»;»UltimaAccion»; «[Id]=» & Nz([Id];0))

Nota: el historial no es modificable desde el formulario. Es posible que internamente se puede hacer pero los registros están en tablas muy ocultas y no documentadas.
Caso práctico de utilización
Una aplicación práctica de esta funcionalidad es ir almacenando, a modo de log de cambios, los distintos valores que se hayan mostrado en algunos campos del registro. Para ello bastará manejar el evento AfterUpdate de los controles que queramos controlar para cambiar el valor de esa última acción. Si para el formulario de ejemplo queremos almacenar los distintos valores que ha sufrido el campo Fecha bastará con esta línea de código en el Fecha_AfterUpdate:
Me!UltimaAccion = Environ(«UserName») & » modifica Fecha poniendo valor 01/01/2027″

Consideraciones
Esta funcionalidad no se migra cuando se migra una base de datos Access a SQL Server.
Para eliminar todo el histórico manteniendo sólo el último valor introducido, basta con cambiar la propiedad de «solo anexar» a No y se perderá esa tabla (pide confirmación)
Conclusiones
Si bien no sustituye totalmente un log de cambios, es una alternativa «ligera» para no crear toda la estructura necesaria para documentar todos los cambios.
Tiene las limitaciones de no poder modificar los registros… lo que, al mismo tiempo, no deja de ser una ventaja.
Agradecimientos
Este artículo se ha confeccionado a partir de experiencia propia y lo leído en artículos de FMS (Luke Chung) y Isladogs (Colin Riddington)
Deja un comentario si te gustó
1 comentario
Jesus Mansilla -Mihura- · 17 junio 2026 a las 7:35 pm
Siempre es bueno echar un vistazo a las propiedades, comandos, parámetros … porque hay muchas cosas que desconocemos, a pesar de llevar ya casi 30 años usándolo.
Ésta en particular la conocía pero en su momento no la usé porque prefiero mantener esos datos en una tabla con los datos en diferentes registros, es más usable.
Pero bueno es recordarlo por si acaso nos surge una necesidad que podamos cubrir con ello.
Un saludo Xavi y a los lectores de tu interesante blog.