viernes, agosto 25, 2006

DataTable GROUB BY anyone?

Hace un momento me  preguntaba un amigo que si habia manera de implementar un GROUP BY sobre los registros contenidos por un DataTable y honestamente no supe que contestar, se que se puede aplicar un flitro y algunas expresiones SQL pero la verdad nunca he intentado hacer un GROUP BY, asi que me di a la tarea de investigar un poco mas y llegue hasta esta pagina donde te guian para crear una clase adicional que se encargue de proveer la funcionalidad que hace falta al DataTable para realizar el agrupamiento de datos... interesante, lo que aprende uno.

jueves, agosto 24, 2006

Mas diversion con Windows 2003

Si tienes una aplicacion ASP 3.0 (o sease: clasico, viejito..  etc) y quieres instalarla en Windows 2003 Server, aqui te van unos tips.

Tambien tienes que considerar que si utilizas includes en tu aplicacion, segun este articulo el archivo referenciado en el include no puede estar en un directorio "arriba" del de la pagina actual.

miércoles, agosto 23, 2006

Dependencias de un Stored Procedure

Como bien es sabido nunca aprende uno tanto como cuando necesita hacer algo y no sabe como... anduve buscando en internet alguna forma "elegante" de obtener las dependencias que pudiera contener un Stored Procedure sobre otras tablas y al parecer no hay nada que funcione de forma directa, si bien es cierto que puedes utilizar las tablas y vistas "sysdepends" tambien es cierto que estas no son 100% confiables ya que las referencias que aqui pudieramos encontrar dependen del orden en que se hayan creado los objetos de la base de datos.
Despues de darle muchas vueltas decidi que si no hay forma infalible y 100% exacta de obtener esta informacion entonces trataria de acercarme lo mas posible, dado que tenia alrededor de unos 50 Stored procedures y 335 tablas, se imaginaran la "talachita" que iba a ser obtener esos datos abriendo cada uno de los SP's y analizando el codigo.Y esta fue la solucion con la que al final me quede...

/**1. Primero hay que declarar una variable del tipo tabla con 3 columnas que me sirvan para conocer mas de los objetos encontrados **/


DECLARE @info TABLE(owner varchar(15), tableName varchar(100), oName varchar(100))

/**2. Declarar unas variables mas para almacenar el nombre de mi tabla y el identificador que SQL le asigna a la tabla**/


DECLARE @objname varchar(100), @objid int

/**3. Obtener el identificador de la tabla**/

SET @objname = 'TablaClientes'
SET @objid = object_id(@objname)

/**4. Insertar en la variable tabla los datos que correspondan a los Stored Procedures que en su codigo incluyan el nombre de la tabla que ando buscando**/

INSERT INTO @info(tableName, owner, oName)
SELECT @objname, routine_schema , routine_nameFROM information_schema.routines where routine_definition like ('%' + @objName + '%')GROUP BY routine_schema, routine_name

/**5 . Realizar la consulta sobre la variable de tabla**/

SELECT * FROM @info




Con el script anterior, puedo consultar los Stored Procedures que mencionan una tabla, pero aun asi, tengo 335 tablas!!! SIN contar los que pudieran estar referenciando a alguna vista... y ahora quien podra defenderme? ... CODESMITH!!!
Total que he creado tambien una plantilla donde puedo barrer las 335 tablas + 50 Vistas (aprox) y generar el script que al final me dara la informacion que ando buscando... asi que si bien este metodo no es 100% exacto, si me saca de este apuro.

Ventajas
  • Estoy directamente buscando las referencias por medio del codigo del stored procedure
  • En casos como el que platico, donde tengo mas de 10 tablas hacer esto "a pie" es una lata
  • Es extremadamente rapido

Y las desventajas...

  • El barrido que hace del codigo del Stored Procedure, no distingue entre comentarios y codigo "vivo"
  • Las tablas y vistas deben pertenecer a la misma base de datos de los stored procedures
  • Estoy usando LIKE para hacer las busquedas asi que si una tabla se llama "tblCliente" y otra "tblClienteResultado"... se imaginaran que si un SP esta utilizando "tblClienteResultado" tambien me aparecera como referencia "fantasma" la tabla "tblCliente"

Pero hey... que querias en tan poco tiempo.

Aqui esta la plantilla de CodeSmith que use.

miércoles, agosto 16, 2006

Migrando Aplicaciones Web a IIS 6.0

Por si alguna vez se ven en la necesidad de migrar algunas aplicaciones desde Windows 2000 con IIS 5 hacia Windows 2003 con IIS 6.0...

Antes con IIS 5, si teniamos digamos unos 20 sitios y necesitabamos cambiarnos de servidor, lo unico que habia que hacer era respaldar la configuracion del servidor origen a un archivo y ese archivo restaurarlo en el servidor destino, bueno pues el caso es que si lo que quieres es cambiar de IIS 5 a IIS6, el archivo ya no es compatible... y ahora quien podra defendernos? bueno pues hay una herramienta de migracion que puedes descargar en :

http://www.microsoft.com/downloads/details.aspx?FamilyID=2aefc3e4-ce97-4f25-ace6-127f933a6cd2&displaylang=en#QuickInfoContainer

Que te servira para copiar la configuracion Y los sitios de una forma mucho mas practica, altamente recomendable para el caso en que tengas mas sitios de los que quisieras configurar "a pie". Tambien puedes hacer un .bat que migre todos de un jalon.

lunes, agosto 14, 2006

Y con ustedes... ATLAS!

Este es mi primer screencast, aqui hay 2 ejemplos sencillos de como utilizar los controles de Atlas: Update panel y Timer para mejorar bastante la experiencia del usuario en nuestras aplicaciones web... diganle adios al postback.

Espero sus comentarios... y sugerencias.

Abrir screencast / Descargar version Flash (3.5 MB) / Descargar version avi (15.2 MB)

Adios CS!

Bueno pues fue bueno mientras estuvo funcionando, pero comence a tener demasiados problemas con el Community Server y ahora heme aqui, bloggeando con blogger, en el transcurso de estos dias debo ir mudando los archivos y fotografias a este nuevo espacio asi que tenganme un poco de paciencia, por lo pronto les dejo con la novedad de que a partir de esta fecha comenzare a publicar minimo un screencast por semana (se aceptan sugerencias).

Debo comentar y aclarar que a pesar de lo que hace algunos dias dije, al parecer Crystal Reports ya se logro... si, acabo de terminar una aplicacion en winforms donde utilizo CR XI release 2 y debo decir que la instalacion esta super sencilla, el reporte se porta bien.. en fin todo lo que siempre quize y nunca tuve por parte de CR.

Creo que el siguiente screencast se lo dedicare a CR como penitencia por haberme quejado tanto de el.

domingo, agosto 13, 2006

Estrenando blog.

En vista de que el Community Server esta dando mas lata de lo que puedo administrar, he decidido mudarme a blogger, necesito algo mas sencillo y la verdad es que ultimamente soy el unico que estaba escribiendo.