Establecer como valor determinado de un campo el contenido de otro de la misma tabla

Tengo una tabla en la que quiero establecer como valor predeterminado de un campo Actualizar (tipo texto) el contenido del campo ID (autonumérico) de esa misma tabla. ¿Se puede hacer poniendo alguna expresión en el valor predeterminado de ese campo Actualizar?.

1 respuesta

Respuesta
1

Lo que pides no se puede hacer directamente a través del establecimiento de un valor predeterminado en las propiedades del campo, en la tabla.

Además de lo anterior, el hecho de que intentes guardar un valor numérico en un campo tipo texto, aunque en principio no debería ser nada traumático, quizá en alguna operación te podría dar problemas, sobretodo si no hay coincidencia en el tamaño de los campos.

Por otra parte, si ya tienes el valor del campo Id, meter un dato duplicado no tiene sentido en lo que es la filosofía de Access (diríamos que es tener una BD no optimizada). Si necesitas ese valor, a través de consultas, por ejemplo, podría conseguirse lo mismo que teniendo dos campos con el mismo valor.

Finalmente, por código sí se puede hacer lo que pides, si es que sigues queriendo tener campos duplicados, siempre y cuando trabajes a través de formulario. Si trabajas directamente con la tabla no puede hacerse.

Lamento no poder darte mejores noticias.

Gracias Neckkito por tu aclaración; ya me temía que el intentarlo directamente en el valor predeterminado del campo podría no ser posible (no encontraba nada por Internet). Respecto al hecho de querer duplicar el valor de ID en otro campo de texto está motivado (a lo mejor me estoy complicando) en que en el formulario ‘ResultadoMulticonsulta’,
con origen en una consulta en la se pueden establecer filtros en cualesquiera de los campos de que se compone la tabla, no puedo hacer modificaciones en los registros que se muestran en ese formulario (me sale que “el campo xxx se basa en una expresión y no se puede modificar”; ello es debido a que cada campo del formulario ‘ResultadoMulticonsulta’ tiene su origen en la citada consulta pero el nombre del campo en la misma viene
establecido como xxx: Nz([NombreTabla]![NombreCampo];""); de esta manera evito los problemas que surgen en las consultas con los campos vacíos.
Para intentar subsanar este error he creado un comando en ‘ResultadoMulticonsulta’ para que me cierre este formulario y me abra otro (con origen directamente en la tabla)
coincidiendo con el campo ID (el autonumérico de la Tabla) utilizando el código DoCmd.OpenForm "NombreFormulario",acNormal, , "[ID]=" & "'" & Me![ID] &"'". Esto me generaba un error ya que me dice que no coinciden los tipos de datos en la expresión de criterios (debe ser porque el ID del form ‘ResultadoMulticonsulta’ es tipo texto mientras que el ID del form que quiero abrir (al depender directamente de la Tabla) es autonumérico. De ahí que la solución que he pensado es crear un nuevo campo tipo texto en la tabla (p.e. IDtxt, indexado sin duplicados) que copie el mismo valor de ID para que los tipos de datos sean coincidentes.
Mediante formulario lo he intentado con este código que he visto por algún foro:
DoCmd.SetWarnings
False
DoCmd.RunSQL "INSERT INTO NombreTabla (IDtxt) VALUES (ID)"
DoCmd.SetWarnings True


Lo he puesto en varios eventos del formulario con origen directo en la tabla (Después de
actualizar, Después de insertar, al activar registro) pero no me funciona; lo que hace es crearme un nuevo registro copiando el ID del registro anterior. Te agradecería alguna ayuda de cómo hacerlo mediante formulario. Perdona toda este rollo y gracias

Tengo que mirarme con calma tu explicación porque es un poco confusa para mí. Sin embargo, ¿por qué no pruebas lo que comentas de abrir el formulario utilizando esta otra expresión:

DoCmd.OpenForm "NombreFormulario",acNormal, , "[ID]=" & Me![ID]

¿

?

A ver si así te funciona.

Ya me dirás.

Neckkito

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas