viernes, noviembre 24, 2006

I aniversario del blog

Este es el primer aniversario de mi blog. Después de año estoy muy contento con el resultado. He conseguido aunar conocimientos que de otra manera estarían perdidos en mi cerebro. Para celebrar este primer aniversario estoy preparando un artículo sobre VSTO y VSTA que os aclarará las ideas sobre estas 2 maravillosas herramientas para programar OFFICE 2007. A falta de la respuesta de una pregunta que he formulado al increíble David Carmona de Microsoft, creo que en la próxima semana estaré en condiciones de explicaros que diferencias hay entre VSTA y VSTO.

VSTA=Visual Studio Tools for Applications
VSTO=Visual Studio Tools for Office

lunes, noviembre 20, 2006

editingControl en DataGridView con VS2005

Pues sí, he encontrado una propiedad del dataGridView donde puedo ponerle mi propio control de usuario. Después de sufrir durante 4 años el control MSHFlexGrid de Visual Basic 6.0, ahora tengo el control absoluto de lo que estoy tecleando en el nuevo y flamante VS2005, así que os paso el Link donde un compañero de trabajo (Juan Antonio Barceló) encontró esta gran ayuda y además directa desde Microsoft. ¡¡¡QUE LUJO!!!
http://msdn2.microsoft.com/es-es/library/7tas5c80(VS.80).aspx

viernes, noviembre 10, 2006

Framework 3.0, WPF, XAML

Con la llegada de Windows Vista tenemos las Framework 3.0 y todo el nuevo desarrollo para el nuevo Windows. Framework 3.0 se compone de WPF (Windows Presentation Foundation), WCF (Windows Comunition Foundation) y WWF (Windows Workflow Foundation).

Estos son los programas que te debes bajar desde la sección de downloads de Microsoft para poder trabajar con ellos.

NET Framework 3.0 Runtime Components
Windows SDK for Vista and the .NET Framework 3.0
Visual Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)
Visual Studio 2005 Extensions for .NET Framework 3.0 (WCF & WPF), November 2006 CTP)
Microsoft Expression Interactive Designer September 2006 CTP
Microsoft Expression Web Designer

Recuerda que debes tener VS2005 para instalarlos...

¿Los tienes ya instalados?, pues nada a empezar:

Nada más abrir VS2005 y darle a Crear Proyecto nuevo nos encontramos con dos nuevas carpetas de soluciones (Framework 3.0 y Workflow):
En net Framework 3.0 tenemos los proyectos para WPF y WCF, en WorkFlow tenemos los proyectos para WWF.





















Y ahora se trata de experimentar... Para empezar he creado un proyecto windows form normal que ahora sería Windows application (WPF) y tachán!!!!!, el entorno es el mismo pero ahora me aparece una venta nueva con código XAML:




que sustituye a los ficheros *.designer.vb que eran los que daban forma al formulario y a su contenido, es decir, que ahora los formularios se componen de instrucciones XML. Que ventaja tiene eso?, que estos formularios se puede diseñar con Microsoft Expression y además se pueden visualizar desde Windows Vista sin tener que compilarlos. Si has instalado las SDK de Windows Vista tienes una aplicación en Tools de la carpeta de instalación que se llama XAML Pad y donde puedes pegar el código XAML de tu nuevo y flamante formulario para visualizar en tiempo real como se comporta tu form XAML.
Y ahora te preguntaras que pasa con el código VB, pues muy sencillo, lo que mismo que ASP Net., no, no, no es que ahora tengamos que aprender ASP, de lo que se trata es que el código VB está detrás del formulario XAML "code behind" e interactúa con él. ¿Y porqué nos cambian las cosas?, pues muy fácil, la capa de presentación de aplicación de WINDOWS es muy pobre y necesita de grandes recursos para hacerla vistosa. Con WPF se separa la capa de presentación totalmente de la capa de código, la capa de presentación se apoya en Windows Expression para poder hacer un diseño vistoso. Que sí, que está claro que el diseño lleva bastante tiempo, pero con Windows Expression tenemos herramientas tipo Photoshop para hacer unos controles o unas pantalla de infarto (las veremos en Vista).



¿Dónde está la novedad?, la novedad es que un diseñador sin tener ni papa idea de Visual Studio, nos puede hacer una capa de presentación increíblemente buena dónde nosotros(desarrolladores) no tengamos que tocar ni un sólo botón y a lo único que nos dediquemos es a la lógica de negocio y datos, olvidándonos completamente del diseño. Todo esto gracias a que ahora la capa de presentación la tenemos en XAML y nuestro bien amado VS2005 la entiende perfectamente.

Por hoy ya está, pero en próximos artículos seguiré comentando el funcionamiento de las WPF con un poco de código. Mencionar que el día 18 y 19 de Nov es el II Aniversario del grupo GuseNet en Calasparra (Murcia) y hay unas charlas interesantísimas en las que se tocarán temas de SQL, BI, Net.... Si estás interesado en asistir me mandas un mail.

lunes, agosto 14, 2006

De tabla a TreeView en ASP NET 2.0 (versión 2)

Creamos la tabla donde tenemos la relación padre a hijo infinito para n nodos y con padres sin hijos:

CREATE TABLE [dbo].[Tabla](
[codigo] [int] IDENTITY(1,1) NOT NULL,
[nombre] [varchar](50) NOT NULL,
[padre] [int] NULL
) ON [PRIMARY]

GO

la rellenamos con datos:
INSERT Tabla (nombre)
VALUES('Luis')--sin padre
INSERT Tabla (nombre,padre)
VALUES('Pedro',1)
INSERT Tabla (nombre)
VALUES('Alfonso')
INSERT Tabla (nombre)
VALUES('Jose')
INSERT Tabla (nombre,padre)
VALUES('Fidel', 4)
INSERT Tabla (nombre,padre)
VALUES('Pepe', 2)


dentro de la etiqueta script de un formulario o página ASP incluyes este código:

Dim conex As String = "Data Source=OSCARVAIO;Initial Catalog=Pruebas;Integrated Security=True"
Sub Page_Load()
If Not Page.IsPostBack Then
FillNodes()
End If
End Sub
Sub FillNodes()
Dim ds As DataSet = GetData()
For Each masterRow As DataRow In ds.Tables("Padres").Rows
Dim masterNode As New TreeNode(masterRow("nombre").ToString(), masterRow("codigo").ToString())
If IsDBNull(masterRow("padre")) Then
TreeView1.Nodes.Add(masterNode)
Else
For Each node As TreeNode In TreeView1.Nodes
If node.Value.ToString() = masterRow("codigo").ToString() Then
masterNode = node
Exit For
End If
If node.ChildNodes.Count > 0 Then
Dim NodoEncontrado As TreeNode = BuscarNodo(node, masterRow("codigo").ToString())
If Not NodoEncontrado Is Nothing Then
masterNode = NodoEncontrado
Exit For
End If
End If
Next
End If
For Each childRow As DataRow In masterRow.GetChildRows("Hijo")
Dim childNode As New TreeNode(childRow("nombre").ToString(), childRow("codigo").ToString())
masterNode.ChildNodes.Add(childNode)
Next
Next
End Sub
Function BuscarNodo(ByVal arbol As TreeNode, ByVal codigo As String) As TreeNode
For Each node As TreeNode In arbol.ChildNodes
If node.Value.ToString() = codigo Then
BuscarNodo = node
Exit Function
End If
If node.ChildNodes.Count > 0 Then
BuscarNodo(node, codigo)
End If
Next
BuscarNodo = Nothing
End Function
Function GetData() As DataSet
Dim conn As SqlConnection = New SqlConnection(conex)
Dim sqlCat As StringBuilder = New StringBuilder()
sqlCat.Append("SELECT ISNULL(P1.Codigo,P2.Codigo) AS codigo, ")
sqlcat.Append("ISNULL(P1.nombre,P2.nombre) AS nombre, ")
sqlcat.Append("ISNULL(P1.padre,P2.padre) AS padre ")
sqlcat.Append("FROM ")
sqlCat.Append("(SELECT Tabla.codigo, Tabla.nombre, Tabla.padre ")
sqlcat.Append("FROM Tabla WHERE padre IS NULL) AS P1 ")
sqlcat.Append("FULL JOIN ")
sqlCat.Append("(SELECT T2.* ")
sqlcat.Append("FROM Tabla AS T1 INNER JOIN Tabla AS T2 ON ")
sqlcat.Append("T1.padre=T2.codigo) AS P2 ON ")
sqlcat.Append("P1.Codigo=P2.Codigo ")
sqlcat.Append("ORDER BY codigo ")
Dim sqlProd As String = "SELECT Codigo,Nombre,Padre FROM Tabla AS Hijos WHERE Padre<>''"
Dim daCat As SqlDataAdapter = New SqlDataAdapter(sqlCat.ToString(), conn)
Dim daProd As SqlDataAdapter = New SqlDataAdapter(sqlProd, conn)
Dim ds As DataSet = New DataSet()
daCat.Fill(ds, "Padres")
daProd.Fill(ds, "Hijos")
ds.Relations.Add("Hijo", _
ds.Tables("Padres").Columns("Codigo"), _
ds.Tables("Hijos").Columns("Padre"))
Return ds
End Function


Lo ejecutas y podrás ver como se rellena el treeView.

Esta entrada del blog la he cambiado para completarla para n jerarquías y para padres huérfanos según algunos comentarios recibidos a fecha del '06/09/2008'.

miércoles, junio 28, 2006

SQLU SUMMIT 2006 Madrid 5º día.

Este 5º y último día empezó para mí en la sala de los cubos con una charla de Jordi Rambla: Usando Reporting Services sobre AS, estupendo complemento a lo visto en el día anterior.
A la segunda charla a la que acudí también la dió Jordi Rambla: Construcción de Panel de Control con SCM. Nueva Tecnología para mí, no lo había visto nunca, pero interesante para mi superior, donde de un simple vistazo dentro de una página de Sharepoint, puede encontrar toda la información relevante de la empresa. Buena presentación de Jordi.
La última presentación nos la dedicó el amigo Alejandro Leguízamo: Prediciendo el futuro con DMX, que no confudir con MDX que es otro lenguaje. DMX es el lenguaje para consultas de Minería de Datos, como siempre estuvo en su línea, genial (es un genio por lo que normal es que sus charlas sean geniales).
Y se acabó, se adelantó la KeyNote de Fernando G. Guerrero para antes de la comida y así la gente podría irse antes (aviones, fútbol, viajes, etc). Fernando nos hizo un resumen de intenciones y de lo que había sido la semana, una triste despedida cuando se ha comprobado que la semana a sido todo un éxito y que todo lo bueno se acaba tarde o temprano. Así que la charla final se amenizó con un sorteo de varios regalos que nos endulzaron (en mi caso un buen tf. móvil) el final de la semana.
Punto y aparte, es decir se acabó el SUMMIT del 2006, pero empieza una nueva etapa para prepararse para el 2007 al que espero asistir para recibir todas las noticias frescas sobre el nuevo Orcas, LinQ, C#3.0, SQL Server 2007?, .NET Framework 3.0. Ya se sabe, el mundo informático no para nunca...

domingo, junio 25, 2006

SQLU SUMMIT 2006 Madrid 4º día

Cuarto día, este ya ha sido el summum del summit 2006, además fué el día de la cena. Tengo que recordaros que el Summit 2006 tiene 2 salas y cada sala tiene una charla. Las salas son 2, indices y cubos y en cada una se habla de una cosa en ponencias simultánes. Digamos entre comillas que en la sala de índices se dan charlas sobre bases de datos relaciones y en la sala de cubos sobre bussiness intelligence. Como asistente se puede elegir en cualquier momento aquella charla que má le convenga a cada uno, como no se puede estar en los dos sitios a la vez, en este blog sólo hablo de mi experencia y de las charlas a la que he asistido.

Ahora vamos al grano, este día se puede decir que fué el día de Alejandro Leguízamo en la sala de los cubos (4 charlas), además de ser ameno y muy interactivo con el público Alenjandro viene del mundo BI (Administración de Empresa), trabaja con SQL desde hace 9 años y ha estado en Microsoft unos 3 años (sólo tiene 25, ¿estamos hablando de un genio?). Como iba diciendo, este "genio" nos habló de como hacer una auditoría de datos para procesos ETL y así localizar datos perdidos en el camino.

Hice una pausa esta mañana para arreglar una cuenta pendiente que tenía con Miguel Egea, me dirigí con él al laboratorio para ver como crear un proyecto de VS2005 y asociarlo a un proyecto de Visual Studio Team System. En el laboratorio teníamos ordenadores DELL con discos USB y discos virtuales para hacer todo tipo de prácticas asesorados por cualquier mentor de Solid...

Terminada la sesión de laboratorio me trasladé a la sala de los cubos para no perderme la última de la mañana de Alejandro. Esta trataba sobre Minería de Datos: Clasificación y Segmentación. Nos estuvo explicando como funcionaba el algoritmo de clustering para que comprendieramos mejor el modelo de agrupamiento. Aquí pudimos conocer el nivel matemático de este chico, la verdad es que si me dice en que Univesidad estudió mando a mis hijos cuando cumplan los 17.

Por la tarde de nuevo a la sala de los índices para asistir a una de Antonio Soto: Buscando en el baúl de los recuerdos (Full Text Searching). Gracias Antonio por la charla, ya tengo las dudas sobre Full Text totalmente claras.

Una vez satisfechas mis dudas sobre Full Text en SQL Server me trasladé a la sala de los cubos para asistir a la última charla del día. Esta vez fué Jordi Rambla, la verdad es que no lo conocía, es a la primera charla que voy a ver de él , me aclaró todas las dudas sobre Reporting Services, dió varias charlas, todas ellas de reporting. En esta primera nos condensó en una hora como crear un informe desde la nada para luego ir diseñándolo con lo que nos ofrece reporting. La verdad que tener a Jordi una semana después de asistir al Tech-Ed de Boston y dar una charla (en inglés) para los americanos del norte, es todo un lujo. Ademas nos fué informando de cosas que se cuecen sobre reporting services en el otro lado del Atlántico, esos detallitos que se agradecen.

Y por fin, la noche de la cena, hubo alguna ausencia importante por motivos laborables pero en general, los 25 que acudimos pudimos divertirnos y charlas animosamente unas cuantas horas, decir que una cena acerca a las personas para entablar conversaciones de cualquier tipo y creo que es necesaria en cualquier evento de este tipo. A la cena acudieron también David Carmona (Microsoft) y Octavio Hernández, este último se quedó con nosotros a charlar después de la cena y pude preguntarle algunas cosas del nuevo LINQ. A David Carmona lo conozco de varias charlas y varias colaboraciones con el grupo de usuarios GUSENET, y le estamos muy, pero que muy agradecidos porque es una persona que te ayuda con lo que le pidas y que esté relacionado con los productos de Microsoft. De Microsoft también estuvo Jordi Bartual pero de asistente a las charlas, con él tuvimos el complemento perfecto para aclaraciones sobre dudas en productos Microsoft, estuvo bastante activo por lo que se lo agradecemos profundamente, y por cierto, gracias por el artículo de su blog, nos ha ayudado para conectar RS a SSIS.

Mañana continuaré con el cierre final de este SUMMIT 2006, que en mi caso fué espectacular...

jueves, junio 22, 2006

SQLU SUMMIT 2006 Madrid 3er día

Tercer día, ya hemos llegado al tramo final, de aquí a al Viernes empezamos a recordar los días pasados, lo hecho hecho está. Vamos a aprovechar lo que nos queda y repasaremos el día de ayer.

Ayer Miércoles empezamos la mañana con Javier Loría en la sala de cubos, genial como es habitual en él, nos estuvo hablando del Algoritmo de Series de Tiempo. Nos mostró como usarlo si usar ni un sólo asistente de IS ó AS. Abrió su VS2005 y en C# nos hizo una pequeña presentanción de como nuestra aplicación puede trabajar con DataMining, fácil de entender y de trabajar, no hay secretos.

En la segunda sesión tuvimos a Daniel A. Seara que nos habló de como crear un informe con Reporting Services también en la sala de los cubos. Creo que si una persona que no conociera nada del mundo de la informática hubiera estado en esta sesión, seguro que habría aprendido perfectamente como se hace un reporte, es decir, Daniel es tan claro en sus presentaciones que no cuesta absolutamente nada entender todo los conceptos, es más, siempre deja claro que sus presentaciones son un diálogo entre presentador y oyentes y que con ese diálogo somos nosotros lo que le llevamos a nuestro terreno, gracias a eso creo que la presentación quedó nivelada a la media de conocimientos de los asistentes. Por mi parte ha sido esencial esta asistencia, creo que el 50%.

La tercera sesión fué otra vez con Daniel, esta vez para ver como implementar el control de errores Try Catch de T-SQL, pero no solo se quedó ahí, en su larga experiencia como desarrollador nos dió muy buenos consejos para controlar los errores a diferentes niveles. Se me olvidaba decir que esta charla la impartió en la sala de los índices.

Ya por la tarde tuvimos 2 sesiones de lo más interesante en la sala de los índices, esta vez enfocadas hacia la optimización de base de datos, en la primera estuvimos con Miguel Egea que nos explicó como funcionaban los Plan Guides, como siempre estuvo en su línea, "este tío es inigualable", si podéis asistir a una charla suya tenéis que ir, aunque no entendais el tema o no sepáis de que va, os puedo asegurar que además de rigurosas son divertidas.

Después, al final del día y por una indisposición del maestroo Guerrero, tuvimos una charla con 3 ponentes: Miguel, Eladio y Antonio. Han habido grandes tríos en la historia, como la Trinca y los 3 Mosqueteros, pero tener a estas 3 personas con total disponibilidad a la vez es como tener a los 3 reyes magos de Oriente en tu casa el día 6 de Enero. De Eladio Rincón no conté nada ayer y prometí decir algo hoy así que al lío. Eladio es el core de SQL, lo conoce más que un cirujano a un cuerpo humano. Te puede decir como funciona SQL por dentro y el porqué te fallan las cosas , casi al momento. La charla dejó de ser charla y fué un cúmulo de preguntas y respuestas, además de casos prácticos de alguno de los alumnos presentes.

Hoy me he retrasado un poco en preparar este documento, pero he tenido que organizar la cena de esta noche y casi no he tenido tiempo, así que lo siento, mañana no sé si podré ponerla, lo más seguro que comente las charlas del Jueves este fin de semana, porque nos vamos todos a cenar y supongo que nos acostaremos un poquito tarde de todas formas, gracias por leerme.

miércoles, junio 21, 2006

SQLU SUMMIT 2006 Madrid 2º día

Ayer fué el segundo día del SUMMIT. Para no perder el hilo estuve toda la mañana en sala de los cubos, la verdad es que las sesiones de ayer fueron mucho más aclaratorias para mí que las de la sesión anterior. Como vengo del mundo relacional, previo paso del mundo secuencial, entender los conceptos de Bussines Intelligense me cuesta una barbaridad, por lo que las sesiones de las que disfruté ayer me abrieron los ojos y la mente a unos nuevos conocimientos que debo poner en práctica lo antes posible.

La primera sesión la dió de nuevo el joven Francisco González, "Construyendo un Datawarehouse con Integration Services", de una forma sencilla y contínua nos puedo resumir en 1 hora un curso de 5 días, como decía él, por lo menos podemos saber de que tecnología disponemos y como se puede utilizar, luego nos recomendó bibliografía de la editorial Wiley para ampliar conocimientos.

La segunda sesión nos la impartió Javier Loría, esta ya fué el summun, me dejó gratamente impresionado, creo que asistiré a todas sus sesiones, en España la expresión que le va al pelo es "se expresa como un libro abierto". Su sesión era sobre modelamiento multidimensional con AS2005 y por lo que nos contó creo que adaptó su ponencia al nivel de conocimientos predominante de la sala. De esta charla salí con la sensación de que había adquirido los conocimientos necesarios para enfrentarme a OLAP y Datawarehouse, desde estas líneas quiero agradecer a Javier Loría que haya venido a España a difundir sus conocimientos. En cuanto a la primera charla de Javier a la que asistí en la Universidad de Alicante, siento que no lo hayamos aprovechado más, es una persona que se deja preguntar y disfruta respondiendo.

La tercera sesión nos la impartió Eladio Rincón, "Actualización de RS 2000 a RS2005", era una sesión técnica sobre las consideraciones a tener en cuenta para hacer una migración sin problemas. En la sala había gente que ya lo había intentado y estuvieron compartiendo sus experiencias con nosotros. Sobre Eladio no he comentado nada porque pienso que este tema no está a su altura, directamente pienso que es necesario impartirlo y que daba igual quien lo diera, pero me reservo los comentarios sobre Eladio al día de hoy en el que impartirá alguna sesión donde puede asegurar que es un experto. Eladio es la típica persona que analiza todo el porqué de las cosas, se mete en las tripas de todo para ver porqué falla o como funciona y así saber cual es la mejor técnica para mejorar el comportamiento de una bd, de un programa, o de lo que se le ponga por delante. (mañana os comentaré más).

Por la tarde decidí cambiar de sala y acudir por primera vez a la sala de índices, que por cierto estaba más llena que la de cubos. En la primera sesión de la tarde tuvimos a Antonio Soto hablando que nos estuvo dando consejos de como hacer y mantener las copias de seguridad en SQL 2005. A Antonio lo conozco poco, es una persona seria y muy concisa con sus expresiones, cuida su vocabulario y expresa sus conocomientos sin dudar y sin una palabra de más, analiza concienzudamente las preguntas que se le hacen y las responde de la mejor manera posible. Tengo que destacar de su charla que me sorprendió la posibilidad de restaurar una page sólo de la copia de seguridad, algo que hace un año me hubiera venido al pelo.

La última charla del día en la sala de índices fué un adelanto y una primicia en España. Fernando Guerrero y Adolfo Wiernik, recién venidos del Tech-Ed de USA decidieron adelantarnos y además regalarnos un cd de Database Professionals de Team System recién salido del horno. Es la primera sesión de Adolfo a la que acudo y como todos está muy predispuesto a respondernos en nuestras preguntas. Nos enseñó lo que se puede hacer con esta nueva herramienta, (digo lo que pudo porque esta versión está en pañales y le queda mucho hasta la release). Nos dejó un buen sabor de boca para los que diseñamos y mantenemos bases de datos a nivel de desarrollador, ya que esta herramienta nos ahorrará tiempo de implementación y mantenimiento, además de garantías de funcionamiento y revisión en la delegación de tareas a otros compañeros. En mi caso pienso que el core de una aplicación es la base de datos, por muy buena que sea la aplicacion si la base de datos no tiene un buen diseño (sp, vistas, tablas, relaciones) la aplicación no vale nada. En la empresa en la que trabajo no se delega nada a los programadores y me encargo personalmente junto con mi jefe del diseño de las bases de datos, así evitamos errores de diseño o al menos, los errores que cometemos los sabemos nosotros. Con esta herramienta tenemos el control en pre-producción sobre lo que se pretende modificar en la base de datos, además de las pruebas pertinentes antes de hacer el deployment.

Esto es todo lo que puedo decir del día, mañana más.

martes, junio 20, 2006

SQLU SUMMIT 2006 Madrid

Hoy empieza la 2ª jornada del SUMMIT. Es increíble el tener tanto MVP cerca, no te lo crees, vas a la cafetería y te encuentras 5 (el Guille, Salvador Ramos, Javier Loría, Adolfo Wiernik y Antonio Soto). Me pasan 1000 preguntas por lo cabeza, los tendría 1000 horas retenidos para que solucionaran los 1000 problemas que tengo día a día en mi empresa, pero lo único que puedo preguntarles es "¿Vistéis el partido de españa anoche?". Por Dios, como puedo decir semejante estupidez?, o me pongo las pilas o pasará este Summit y seguiré haciendo las preguntas en las news de Microsoft.

Ahora al grano, ayer fué una buena jornada para entrar en materia. Empezó el día con un poco de retraso, supongo que esperando a aquellas personas que tenían que viajar para venir a Madrid. En mi caso no fué así porque me desplacé desde Alicante el día anterior, quería estar el Lunes al 100% para no perderme ni una coma.

Como decía, empezó el día tarde pero con una introducción de Fernando Guerrero que estaba cargada de anécdotas, esas anécdotas que sólo una persona como él y con tantos contactos puede llegar a saber. Luego me pasé a la sala de los cubos, para entrar en materia quiero explicar que teníamos 2 conferencias simultáneas, una de índices que estaba basada en base de datos relacionales, y otra de cubos basada en inteligencia de negocio (BI).
En la sala de los cubos tuvimos 4 conferencias durante todo el día, la primera era sobre ETL y la dió Salvador Ramos. Quiero decir que Salvador Ramos es una persona increíblemente amable de la cual puedes disponer a cualquier día y hora. Está dispuesto a ayudarte las 24 horas del día, es serio y conciso y nunca se anda con rodeos. Su exposición ha sido una de las más rigurosas en cuanto a información, sin entrar en detalles vanales nos hizo una introducción de lo que nos podíamos encontrar con el nuevo SSIS.
La segunda exposición fué sobre OLAP sin DataWarehouse de Javier Loría. Javier es Costaricense y ha venido a España a hacer la presentación de SQL Server 2005 y VS2005 con Microsoft. Sus explicaciones de BI dejan embelasado a cualquiera, sus conocimientos en BI dejan atónitos a cualquier responsable de Marketing de este pais, la charla fué sensacional, nos mostró como crear una capa de negocio para consultas sobre una base de datos relacional sin tener que crear un datawarehouse.
La tercera charla nos la dío Javier Loría junto el maestro Miguel Egea, lo llamo maestro porque una charla con Miguel es como una charla del club de la comedia, pero no porque no sea seria y rigurosa, es porque sus charlas son muy amenas y divertidas, y además cargada de mucha información que sabe dosificar e inculcarnos sin que apenas nos enteremos. Puedo asegurar que oirlo hablar es todo un placer para los sentidos. Su charla fué un complemento a la charla que nos dió Salva por la mañana y nos mostró como adaptar un viejo paquete DTS al nuevo SSIS y que condiciones y parámetros debemos tener en cuenta para la migración.
La cuarta y última charla de Francisco González fué un debate más que una charla. Creo que fué la culminación de un día perfecto. No se puede pedir más, unas 15 personas compartiendo sus dudas y conocimientos y un estupendo moderador (Francisco) que nos guiaba en nuestras dudas, Francisco es una de los nuevos cerebros de Solid y creo que va a aportar mucho en un futuro muy cercano a toda la comunidad informática.

Sin más que contar, creo que lo mejor será que me incorporé al segundo día, hoy creo que va a ser el mejor de todos, espero que Adolfo y Miguel me expliquen como crear un proyecto desde cero con VSTS.

sábado, junio 10, 2006

XML en Visual Studio 2005

En esta dirección os dejo un presentación en Powerpoint y unas demos que preparé para una reunión del grupo GUSENET en la Universidad de Murcia.

XML en Visual Studio 2005

jueves, abril 13, 2006

Leer un XML para mostrar en un TREEVIEW

Con este código podemos pasar la estructura XML en forma de árbol en un TREEVIEW. El código se ha creado en Visual Basic 8.0/2005.

Imports System.IO
Imports System.Xml
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim xmlR As New XmlTextReader("C:\Fuentes .NET\JPA_ACAFE\Ximo\TreeView\TreeView\XMLFile1.xml")

Do While xmlR.Read()
If xmlR.NodeType = XmlNodeType.Element Then
'Nodo raíz
Dim node As New TreeNode
node.Text = xmlR.Name
TreeView1.Nodes.Add(leerSubNodos(xmlR.ReadSubtree, xmlR.Depth, node))
End If
Loop
TreeView1.AllowDrop = True
End Sub
Private Function leerSubNodos(ByVal xmlR As XmlReader, ByVal nivel As Integer, ByRef node As TreeNode) As TreeNode
xmlR.Read()
Do While xmlR.Read()
If xmlR.NodeType = XmlNodeType.Element Then
Dim newNode As TreeNode = node.Nodes.Add(xmlR.Name)
If xmlR.NodeType = XmlNodeType.Element And nivel <= xmlR.Depth Then
leerSubNodos(xmlR.ReadSubtree, xmlR.Depth, newNode)
End If
End If
Loop
leerSubNodos = node
End Function
End Class

sábado, febrero 11, 2006

Consulta encolumnada de XML con T-SQL

Estas son una soluciones a una duda que planteé en una reunión de grupo GUSENET. A esta duda me contestaron Miguel Egea y Pedro Hurtado.
La pregunta era como conseguir hacer un select para recibir de una forma "normal" los datos y así poder tratarlos como información SQL pura y dura.

/* Se adjuntan 6 ejemplos. los 3 primeros sin namespace y los 3 siguientes con
namespace*/
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--Sin namespace:
declare @xml xml
set @xml = 'Verde5Azul2'
--EJEMPLO 1 by Pedro Hurtado
SELECT T.c.value('@ID','INT') AS BLOQUE_ID,
T2.color.value('.','VARCHAR(25)') AS COLOR,
T3.peso.value('.','DECIMAL(10,2)') AS PESO
FROM @xml.nodes('/PRODUCTOS/PRODUCTO') T(c)
OUTER APPLY T.c.nodes('./COLOR') as T2(color)
OUTER APPLY T.c.nodes('./PESO') as T3(peso)

--EJEMPLO 2 by Pedro Hurtado

SELECT T.c.value('@ID','INT') AS BLOQUE_ID,
T.c.query('./COLOR').value('.','varchar(25)') AS COLOR,
T.c.query('./PESO').value('.','decimal(10,2)') AS PESO
FROM @xml.nodes('/PRODUCTOS/PRODUCTO') T(c)

--EJEMPLO 3 by Miguel Egea
DECLARE @idoc AS INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
SELECT * FROM
OPENXML (@idoc, '//PRODUCTOS/PRODUCTO',2)
WITH (ID int '@ID',
COLOR varchar(20) 'COLOR',
PESO decimal(18,2) 'PESO')
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--Con namespace
GO
declare @xml xml
set @xml = 'Verde5Azul2'
--EJEMPLO 4
;with xmlnamespaces('http://www.productores.org/XML' as ns)
SELECT T.c.value('@ID','INT') AS BLOQUE_ID,
T2.color.value('.','VARCHAR(25)') AS COLOR,
T3.peso.value('.','DECIMAL(10,2)') AS PESO
FROM @xml.nodes('/ns:PRODUCTOS/ns:PRODUCTO') T(c)
OUTER APPLY T.c.nodes('./ns:COLOR') as T2(color)
OUTER APPLY T.c.nodes('./ns:PESO') as T3(peso)

--EJEMPLO 5
;with xmlnamespaces('http://www.productores.org/XML' as ns)
SELECT T.c.value('@ID','INT') AS BLOQUE_ID,
T.c.query('./ns:COLOR').value('.','varchar(25)') AS COLOR,
T.c.query('./ns:PESO').value('.','decimal(10,2)') AS PESO
FROM @xml.nodes('/ns:PRODUCTOS/ns:PRODUCTO') T(c)
DECLARE @idoc AS INT

--EJEMPLO 6
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml,''
SELECT * FROM
OPENXML (@idoc, '//ns:PRODUCTOS/ns:PRODUCTO',2)
WITH (ID int '@ID',
COLOR varchar(20) 'ns:COLOR',
PESO decimal(18,2) 'ns:PESO')
GO

Etiquetas

.net (1) ALGORITMO (4) algoritmos (1) Android (1) angular (2) aplicaciones WEB (1) ARGENTINA (1) ASP (4) asp .NET (1) ASP .NET Identity (1) attach (1) Azure (1) base de datos (1) BINDING (1) BioInformática (2) bootstrap (1) C (2) C# (27) castellano (1) catalán (1) Charla (1) CheckedListBox (1) Clase (1) clausura transitiva (2) CLIENTES (1) Closing (1) Combobox (1) Comisiones (1) CONCURSO (1) condones (1) consultas (1) corrupta (1) CORS OWIN (1) CORS WEB API 2 (1) Criptografía (1) CUENTA NARANJA (1) Custom Control (1) Daniel Seara (1) DATAGRIDVIEW (1) David Salgado (2) dendrograma (6) depurar (1) desarrollo (1) Deserializar (1) DEVCAMP (2) durex (1) e-DNI (1) el Guille (2) Eladio Rincón (1) elGamal (1) encriptación (1) encuesta (1) Entidad (1) ERROR (2) error 3624 (1) España (1) España es nido de víboras. (1) Euclides (1) Euclides extendido (1) evento (1) eventos. (1) factorización (1) factorizar (1) física (1) Framework 2.0 (1) Framework 3.5 (5) Framework 4 (2) Francisco González (1) Francisco Ruiz (1) GO (1) google (1) gossip (1) Grupos de usuarios (1) Guadalajara (1) Guille Comunity Tour (2) Gusenet (9) GUSENET. (1) Huelga informáticos (1) IBEX 35 (1) Idioma (1) IFT (1) IISExpress (1) Indice de Fuerza Tecnica (1) informática (1) Informix (1) ING DIRECT (1) INGDIRECT (1) Ingeniería Informática (2) Inteligencia artificial (5) Intro (1) IOS (1) IPad (1) IPhone (1) IV Aniversario (1) JavaScript (2) JPA (2) keybd_event (1) LA CAIXA (1) La Pineda (1) ladroentidad (1) Lector RSS (2) LINQ (5) LINQ2XML (1) ListBox (1) Live Distributed Objects (1) llenar (1) LOG (1) Madrid .NET (1) MainMenu (1) MAP (1) MAP 2011 (1) MAR DEL PLATA (1) matemáticas (1) Matriculación (1) MDIList (1) MdiWindowsListItem (1) MenuItem (1) MenuStrip (1) Microsoft (18) Microsoft Active Professional (1) Miguel Egea (2) MSDE 2 (1) MSDE 2000 (1) MVVM Light (2) mysql (1) NAMESPACE (1) Needleman (2) NET (1) NS (1) Oferta empleo (1) Office 14 (1) Office 2007 (1) Office 2009 (1) ON ERROR (1) OOB (1) Oscar Montesinos (1) OWIN (1) OWIN Security middleware (1) Paginación (1) PDC (1) Pedro Hurtado (1) PINTARTECA (1) PrinterSettings (1) Process (1) ProcessStartInfo (1) Programador (1) Relacional (1) robo (1) RSS (1) Rubén Garrigós (1) Salvador Ramos (1) Santa Pola (1) scrape (1) scraping (1) ScrollBar (1) Secretaría (1) SendInput (1) SENDKEYS (1) Sergio Vázquez (1) Serializar (1) Silverlight 2.0 (2) Silverlight 4 (1) Silverlight 5 (3) Silverlight. (1) Sindicado (1) Sistema Personal de Trading (3) Sistemas Distribuidos (1) SOLID SUMMIT 2009 (1) SPT (2) SQL Server (3) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (3) SQL Server Denali (1) SQL Server Information Services. (1) SQLU (1) SSIS (1) SUMMIT SQL (1) Suspect (1) Syndication (1) TAB (1) Tablas (1) Tarragona (1) Token bearer (1) ToolStripMenuItem (1) ToString() (1) Traductor (1) transacciones (1) treeview (1) truco (1) TRY CATCH (1) UCI (1) Unience (2) Universad (1) Universidad Oberta Catalunya (2) UOC (8) Usuarios. (1) VB (1) VB6 (1) VB9 (1) VIAJAR (1) Vila-seca (1) VISUAL BASIC (3) Visual Basic. (1) visual studio (1) Visual Studio 2005 (1) Visual Studio 2008 (16) Visual Studio 2010 (2) Visual Studio 2013 (1) VS2010 (1) VSTA (1) VSTO (1) WCF (1) WEB API (1) web.config (1) WebClient (1) WF (1) windows (1) Windows 7 (3) Windows 8 (2) Windows Azure (1) Windows pone (1) Windows Server 2008 (1) Windows Vista (1) woff (1) WP7 (1) WPF (1) Wunsch (2) XAML (4) XDocument (1) XElement (1) XML (3) XNA (1) Yield (2)