martes, 27 de febrero de 2007

Un poquito de historia del blog

Buenos días a todos/as
Este post no va a tener nada técnico, sólo va a servir porque decidí en su día crear un blog propio.
Todo esto es debido gracias a Ander que en su día me dejo escribir en su blog y con ello hizo que me picará el gusanillo de tener el mío propio. Así que Ander gracias por todo.
Eso si, a partir de ahora cuando publique un artículo técnico, lo publicaré en los dos sitios, en el mío y en el de Ander. También vais a tener disponible desde la sección de links un vínculo directo al blog de Ander ya que me parece un blog más que interesante, en el que escribe no sólo él, sino más gente.
Mi blog va a tener más que nada cosas relacionadas con .NET y Sql Server, pero bueno también tendrá alguna cosilla más.
Así que nada ya nos iremos viendo.
Un Saludo
Sergio

lunes, 26 de febrero de 2007

Como pasar parámetros opcionales en C#

Buenas a todos, desde hace ya como cosa de 1 o 2 meses, he empezado a programar en C# porque si programaba en VB.NET, como también programo a menudo en VB6, me estaba dando cuenta que no estaba realizando código 100% .NET, debido a que seguía utilizando funciones de VB6 en .NET, etc., etc.
Eso si mi cambio no ha venido dado porque diga que C# es mejor que VB.NET ni nada por el estilo, sino por obligarse a uno mismo a no tener vicios de VB6 en .NET, aparte y lo más importante para ello es, que el cambio ha venido porque también se algo de Java y entonces la similitud con C#, me ayudo a verlo con mejores ojos. Bueno al grano que me estoy yendo por las ramas.Ayer estaba intentando abrir en ADOB.Recordset, sin más para hacer unas pruebas de rendimiento con VB6 y una dll hecha en .NET expuesta en modo COM, estaba continuamente fallándome el siguiente método, porque ni me compilaba.Rs.Open();Entonces yo me preguntaba, porque me estará fallando este puñetero método sin VB.NET o VB6 tira hacia delante. Bien mirando un poco me fije que el Rs.Open(), tiene una serie de parámetros, que aunque no los necesite pasar porque lo creo desde cero, C# me obliga a ponerlos. Entonces listo de mí dije, pues ale, te paso lo siguiente, con todos los parámetros asignados y con null, que no tiene valor:Rs.Open(null, null, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, 0)Así el compilador lo dejo pasar, obviamente, el ya se cree que tiene todos los parámetros, pero al ejecutar cual fue mi sorpresa, que dicha sentencia fallo, me decía algo así como error en los tipos, pues bien falla, porque se cree que el parámetro 1 tiene valor y no ha sido omitido como se puede, debido a que está especificado como opcional.Pues bien, haciendo simplemente un F1 en menos de un minuto di con la solución “Type.Missing”, es para especificar que un parámetro opcional no tiene valor, entonces la sentencia me quedaría de la siguiente manera:Rs.Open(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)Así si que funciona correctamente, pero C#, como eres con el tema de no dejar pensar al compilador, lo quieres todo estrictamente, pero eso me gusta mucho, ya que me ayuda a detectar muchisimos fallos de primeras.En fin que me vuelvo a ir por las ramas, a ver después de explicar como pasar parámetros que son opcionales a un procedimiento, ahora vamos a intentar poner un parámetro opcional en una función de C#.Después de intentarlo, el compilador da el siguiente error:“No se permiten especificadores de parámetros predeterminados”Así que ya sabéis en C# no se pueden poner parámetros como opcionales en un procedimiento o función, eso si, si realmente lo queremos así, nos podemos basar en la sobrecarga y punto.Os paso un link de una página donde pone lo que es de una forma en VB.NET es igual en C#, por si alguien se atreve a venirse al lado de C#.http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.htmlUn Saludo y hasta otra

Update en SqlServer

Este post va a tratar una cuestión curiosa que me encontré un día, con mi ya querido SQL Server, digo querido, porque lo único que me está demostrando es que con el exceso de registros en las tablas, dicho SQL Server, pasa a mutar o algo así, en fin que cambia la forma de trabajar que con pocos registros, empieza a utilizar índices que a priori tú sabes que son menos eficientes, pero a el le da por creer que lo son.Por ello voy a aprovechar a deciros en este post, que siempre que un procedimiento almacenado, empiece a exceder de tiempo, revisemos el plan de ejecución de dicho procedimiento almacenado, en el servidor donde este aumentando de tiempo y veamos que es lo que falla.Después de semenjante chapa direis, porque el título pone algo de Updates en SQL, y todavía ni las ha nombrado, pues bien el tema es el siguiente. ¿Habeis intentado forzar un índice alguna vez en una Update?.Yo la única forma que lo conseguí fue haciendo una vista de la tabla, en la que dicha select forzaba ese índice y luego hacer la Update contra la vista. Lo digo porque igual algún día lo necesita alguien.
Un Saludo
Sergio

Presentación del Blog

Buenas a todos y todas.
Me llamo Sergio y soy Analista / Programador y llevo en esto como cosa de 6 o 7 años, ya que con el tiempo uno se hace más mayor y va perdiendo memoria. Desarrollo programas con VB6, .NET, tanto VB.NET y C#, ASP.NET, Com+, SQL Server, Crystal Reports, tratamiento de imágenes DICOM, etc., etc., así que a partir de ahora pasaré a escribir cuando pueda curiosidades sobre las marterias que domino, pero sobre todo intentaremos tratar temas de .NET y SQL Server, ya que todo esto da para mucho.
Nos vemos por el blog