Tarea B: Mejorando la numeración del registro
El sistema anterior es suficiente para dar soporte para un Registro de entrada y salida, pero podemos mejorarlo bastante. Por ejemplo, ahora mismo tenemos que introducir el número de entrada a mano; por lo tanto, para cada vez que queramos hacer una nueva, tenemos que saber cuál era el último número. Parece un poco lioso, ¿no?. Lo mejor sería que la aplicación autonumerase la entrada cada vez que creásemos una nueva. Pues...¡manos a la obra!.
tipo [Entrada] es contenedor [Datos generales] es formulario [Número] es timbre -certificado.valor = [&Valor_secuencia]; -certificado.secuencia.nombre = "STR$ENTRADA"; -certificado.secuencia.longitud = 4; [Fecha] es fecha -edicion.modo = copia; -edicion.valor = [Número].[&Fecha]; ... fin fin
Como podrás ver, hemos cambiado el tipo del campo #úmero de texto a timbre. En ODL, un campo timbre es un tipo de campo que tiene la propiedad de ser autonumerado.
En el atributo certificado.valor especificamos el valor que aparecerá en el campo #úmero cuando la entrada se autonumere.
En el atributo certificado.secuencia.nombre especificamos el nombre de la secuencia en la base de datos.
Por último, en el atributo certificado.secuencia.longitud especificamos cuántos dígitos queremos que tenga la secuencia. En nuestro ejemplo, al poner longitud 4, el primer número será 0001, el segundo 0002, etc.
También, hemos cambiado el tipo del campo Fecha de texto a fecha. Además, hemos configurado este campo para que tome la fecha en que se numera el objeto. ¿Cómo? El atributo edicion permite configurar diversas opciones de comportamiento para los campos de un formulario (no importa de qué tipo sean). Al campo fecha le asignamos valor mediante las declaraciones edicion.modo y edicion.valor.
En ODL, un campo de un formulario puede tener cuatro modos de edición:
- normal: es el modo de edición por defecto. Permite que los usuarios editen los
campos libremente.
- copia: especifica que el valor del campo se recalcula cuando cambiar el valor de
otros campos, de acuerdo a la expresión indicada en el atributo edicion.valor.
- sugerencia: especifica que el valor se calcula en base al valor de otros campos,
de acuerdo a la expresión indicada en el atributo edicion.valor, pero sólo cuando lo desea el usuario. El modo copia y sugerencia son muy parecidos; la diferencia radica en que el primero es automático y el segundo bajo petición del usuario.
- referencia: tiene el mismo comportamiento que un campo de copia, con la
diferencia que este campo es de sólo lectura y no se almacena en el sistema; se utiliza únicamente para mostrar datos dinámicos al usuario. En el ejemplo anterior, al campo Fecha se le asigna la fecha actual cuando cambia el valor del campo #úmero (la fecha la obtenemos a partir de la propiedad Fecha que tienen los campos timbres, que nos devuelven la fecha en la que fue emitido el timbre). Compilamos, actualizamos y comprobamos los cambios.