domingo, 28 de noviembre de 2010

Int32.TryParse para evitar errores de objeto nulo

En Cesar utilizamos mucho las conversiones explicitas para cambiar el tipo de un objeto de forma rápida y sencilla:
Int32 numero = (Int32) textBox.text;
Pero como lo que esté dentro del texto no sea un número… un bonito reventón vamos a obtener. Por eso me he acostumbrado a utilizar un método publico que utilice el TryParse del tipo utilizado.
public static Boolean convierteEnNumero(string pNumero, out Int32 numero)
{
return Int32.TryParse(pNumero, out numero);
}
Este método me devuelve dos valores. Un booleano que me indica si la conversión ha sido posible o no, y un número en donde se almacena el número convertido o me devuelve CERO si no ha podido hacerse a conversión.
Lo mejor es que jugando con la firma del método puedo ajustar la respuesta a lo que necesito:
Int32 numero;
// Recupero si se ha podido convertir y el valor numérico.
if (convierteEnNumero("14", out numero) == true && numero > 1)
{ numero++; };
// Recupero el valor numérico de la conversión.
if (convierteEnNumero("14") > 1)
{ numero++; };
// Compruebo si es un número. Recupero si se ha podido convertir. 
if (IsNumero("14"))
{ numero++; };
public static Boolean convierteEnNumero(string pNumero, out Int32 numero)
{
  return Int32.TryParse(pNumero, out numero);
}
public static Int32 convierteEnNumero(string pNumero)
{
   Int32 numero;
   Int32.TryParse(pNumero, out numero);
   return numero;      
}
public static Boolean IsNumero(string pNumero)
{
    Int32 numero;
    return Int32.TryParse(pNumero, out numero);
}

A mí me ha sido de mucha ayuda para evitar los errores tontos e inesperados de conversiones.

SQL. Llamar a tablas en distintas bases de datos

Una entrada pequeñita y con poca importancia.

Tengo dos bases de datos en un mismo motor de SQL y debo acceder a una tabla en cada una de ellas.

Es tan facil como utilizar ...

Osea que para obtener una suma de conjuntos de ambas tablas:

select resultado1.*, resultado2.*
from bd01..tabla as resultado1, bd02..tabla as resultado2
where resultado01.id = resultado02.id

Espero que os sea tan util como a mi.

sábado, 20 de noviembre de 2010

Seesmic Desktop 2 y el Twitter después de un año de uso

Hace más o menos un año el run run de la Web 2.0 traspasó mi reticencias y me apunté en un solo día tanto a Facebool como a Twitter. Meses después llego Lindekin, y la búsqueda de un poco de control sobre mi hija me llevo finalmente a Tuenti.

Facebook me sorprendió al ponerme en contacto con personas que pensaba perdidas para siempre, de otros tiempos y –casi- de otra vida. Pero han sido los 140 caracteres los que han representado una verdadera novedad en mi forma de comunicarme. Lo cual, no solamente es sorprendente visto por alguien que no lo haya experimentado, si no además inesperado. Es una comunicación emocional.  Lo que compartes –si alguien te “follow”- es tu estado de animo y las cosas que lo provocan.

En cuanto el número de personas que sigues o que te siguen crece un poquito, se hace corta la página web de twitter y empiezas a buscar clientes de escritorio. Así empecé con Tweetdeck, el cual me permitió integrar también mi cuenta de facebook. Pero hace unos pocos días, en una conversación sobre silverlight, me comentaron un cliente llamado Seesmic Desktop 2. El cual una vez probado, me ha encantado y me lo he quedado como cliente de escritorio único.

Me da las mismas capacidades que Tweetdeck pero además me permite integrar mi cuenta de Lidekin y ver en las columnas de mensajes las imágenes enlazadas a los Tweet. El único inconveniente, que espero que corrijan en algún momento, es que el acortar una url no es tan fácil como con el cliente anterior.

Probarlo, si os apetece.

Enter como tabulador… a veces

En Julio del 2010 escribí una entrada sobre cómo  Utilizar Enter como Tabulador ya que el cliente para el que estaba trabajando me pidió poder navegar por los formularios con la tecla Enter.

La evolución lógica fue que cuando tuviera el foco un control del tipo botón, entonces que tuviera su comportamiento normal y que realizara la pulsación correspondiente. Para ello saqué el javascript del body de la master page y lo puse en una librería js.
<script src="funcionesGenerales.js" type="text/javascript"></script>
</head>
<body onkeydown="enterToTab(event)">

Siendo el código javascript:

// Permite utiliza la tecla Enter como Tabulador
function enterToTab(pEvent) {
    if (pEvent.srcElement.id.indexOf('imgb') == -1) {
        if (window.event.keyCode == 13) //&& window.event.srcElement.type != 'input') 
        {
            window.event.keyCode = 9;
        }
    }
}

El problema es obvio, necesito que los botones empiecen su id con el texto “imgb”, lo cual es un acoplamiento muy feo. Ya que no es lo suficientemente obvio para un futuro mantenimiento.

Y entonces ha llegado el momento de entonar el “si lo hubiera sabido…” cuando leo en el excelente blog de Eduard Tomás i Avellana la entrada sobre  Saca tus scripts del tu código HTML , en donde la solución es mucho más elegante utilizando JQuery y utilizando nuestros propios tags.

Prefiero no copiar aquí el código, porque merece la pena ver el que ha puesto el autor, que merece mucho la pena este blog.

martes, 16 de noviembre de 2010

El comentario que me hacía falta.

Estoy al cierre de un proyecto, que se me ha desmadrado la entrega un poquillo, y tengo un porrón de post en el tintero. Pero hoy me ha llegado el comentario que necesitaba:

kikorb ha dejado un nuevo comentario en su entrada "Distinct en linq":
No dejes tus post. Acabo de conocer tu blog, de darle una vuelta y es muy interesante lo que vas poniendo.
Animo y al toro :) “

Simplemente, gracias!!