jueves, 24 de abril de 2008

USO DE CONSTANTES EN SQL


La cláusula 'Parameters', tan injustamente infrautilizada por los programadores de Access, además de dar la seguridad de que el valor que pasamos como parámetro, va a ser tratado adecuadamente según el tipo de dato, podemos emplearla para definir constantes a usar dentro de una sentencia sql.
Veamos un ejemplo (sacado de una pregunta en las News) :
Obtener el número de semana del mes de una fecha dada, por ejemplo para 31 de Marzo de 2008.

Select ((Day(#03/31/2008#) - WeekDay((#03/31/2008#,2))\7)+Abs(((Day((#03/31/2008#) - WeekDay((#03/31/2008#,2))Mod 7) > 0)+1

Ha sido necesario escribir cuatro veces la fecha para obtener el valor : como mínimo tedioso ...

Vamos a usar la propiedad 'Default' de un parámetro (no nos va a preguntar el valor, cuando ejecutemos la consulta), para crear algo parecido a una constante :

Parameters F DateTime=#03/31/2008#;
Select ((Day(F) - WeekDay(F,2))\7)+Abs(((Day(F) - WeekDay(F,2))Mod 7) > 0)+1

... más corto, más legible, más cómodo, ...

Ramon Poch. Terrassa, a 01/04/2008.