Produciendo HTML dinámico mediante Microsoft Visual Basic y SQL Server Express 2005


Fecha: 05/Jul/2005 (04-07-05)
Autor: Lic. Giovanni Cuadra Reyes
AmericanCollege IT Manager
Email: [email protected]
[email protected]

!!!Tecnología de la Programación!!!

Managua, Nicaragua.

 


Introducción

La experiencia del Web se dio con el nacimiento oficial cuando Tim Berners-Lee diseño HTML, el cual permitiría a las personas de una comunidad física nuclear comunicarse una con otra. Años más tarde en el verano de 1991 se puso disponible al publico, con el objetivo de compartir información y disfrutar todo aquello que se podía publicar. Berners-Lee baso HTML en SGML.

En la década de los años 90 el tema de Internet con bases datos era un poco complejo. No se contaba con poderosas y versátiles herramientas que facilitaran un poco el desarrollo de dichas aplicaciones. Lenguajes de guiones como CGI, Java tenían todas las características para poder desarrollar aplicaciones basadas en datos, pero no tenían aquello que todos denominamos software que simplifica el trabajo de desarrollo. Y si hablamos de software para desarrollar las páginas habían pocos y recuerdo que el más popular era el inolvidable Hot Dog y el cuaderno de notas de Windows.

Este articulo no es acerca de Hypertext Markup Language (HTML). Pero esta basado en como podemos trasladar de forma dinámica y sencilla datos almacenados en SQL Server a HTML. Utilizando el poder de los procedimientos almacenados de SQL Server Express 2005 Beta y un poco de código de Visual Basic Express Beta, expondré un sencillo ejemplo en como se pueden utilizar estas herramientas con el propósito de dinamizar el proceso de extracción de datos desde una base de datos hacia una página HTML utilizando una pequeña aplicación en VB Express.

Produciendo HTML desde Transact-SQL

Transact-SQL con el paso de los años se a ido unificando dentro de SQL Server como un elemento, una forma de simplificar mucha escritura de código dentro de nuestras aplicaciones, posibilitando que procedimientos de acceso a datos puedan ser ejecutados desde un servidor de datos central, minimizando trafico de red, aumentando velocidad de acceso y procesamiento. Por lo tanto la evolución de Transact-SQL a posibilitado sacar el máximo provecho a las aplicaciones de Internet.

A continuación muestro de manera grafica un procedimiento almacenado diseñado en SQL Server Express 2005 Beta 2, produciendo HTML dinámico basado en una tabla de datos, dicho ejemplo es compatible con SQL Server 2000.

Dentro del depurador de CLR 2.0 se produciría una salida de datos de la siguiente forma:

Las tablas representan una forma natural para relacionar datos. Además HTML ofrece soporte directo al despliegue de datos tabular. Únicamente lo que se hace es que SQL Server produzca los datos en un formato que lo pueda interpretar el explorador de Web.

Produciendo HTML desde sp_makewebtask

En la versión de SQL Server 2000, Microsoft integro un poderoso procedimiento almacenado llamado sp_makewebtask que permite crear páginas HTML basadas en datos de SQL Server. Con la nueva versión de SQL Server Express 2005 Beta, he experimentado ejecutar dicho procedimiento dentro del nuevo SQL Server Beta, enlazándolo desde un servidor de SQL Server 2000 y las pruebas son muy optimas. A continuación muestro una figura con el modelo del procedimiento almacenado, así como su llamada desde SQL Server Express Beta.

La línea en comentario Exec sp_addlinkserver 'giovanni' es la conexión entre el servidor de SQL Server 2000 al servidor SysServer 2005 de SQL Server Express Beta. En la sección Output se muestra el resultado de la ejecución. Dicho procedimiento produce un archivo HTML basado en datos y como se puede observar en el parámetro @query se invoca una instrucción SQL que es la que resultara en el archivo producido con el nombre de cust_table.htm.

Produciendo HTML desde una plantilla del procedimiento sp_makewebtask

Una de las virtudes del procedimiento sp_makewebtask es que es posible procesar o producir HTML basada en datos utilizando una plantilla prediseñada, obteniendo como resultado una página con características personalizadas. A continuación muestro una figura donde se resalta el parámetro de dicho procedimiento para lanzar la página.

El parámetro @templatefile permite utilizar una platilla que se ajuste a las necesidades de presentación para los datos. El archivo cust_table.htp es todo texto, diseñado en el cuaderno de notas de Windows. Dicho archivo tiene la estructura básica de HTML más unos TAG que permite decirle a SQL Server donde ubicara los datos que vienen de la base de datos. En el ejemplo en código fuente se podrá observar dicho archivo al abrirlo con el cuaderno de notas. Para poder crear dicho archivo, se pueden optar por dos opciones, la primera es utilizando el cuaderno de notas de Windows y la segunda es diseñándolo desde el mismo Visual Studio 2005 Beta. A continuación muestro el formulario para crearlo desde VS 2005 Beta.

Como se pude observar es requerido seleccionar la plantilla Text File que es la que nos permitirá diseñar el archivo de formato texto y sobrescribiéndole la extensión htp. Para una aclaración mas especifica las plantillas las podemos diseñar nosotros mismos e insertarles objetos gráficos, como el logo de la empresa, color, tipo de letra y de más cosas que nos proporciona HTML. A continuación muestro el código de la plantilla.

<HTML>

<HEAD>

<TITLES>Plantilla para mostrar datos de la tabla Customer</TITLES>

<BODY>

<H1>Customers</H1>

<P>

<TABLE BODER>

<TR><TH><B>Nombre de la compañia</B></TH><TH><B>ID del cliente</B></TH></TR>

<%begindetail%>

<TR><TD><%insert_data_here%></TD><TD><I><%insert_data_here%></I></TD></TR>

<%enddetail%>

</TABLE>

</BODY>

</HTML>

Como se puede observar los TAG que no pertenecen a HTML son los que le dicen a SQL Server donde insertar los datos. En el caso del ejemplo fue diseñado para mostrar los datos de forma tabular.

Implementando una solución con VB Express y SQL Server 2005

A continuación para demostrar un sencillo ejemplo de como producir HTML basado en datos, listo los requerimientos mínimos necesarios para ejecutar el proyecto:

 

 

Esta solución integra una pequeña aplicación al estilo explorador Web con el objetivo de mostrar los resultados en una página HTML. Esto es posible gracias al nuevo objeto integrado en Visual Basic Express 2005 beta denominado WebBrowser. A continuación muestro el formulario de la aplicación en forma de diseño.

La lógica de dicha aplicación es ejecutar el procedimiento almacenado y posteriormente mostrar los resultados desde la página Web localizada en la raíz de C:\>.

Iniciando con el código muestro pequeños pedazos de la clase principal que permite ejecutar tanto la base de datos como el mismo procedimiento almacenado. Este ejemplo lo ejecuto con uno de los procedimiento almacenados que he diseñado. Para poder ejecutar los otros solo se requiere reemplazar el nombre del que invoco en el código por cualquiera de los anteriores que fueron creados.

Imports System.Data

Imports System.Data.SqlClient

Public class sql2005

    private shared con as sqlconnection

    shared sub new()

        try

            '--Ejecutar la conexión

            con = new sqlconnection(my.settings.connection)

            con.Open()

        catch ex as Exception

            '--Mensaje al usuario por cualquier error dado.

            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")

            '--Cerrar la conexión

            con.Close()

         end try

      end sub

    public shared sub Opendatabase()

        '--Inicializar la conexión del procedimiento.

        '--Procedimiento almacenado.

        using cmd as new sqlcommand("autowebcreatewithtemplate", con)

            '--Declarar el tipo de comando.

            cmd.CommandType = CommandType.StoredProcedure

            '--Ejecutar el procedimiento.

            cmd.ExecuteNonQuery()

        end using

    end sub

end class

Posteriormente a la clase, será necesario invocarla desde el evento Load del formulario. A continuación muestro la forma de como se tiene que invocar. Hay que tomar en cuenta que utilizo la clave reservada Shared que permite llamar a los elementos de una clase sin crear instancia alguna.

Imports System.Data

Imports System.Data.SqlClient

Public class frmmain

    private sub frmMain_Load(byval sender as System.Object, ByVal e as System.EventArgs) handles mybase.load

        '--Segunda forma de vinculación utilizando una clase

        SQL2005.Opendatabase()

        With Me

                            .txtURL.Text = "C:\cust_table.html"

                            .wbNicasoft.Url = .txtURL.Text

                    End With

     end sub

End class

 

A continuación muestro los resultados en tiempo de ejecución, tanto en usando platilla HTML así como sin la misma.

 

Conclusiones

La nueva generación de herramientas Microsoft proporcionan todos los elementos necesarios para desarrollar aplicaciones totalmente escalables y compatibles entre sí. Era inimaginable pensar en la década pasada que en el nuevo siglo contáramos con herramientas tan poderosas y fáciles de utilizar para simplificarnos aun más el trabajo de desarrollo. Así que estaremos atentos este mes de noviembre al lanzamiento oficial del nuevo Microsoft Visual Studio 2005 y sus más grandes logros en la industria del software.

Para obtener mejores ganancias, será necesario obtener el conocimiento primero.

Y para obtener el conocimiento, será necesario un sacrificio para mantenernos actualizados.

Giovanni Cuadra.


Ficheros con el código de ejemplo: Nicasoft .Net 2005 (Haga clic aquí para ir al grupo)


ir al índice