Contenido inicial de un campo en un formulario


([N1] mirna) #1

Hello Foro!

Tengo una tabla llamada Inscripciones que tiene un enlace a maestro con una tabla de Períodos. Esta última tiene solo dos campos, nombre y un booleano que indica si es el período actual. Quisiera que en el formulario de Inscripciones, el campo Períodos tuviera como valor por defecto, el nombre del período que tiene en 1 ese campo booleano. ¿se puede?

Gracias mil!
Mirna


([N1] Pepeto) #2

Claro que se puede,
Puedes hacerlo de 2 formas:

Si quieres que siempre sea el mismo contenido inicial, debes poner 1 en el contenido inicial del campo, en la propia tabla (en el proyecto de datos)

Si quieres que el contenido inicial sea unicamente cuando abres el formulario, debes crear un evento ON_INIT y modificar el campo en el evento.

un saludo
José Luis
http://www.ascsl.com


([N4] mperez) #3

Si.

Pero en Velneo eso se hace en la base de datos. Valor inicial del campo de Inscripciones lo haces igual al valor del campo Booleano que tienes en Periodos, puesto que estara enlazado.

De esa forma lo tendrás no en ese sino en cualquier formulario y funcionará automaticamente. Es decir si cambias el periodo, te cambiara ese valor dependiendo de lo que tengas en ese periodo


([N4] innovadb) #4

Creo que Mirna pregunta otra cosa.

Si lo entendí bien, tienes que asegurarte de que en la tabla Periodos nunca hay mas de un registro con el check marcado, esto deberías hacerlo en un trigger de la misma tabla, de forma que si marcas el chek en un registro, se busque el anterior que lo tenia marcado y lo desmarque.

En segundo lugar necesitas poner como contenido inicial del enlace a maestro en la tabla inscripciones, una función que te devuelva el id del periodo actual, así ya te aparece el nombre del periodo en el formulario.

Por otra parte, si el periodo actual es siempre el ultimo, yo no pondría el check, y me limitaría a buscar el ultimo registro de la tabla, así te evitas el trigger.

Un saludo


([N1] mirna) #5

Gracias a todos!, efectivamente Innovadb tiene razón, eso es lo que necesito, ya me estaba asegurando de lo del check, que tampoco me funcionaba por cierto, pero me acabas de dar una idea, ya que el actual siempre va a ser el último y así es más facil: Ahora bien, justo lo que necesito es ayuda con esa función, ¿que debería poner en el contenido inicial para traerme el id, o preferiblemente el nombre del período actual? Aún no me familiarizo con eso de formulas y procesos…

Un montón de gracias nuevamnete
Mirna


([N4] innovadb) #6

No tienes que traer el nombre, si no el id para darle valor al campo enlazado. En el edit del formulario, el contenido es #PERIODO.NAME para mostrar el nombre.

En la caja de datos creas una función que hace lo siguiente:
Cargar lista PERIODOS , ID
Seleccionar ficha por posición, sysListSize
Leer ficha seleccionada
Set dato de retorno #ID

En el contenido inicial abres el editor de formulas y seleccionas la función creada, y te quedará mas o menos así:
fun:PERIODO_ACTUAL@TuCaja.dat()

Un saludo