Wednesday, December 14, 2011

Case when null

Usamos CASE WHEN THEN para transformar dado un valor a otro, para personalizarlo. Por ejemplo, el típico F: Femenino y M: Masculino. Nuestro Case sería así:

SELECT blah, blah, blah, CASE sexo WHEN 'F' THEN 'FEMENINO' WHEN 'M' THEN 'MASCULINO' ELSE 'GAY?' END AS SEXO

Pero se podría dar el caso en que necesito mostrar al usuario dado un valor está en NULL entonces no se ejecutó alguna acción. Por ejemplo, tengo mi columna AprobadoPor, si está en NULL es porque no se ha aprobado el registro.

Para usar CASE WHEN THEN con valores nulos, es como sigue a continuación (checka que para estos casos, debes usar la palabra reservada Is Null, Is Not Null):

SELECT blah, blah, blah, CASE WHEN cs.AprobadoPor IS NULL THEN 'En espera' ELSE 'Sí' END AS APROBADO 

Tuesday, December 13, 2011

Validar hora como dato De entrada

Tenemos nuestra caja de texto que sólo debe dejar que el usuario ingrese una hora. Una solución es hacerlo con expresiones regulares.

Imports System.Text.RegularExpressions

Public Function esHoraValida() As Boolean
  Dim r As New Regex("([0-1][0-9]|2[0-3]):[0-5][0-9]")
  Dim sw As Boolean = True
  If Not (r.Match(Me.txtHora.Text)).Success Then
    sw = False
    'Si el dato de entrada no es hora, mostrar un mensaje al usuario ("Debe ingresar la hora con formato válido [08:30].")
  End If
  Return sw
End Function

Ah, y por cierto, para que la caja de texto sólo admita cuatro dígitos y ya esté incluido los dos puntos del medio, estoy usando el control MaskedTextBox (en winforms, en webforms también hay uno similar)


HaPPy CoDiNg =)

Monday, December 12, 2011

Resaltar el item actual seleccionado del menu

Nuestro sitio web tiene un menú, ya sea horizontal o vertical. El usuario navega a través de él. Es importante que cuando el usuario haga clic sobre un item de nuestro menú, hagamos que éste se resalte para que de esta manera nuestro usuario sepa dónde está posicionado o navegando.

Una solución es haciéndolo con JQuery.

Código HTML - menú


Código CSS - menú

#navegacion
{
 height: 41px;
 background-color: #07A8D6; 

}

#menu
{
 padding: 0;
 margin: 0;

}

#menu li
{
 display: inline; 
}

#menu li a:link, li a:visited
{
 text-decoration: none;
 float: left;
 color: #fff;
 background-color: #065081; 
 padding: 10px;
 border: 1px solid #fff;
}

#menu li.current a
{
 background-color: #07A8D6 ; 
}

#menu li a:hover
{
 background-color: #07A8D6; 
 margin-top:-2px;   padding-bottom:12px;  
}

Código JQuery



HaPPy CoDiNg =)

Tuesday, December 6, 2011

Padding o margin

Algo con lo que solía confundir eran el empleo de los atributos padding y margin. Una imagen vale más que mil palabras, así que la siguiente imagen muestra qué es cuál.


Como podés ver, los márgenes son el espacio que hay entre la capa y cualquier objeto adyacente. El (o padding) es el espacio entre el borde de la capa y el contenido. (El borde es la línea que delimita la capa)

MARGIN

Para establecer los márgenes mediante código CSS, exisiten distintas formas y es importante conocerlas todas para poder leer fácilmente el código css e interpretarlo. Por defecto, cada capa tiene 4 márgenes que vienen con un valor 0.

/*Aplicando los 4 márgenes de la forma natural*/
#capa    {
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
margin-left: 10px;
}
/*Aplicando los 4 márgenes de forma simplificada*/
#capa    {
margin: 10px;
}
/*Cuando el márgen de arriba es igual al márgen de abajo, y el márgen de la derecha es igual al márgen de la izquierda, se puede usar el siguiente formato, tomando en cuenta que el primer valor corresponde a los de arriba y abajo y el segundo valor a los de la derecha e izquierda*/
#capa   {
margin: 10px 5px;
}
/*Cuando los valores de la derecha e izquierda son los mismos y únicamente varían el de arriba con el de abajo, se procede con el siguiente formato, tomando en cuenta que el primer valor corresponde al márgen de arriba, el segundo a los de la derecha e izquierda y el tercero al de abajo*/
#capa    {
margin: 5px 15px 2px;
}
/*Cuando todos los márgenes son distintos uno del otro, entonces se procede a colocar cada valor, tomando en cuenta que el primer valor corresponde al de arriba, segundo: derecha, tercero: abajo y cuarto: izquierda (tal como las manecillas del reloj) */
#capa    {
margin: 3px 10px 6px 8px;
}

PADDING

Al igual que el MARGIN, se tiene 4 rellenos y por defecto vienen en valor 0. El código css se establece de la misma manera.

IMPORTANTE

El ancho real y el alto real de una capa se ve directamente afectado con los valores (de width y height) de sus márgenes, rellenos y bordes.

Ancho de una capa con todos sus atributos:

Ancho + margen izq. + margen der. + relleno izq. + relleno der. + borde izq. + borde der.

Esto es importante tomar en cuenta ya que afectará directamente al diseño de la página, habrá un desbordamiento.

HaPPy CoDiNg =)

Thursday, December 1, 2011

Actualizar una tabla mediante Un bucle

Frase del día: "El conocimiento hincha pero el amor edifica"

Sql Server. Cursor. While. Bucle. Update. Loop to update records in sql server. Using While Loop for SQL Server Update.

Si tu tabla está llena de datos y queres actualizar un campo con un dato algo genérico, podemos utilizar los beneficios de los bucles.

Si tu primary key es un correlativo y sabes que va en orden, lo más sencillo sería hacerlo así:

DECLARE @id BIGINT 
SET @id = 1
WHILE @id < 12
BEGIN
update test set descripcion='aquí el dato genérico' where id=@id
SET @id = @id + 1
END

En el caso de que no, entonces sería utilizando cursor. Checka:

DECLARE @id BIGINT
DECLARE myTable CURSOR FOR
SELECT id FROM test
OPEN myTable
FETCH NEXT FROM myTable
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
update test set descripcion='aquí el dato genérico' where id=@id
FETCH NEXT FROM myTable
INTO @id
END

Es que a mi me tocó hacer algo parecido. Pero no usé ninguno de las dos utilidades, mi caso era un caso especial jeje. Lo tuve que hacer por vb.net no más xD.

HaPPy CoDiNg.