Calcular la ultima fecha en subformulario

En un formulario donde tengo los datos personales de profesores o discursantes tengo incrustado un subformulario con las temas que tienen. La estructura de este subformulario es: Codigo_Tema, Tema y Observaciones.

De momento he salido del paso haciendo una consulta donde en el campo fecha lo filtro por "Max" y me da la última fecha cada tema. He hecho un subformulario con esta consulta y lo he incrustado en el formulario principal. El inconveniente es que tengo que estar buscando en el subformulario.

Lo ideal o lo me resultaría práctico es que en el mismo subformulario donde introduzco los temas del discursante me aparezca también la última vez que se dio ese tema.

1 respuesta

Respuesta
1

No dices donde está el campo fecha, si en la tabla origen del formulario o en la tabla origen del subformulario, pero supongamos que hay una tabla llamada Agenda, con los campos Orador, tema, Fecha, etc y otra tabla llamada Temas, con códigoTema, tema, observaciones.

Sigamos suponiendo que el formulario se llama también Agenda y el subformulario Temas.

En el subformulario a la derecha de observaciones, o a la derecha de Tema, pon un cuadro de texto y en sus propiedades-datos-origen del control ponle

=DÚltimo("fecha";"agenda";"tema=forms!agenda!temas.form!tema")

Y para que te aparezca el valor inmediatamente, en las propiedades del cuadro de texto temas en Eventos-después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe

Docmd. Runcommand accmdsaverecord

Esto es porque cuando escribas en un registro nuevo el cod tema, tema, el registro todavía no se ha completado y por tanto "no existe", por lo que no puede aún calcular cual es el ultimo.

En primer lugar, gracias Icue por tu rápida respuesta.

Tienes razón no he aportado todos los datos necesarios. Te lo explico ahora, porque he intentado aplicar el código que me has proporcionado sustituyendo los nombres de las tablas y campos, pero no me funciona, supongo que porque no todos los campos están en la misma tabla y habrá que cambiar algo del código. Esto es lo que he puesto:

=DÚltimo("Fecha";"T-Planificacion-Detalle";"NºBosquejo=forms!T-Planificacion-Detalle!Orador_Discursos_Detalle.form!NºBosquejo")

Para mi la tabla que  tu llamas Agenda es T-Planificación-Detalle y la tabla que llamas Temas es Orador_Discursos_Detalle. Has tenido buena intuición, pero algo no acaba de encajar.

Bueno, no me enrollo mas y te explico:

Las tablas que intervienen son:

Orador_Discursos_Detalle (en esta tabla se guardan los temas que tiene cada orador. Los campos son: Codigo_Tema, Tema y Observaciones)

T-Planificacion-Detalle (en esta tabla se guardan los temas que se dan cada semana. Los campos son: Fecha, Orador, Tema, Observaciones)

Espero que sea suficiente, si necesitas algún detalle más, ya me dirás.

Saludos.

Las fiestas no son buenas. El día 1 se usa para decir que no se van a repetir los excesos de fin de año, que luego se tarda un par de días en recuperarse. Dicho esto comienzo

Supongo que lo que quieres es que cuando vayas a poner un número de bosquejo te diga cual fue la última vez que escribió ese número.

He tratado de reproducir las tablas tal como las tienes. Si anotas un registro, en cuanto escribas ese número de bosquejo te aparecerá

Como puedes ver, al ser el primer registro con ese numero 1234 la última fecha es la misma.

Si rellenas otro registro con distinto número, 2222, como también es el primero con ese número, la fecha que te aparece es la misma que escribes.

Pero si en un nuevo registro repites el nº Bosquejos, como es el caso del registro nº 3, en el cuadro de la derecha, te aparece la última vez que se puso.

En un registro, hasta que no "rellenas" el último cuadro de texto ese registro todavía "no existe". Por tanto aunque le pongas en el cuadro de texto Para aparecer fecha(que yo lo tengo como texto11) lo de Dûltimo... no lo hace. Por eso te aconsejo que en Diseño del formulario,, en las Propiedades del cuadro de texto NºBosquejo-en Eventos-Después de actualizar, crees un procedimiento de evento y entre Private Sub y End Sub escribe,  lo del centro

Private Sub NºBosquejo_AfterUpdate()
Texto11 = DLast("fecha", "T_Planificacion_Detalle", "nºBosquejo=forms!T_Planificacion_Detalle!nºbosquejo")
End Sub

Así, cuando escribas un nº bosquejo y pulses Enter o tabulador, en el cuadro de texto te aparecerá la última fecha.

Si las fechas no las vas a poner "ordenadas", entonces en vez de Dlast puedes poner Dmáx

Si no me he explicado bien, y quieres el ejemplo, mándame un mensaje a [email protected] y te lo mando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas