¿Problemas con campos en el subformulario, del formulario principal?

Tengo una duda que no se como resolver, ¿Tu cómo lo harías?

Tengo una tabla llamada TRABAJOS:

IDTrabajos

Fecha

IDOperario

IDdepartamento

Y otra tabla llamada VIAJES:

IDviaje

IDTrabajos (Relación uno a varios con la Tabla trabajos)

Peso

¿Precio?

Ahora creo un formulario/subformulario con las dos tablas donde los campos vinculados sean IDtrabajos.

Ahora bien aquí es donde esta la cuestión:

1) Para realizar código en un campo del subformulario y uno de los criterios esta en el formulario principal ¿necesito qué ese campo también este en el subformulario?, sino es así esta claro que llamar a un campo del subformulario es fácil por ejemplo Me. Peso, pero como llamo por ejemplo a la Fecha que esta en el formulario principal.

2)Por otro lado una opción, es crear un campo en el subformulario, por ejemplo fecha y/o hacer una relación y vincularlo como IDtrabajos, pero el problema es que solo deja vincular 3 campos e igual necesito coger más. Otra opción es poner como valor predeterminado del campo fecha del subformulario igual al campo fecha del formulario principal. ¿Pero si cambio la fecha una vez ya están registrados los registros del subformulario, no los cambia en el subformulario, solo los nuevos que se creen?

Resumiendo que es mejor y como se hace, para calcular un valor por código de un subformulario, donde alguno o varios de los criterios(campos) para calcularlo están en el formulario principal. O pasar esos campos al subformulario (cosa que no se como es mejor hacerla) o llamar a los campos del formulario principal que si están vinculados (indirectamente), pero no es el campo de viculación (cosa que tampoco se como se hace).

1 respuesta

Respuesta
1

Yo lo que haría sería vincular el formulario con el subformulario únicamente por el campo IDTrabajos, y los otros campos que necesites los "vinculas" mediante código.

Mirate este enlace, que te indica cómo hacer referencia a un campo de un subformulario desde un formulario y viceversa:

<a>http://www.mvp-access.es/emilio/como/sintaxisparasubformularios.pdf</a>

Por ejemplo, para el campo fecha, le puedes poner en el evento "Después de actualizar" algo así, para que se te actualicen los datos que ya tienes: Me.Subformulario.Control=Me.Fecha

O mejor aún, una consulta de actualización de la fecha de los registros que tienes el mismo IDRegistro.

Y en el subformulario, le puedes poner, en el evento Al activar registro, que el campo fecha sea igual al campo fecha del formulario, algo así:Me.Fecha=Me.Parent.Fecha

A ver si con estas indicaciones solucionas, si no, pregunta de nuevo.

Hola amigo te he dejado un enlace para que te bajes la base de datos

http://www.filebig.net/files/qgnDKeqWEp

El caso es que si pongo Me.Subformulario.Control=Me.Fecha, solo me actualiza el registro activo del subformulario (solo un registro) cuando igual tiene 5 o más y debería actualizar todos los registros

He intentado hacer la otra opción que es una consulta de actualización de la fecha de los registros que tienes el mismo IDRegistro, pero no se como hacer el código, a ver si puedes echar una mano. Gracias

A por cierto, esta muy bien la hoja que me enviaste de Sintaxis para Formularios/Subformularios, pero lo que no entiendo por ejemplo según tu la escritura para referirse al control del subformulario cuando estas en el formulario seria

Me.CTviajes_Subformulario.fecha=Me.Fecha

Y según el papel seria Me!CTviajes_Subformulario.Form!Fecha=Me.fecha

No entiendo lo que esta bien o esta mal, y si esta bien lo tuyo porque en el papel pone la segunda opción

En el formulario, en el evento después de actualizar de Fecha, le pones este código, que es la consulta de actualización que te decía:

Private Sub Fecha_AfterUpdate()
Dim miFecha As Date
Dim miSQL As String
miFecha = Me.Fecha
miSQL = "UPDATE Tviajes SET Tviajes.Fecha = #" & Format(miFecha, "mm/dd/yyyy") & _
"# WHERE (((Tviajes.IDTrabajo)=" & Me.IdTrabajo & "))"
DoCmd.SetWarnings False
DoCmd.RunSQL miSQL
Me.Refresh
DoCmd.SetWarnings True
End Sub

Con esto te sobra la consulta de actualización que tienes hecha.

El evento del subformulario, está bien, con eso lo que consigues es que cada vez que te coloques en un registro del subformulario te ponga la fecha que tienes en el formulario.

En cuanto al código, el error fue mio, al contestarte con prisas, perdón...

Te dejo también la BD con los cambios que te comenté:

<a>http://www.filebig.net/files/BtRSNZAc7q</a>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas