Pero para eso necesito tener todos los días de todos los años generados?
Afortunadamente en la mayoría de ocasiones la respuesta ha sido NO.
No es necesaria una tabla maestra Años y una submaestra Días para una agenda.
Lo que suelo hacer es generar al vuelo, en una tabla en memoria los registros que necesito mostrar como calendario. Es como las famosas tablas "Dummy" de Fran, pero para fechas.
Dicha tabla en principio sólo necesita un campo Código autonumérico y un campo Fecha. En ella daremos de alta por proceso las fechas compredidas en el intervalo fecha_desde - fecha_hasta necesarias para la visualización del periodo de la agenda deseado.
Adicionalmente podemos disponer diversos campos fórmula alfabética que nos muestren cada fecha ya formateada según las necesidades.
Veamos algunas posibilidades de fecha formateada en Velneo.
Supongamos una fecha; 2-01-2008
Utilizando la función fFormatFecha(fecha, szFormato) donde fecha es el campo o variable fecha que vamos a transformar y szFormato es la subcadena de formato que vamos a aplicar a esa fecha para darle la forma deseada, podemos obtener una enorme diversidad de formas para la fecha.
Disponemos de los siguientes formateadores:
&d -> Visualiza el día del mes con uno o dos dígitos, según corresponda (1 - 31)
En nuestro caso sería: 2
&e -> Visualiza el día del mes siempre con dos dígitos (01 - 31)
En nuestro caso sería: 02
&L -> Visualiza, en Español, el día de la semana en texto; Lunes, Martes, ...
En nuestro caso sería: Miércoles
&A -> Visualiza, en Inglés, el día de la semana en texto; Monday, Tuesday, ...
En nuestro caso sería: Wednesday
&l -> (L minúscula). Visualiza, en Español, el día de la semana abreviado a tres letras; Lun, Mar, ...
En nuestro caso sería: Mie
&a -> Visualiza, en Inglés, el día de la semana abreviado a tres letras; Mon, Tue, ...
En nuestro caso sería: Wed
&m -> Visualiza el número del mes con uno o dos dígitos, según corresponda (1 - 12)
En nuestro caso sería: 1
&n -> Visualiza el número del mes siempre con dos dígitos (01 - 12)
En nuestro caso sería: 01
&K -> Visualiza, en Español, el mes en texto; Enero, Febrero, ...
En nuestro caso sería: Enero
&B -> Visualiza, en Inglés, el mes en texto; January, February, ...
En nuestro caso sería: January
&k -> Visualiza, en Español, el mes en texto abreviado a tres letras; Ene, Feb, ...
En nuestro caso sería: Ene
&b -> Visualiza, en Inglés, el mes en texto abreviado a tres letras; Jan, Feb, ...
En nuestro caso sería: Jan
&j -> Visualiza el día del año de un campo fecha (1 - 366)
En nuestro caso sería: 2
&u -> Visualiza el día de la semana en número dentro del rango 1 a 7 siendo 1=Lunes
En nuestro caso sería: 3
&w -> Visualiza el número del día de la semana dentro del rango 0 a 6 siendo 0=Domingo
En nuestro caso sería: 3
&W -> Visualiza el número de la semana del año dentro del rango 0 a 51
En nuestro caso sería: 1
&U -> Visualiza el número de la semana del año dentro del rango 1 a 52
En nuestro caso sería: 1
&x -> Formatea la fecha en la forma que el sistema esté configurado
En mi caso sería: miércoles, 02 de enero de 2008
&Y -> Visualiza el año con todos sus dígitos
En nuestro caso sería: 2008
&y -> Visualiza el año sin siglo con uno o dos dígitos, según corresponda
En nuestro caso sería: 8
&z -> Visualiza el año sin siglo siempre con dos dígitos
En nuestro caso sería: 08
Todos estos formateadores también están disponibles al seleccionar un campo fecha en el editor de fórmulas, dentro del apartado Subcadena de formato (opcional) - Opciones.
Al ser una subcadena, los formateadores admiten cualquier símbolo que podamos teclear dentro de la cadena.
Así, por ejemplo, podríamos mostrar nuestra fecha 2-01-2008 como 08/01/02, Wed. usando la función siguiente
fFormatFecha(2/01/2008, "&z/&n/&e, &a.")
Fácil, como todo en Velneo.
Ahora veamos algunas combinaciones de funciones que nos facilitarán mucho la vida a la hora de trabajar con fechas.
En qué semana del año me encuentro?
fFormatFecha( fHoy(), "&U")
En qué día del año me encuentro?
fFormatFecha( fHoy(), "&j")
Qué día de la semana es el primer día del mes actual?
fFormatFecha( fFecha( 1 ), "&L")
Y el último día del mes que viene?
fFormatFecha( fFecha( fDiasDelMes( fMes( fHoy() ) + 1, fAño( fHoy() ) ), fMes( fHoy() ) + 1 ), "&L")
Y así podríamos seguir complicándolo o simplificándolo, depende de cómo se mire, tanto como deseemos o necesitemos.
Espero que esto ayude a resolver algunas dudas al respecto de las fechas en Velneo.
Life is Soft!
No hay comentarios:
Publicar un comentario