Thursday, May 22, 2008

Null - nothing

VB.NET y C# son lenguajes de programación de la plataforma .NET que más se utilizan y no es mentira que cuando se programa con uno durante mucho tiempo y luego quiere pasar a otro como que se confunde jejeje... a mi me pasa con los puntos y comas :S Cuando estoy en C# olvido terminar la sentencia con un punto y coma ah y las llaves, méndigas llaves, jejeje.

Ya, la vaina es que quería hacer un cambio de un pedazo de código de C# a VB.NET en cuanto al "null" y el "nothing", por si alguien está en las mismas, aquí les dejo la solución

En C#


while (objeto != null
{
//aqui el cuerpo
}

if (objeto == null)
{
}


En VB.NET

While Not objeto Is Nothing
'aqui el cuerpo
End While

If ojeto Is Nothing

End If

Donde 'objeto' es un variable cualquiera.

Sencillo, no?

Wednesday, May 21, 2008

Cómo desglosar Un rango De fechas

Hace un poco más de un mes cuando empezé a hacer mis consultas en SQL para mis reportes, me encontré con que necesita desglosar un rango de fechas para mostrar el horario de los empleados. Bueno, lo primero que me dijeron es: eso se soluciona utilizando TABLAS TEMPORALES. Una tabla temporal se la usa para guarda datos que sólo sirven para el proceso que se está realizando. Sólo se la tiene disponible en ejecución.

Ok, resulta que como datos sólo tengo un rango de fechas: del '01/05/2008' al '31/05/2008' y lo que se pretende hacer es desglosarlo... o sea
01/05/2008
02/05/2008
03/05/2008
04/05/2008
...
31/05/2008

Ok, eso es lo que voy a mostrarle... y cómo usar esa tabla dependerá de sus requerimientos.

1) Creamos un Stored Procedure (Un stored procedure o procedimiento almacenado es un programa (o función) el cual está físicamente almacenado en una base de datos)


CREATE PROCEDURE spDias
@fechaini datetime,
@fechafin datetime
AS
BEGIN
create table #Fecha
(codigo int, fecha datetime)
declare @dif as int
declare @cont as int
declare @fechaact as datetime
set
@dif=datediff(day,@fechaini,@fechafin)
set
@cont=1
set @fechaact=@fechaini-1
WHILE (@cont<=@dif+1) BEGIN
set @fechaact=dateadd(day,1,@fechaact)
INSERT INTO #Fecha VALUES (@cont,@fechaact)
set @cont=@cont+1
END

select * from #Fecha
END


Ok, copian ese código en el editor de consultas del Microsoft SQL Server Management Studio o del que estén usando, en mi caso yo utilizo el que mencioné.

Crear una tabla temporal es casi similar a una tabla normal con la diferencia que se le antepone un numeroal (#) al nombre de la tabla.

Ok, una vez ejecutado ese código si está todo Ok, tienen que salirle: "Query executed successfully"

2) Luego llaman al stored procedure con la siguiente línea:


exec spDias '2008/05/01','2008/05/31'

Y obviamente, tiene que generar el desglose de ese rango de fechas, así:


Sencillo, no?