You are on page 1of 41

Mdulo 8.

Acceso a datos del servidor


Introduccin a los datos del servidor El acceso a datos es la esencia de cualquier aplicacin del mundo real y ASP.NET proporciona un nutrido conjunto de controles que se integran bien con las API de acceso administrado a datos que proporciona Common Language Runtime. En esta seccin se describen varias iteraciones de un ejemplo que utiliza el control GridView de ASP.NET para enlazar con los resultados de consultas SQL y archivos de datos XML. Tambin se supone cierta familiaridad con los fundamentos de bases de datos y el lenguaje de consulta SQL. El acceso a datos en el servidor es exclusivo en cuanto a la ausencia bsica de informacin de estado de las pginas Web, lo que presenta algunas dificultades al intentar realizar transacciones como insertar o actualizar registros a partir de un conjunto de datos recuperados desde una base de datos. Como se ver en esta misma seccin, el control GridView puede ayudar a administrar estas dificultades, lo que permite concentrarse ms en la lgica de la aplicacin y menos en los detalles de la administracin del estado y el control de eventos.

Conexiones, comandos y conjuntos de datos Common Language Runtime proporciona un conjunto completo de interfaces API de acceso a datos administrados para el desarrollo de aplicaciones con un uso intensivo de datos. Estas API ayudan a extraer los datos y a presentarlos de forma coherente sin importar el origen real (SQL Server, OLEDB, XML, entre otros). Bsicamente, hay tres objetos con los que ms se trabaja: conexiones, comandos y conjuntos de datos.

Una conexin representa una conexin fsica a algn almacn de datos, como SQL Server o un archivo XML. Un comando representa una directiva para recuperar (select) desde el almacn de datos o manipular dicho almacn (insert, update, delete). Un conjunto de datos representa los datos reales con los que trabaja una aplicacin. Hay que tener en cuenta que los conjuntos de datos se encuentran siempre desconectados de la conexin de origen y el modelo de datos correspondiente, y que pueden modificarse de forma independiente. Sin embargo, los cambios que se realizan en un conjunto de datos pueden reconciliarse fcilmente con el modelo de datos originario.

Obtener acceso a datos basados en SQL Una aplicacin suele necesitar realizar una o ms consultas a la base de datos de SQL en lo que respecta a seleccionar, insertar, actualizar o eliminar. En la siguiente tabla se muestra un ejemplo de cada una de estas consultas.

Consulta Seleccin simple Seleccin combinada Insertar Actualizar Eliminar SELECT * from Employees WHERE FirstName = 'Bradley';

Ejemplo

SELECT * from Employees E, Managers M WHERE E.FirstName = M.FirstName; INSERT into Employees VALUES ('123-45-6789','Bradley','Millington','Program Manager'); UPDATE Employees SET Title = 'Development Lead' WHERE FirstName = 'Bradley'; DELETE from Employees WHERE Productivity < 10;

Con el fin de proporcionar a la pgina acceso a las clases que se necesitarn para realizar un acceso a datos de SQL, hay que importar los espacios de nombres System.Data y System.Data.SqlClient a la pgina en cuestin.

Enlazar datos SQL a GridView En el siguiente ejemplo se muestra una consulta de seleccin simple enlazada a un control GridView. GridView procesa una tabla que contiene los datos de SQL. Al igual que el control DropDownList, el control GridView admite una propiedad DataSource que toma IEnumerable o ICollection, as como DataSet. Se puede utilizar DataSet asignando la propiedad DefaultView de una tabla incluida en DataSet al nombre de la tabla que se desea utilizar dentro de DataSet. La propiedad DefaultView representa el estado actual de una tabla dentro de DataSet, incluido cualquier cambio que haya realizado el cdigo de la aplicacin (como eliminar filas o cambiar valores). Despus de establecer la propiedad DataSource, se llama a DataBind() para llenar el control

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

87

Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto GridView Propiedad ID Auto Fromat Valor GridView1 Simple

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Introducir aqu el cdigo de usuario para inicializar la pgina Dim DS As System.Data.DataSet Dim Cn As New System.Data.OleDb.OleDbConnection Dim Adaptador As System.Data.OleDb.OleDbDataAdapter Cn.ConnectionString = "Provider=SQLOLEDB;User Id=sa;Password=;Data Source=(local); Initial Catalog=Curso;" Cn.Open() Adaptador = New System.Data.OleDb.OleDbDataAdapter("select Usuario,NomParticipante as [Nombre Participante],EmpOEsc as [Origen],cveCiudad from Participante", Cn) DS = New System.Data.DataSet Adaptador.Fill(DS, "NomTab") GridView1.DataSource = DS.Tables("NomTab").DefaultView GridView1.DataBind() End Sub

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

88

Este mismo ejemplo se puede hacer sin cdigo, a continuacin se muestran dichos pasos: 1 Dar clic en la esquina superior derecha del gridview y enseguida se muestra el men para configurar el acceso a base de datos:

2 En la opcin Choose Data Source seleccione New Data Source, para crear un control DataSource, enseguida aparece la siguiente ventana:

3 En esta seleccione Database y presiona el botn de OK, a continuacin se muestra la siguiente ventana:

4 Como no tenemos creada una conexin a base de datos presionaremos el botn de New Connection, mostrndonos la siguiente ventana:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

89

5 En esta ventana deberemos teclear el nombre de mi servidor de base de datos: (local), el usuario: sa y seleccionamos la base de datos: Curso y presionamos el botn de OK

6 Si todo fue correcto se mostrara esta ventana y presionamos el botn de Next, mostrndonos la siguiente ventana:

7 En est deberemos presionar el botn de Next, se presentar la siguiente ventana, en la cual deberemos crear la consulta que deseamos mostrar en el gridview:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

90

8 Para este ejemplo seleccionamos la tabla de participante y los campos como se ve en la ventana y presionamos Next, enseguida se muestra la ventana:

9 En esta presionaremos Finish, enseguida podremos ejecutar la pgina, dando el mismo resultado que el ejercicio anterior pero sin cdigo.

Realizar una Seleccin Parametrizada Tambin se puede realizar una seleccin parametrizada mediante el objeto SqlDataAdapter. En el siguiente ejemplo se muestra cmo se pueden modificar los datos seleccionados mediante el valor expuesto desde un control DropDownList seleccionado. Coloque los siguientes controles de acuerdo a la siguiente tabla:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

91

Objeto DropDownList Button GridView

Propiedad ID ID Text ID Auto Format

Valor DropDownList1 Buscar Buscar GridView1 Simple

Configure el DropDownList1 como el GridView1 del ejemplo anterior: El GridView1 se configura igual que el del ejemplo anterior, pero en el paso 7 hay que agregar la condicin para ligar el DropDownList1 con el GridView, entonces presione el botn Where, mostrndose la siguiente ventana:

Configrela como se muestra y presione el botn de Add y enseguida el de OK, mostrndose la siguiente ventana:

En esta presionaremos Next, seguido de Finish, a continuacin ya puede ejecutar la pgina, quedando como a continuacin se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

92

Insertar datos en una base de datos de SQL Para insertar una fila en una base de datos, se puede agregar a la pgina un formulario de entrada sencillo y ejecutar un comando de insercin en el controlador de eventos de envo de formularios. Se utiliza la coleccin Parameters del objeto de comando para llenar los valores del comando. Hay que tener en cuenta que tambin hay que realizar una comprobacin para asegurarse de que los valores requeridos no son nulos antes de intentar insertarlos en la base de datos, esto lo efectuaremos usando los controles de validacin proporcionados por ASP .Net. Esto evita una infraccin accidental de las restricciones de campo de la base de datos. El comando de insercin tambin se ejecuta dentro de un bloque try/catch, por si se da el caso de que ya exista la clave primaria de la fila insertada.

Coloque los siguientes controles de acuerdo a la siguiente tabla:

Objeto
GridView DropDownList Button TextBox TextBox TextBox TextBox Label RequiredFieldValidator RequiredFieldValidator RequiredFieldValidator RequiredFieldValidator

Propiedad
ID Formato Automtico ID ID Text ID ID ID ID TextMode ID Text ControlToValidate ErrorMessage ControlToValidate ErrorMessage ControlToValidate ErrorMessage ControlToValidate ErrorMessage GridView 1 Simple DropDownList1 Agregar Agregar Participante Usuario NomParticipante EmpOEsc Password Password Estado

Valor

Usuario Se requiere un Nombre de Usuario NomParticipante Se requiere el nombre del participante EmpOEsc Se requiere el nombre de la empresa o escuela Password La contrasea es obligatoria

El llenado del DropDownList1 se debe hacer en base a los ejemplos anteriores.

Se debern agregar las siguientes importaciones:


Imports System.Data.OleDb Imports System.Data

Se deber agregar el siguiente cdigo:


Dim Cn As OleDbConnection

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Cn = New OleDbConnection("Provider=SQLOLEDB;User Id=sa;Password=;Data Source=(local);Initial Catalog=Curso;") If IsPostBack = True Then Exit Sub Call CargaGrid() End Sub

Sub CargaGrid() Dim DS As New DataSet Dim Adaptador As New OleDBDataAdapter("select Usuario,NomParticipante as [Nombre Participante],EmpOEsc as [Origen],cveCiudad from Participante", Cn) Adaptador.Fill(DS, "NomTab") GridView1.DataSource = DS.Tables("NomTab").DefaultView GridView1.DataBind() End Sub

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

93

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Estado.Text = "" Dim Sentencia As String Dim Comando As OleDbCommand Sentencia = "Insert into Participante values ('" + Usuario.Text + "', '" + NomParticipante.Text + "', '" + EmpoEsc.Text + "'," & DropDownList1.SelectedItem.Value.ToString & ", '" + Password.Text + "')" Comando = New OleDbCommand(Sentencia, Cn) Comando.Connection.Open() Try Comando.ExecuteNonQuery() Estado.Text = "<b>Registro agregado</b><br> " & Sentencia Call LimpiarCajas() Catch Exp As System.Data.OleDb.OleDbException Estado.Text = "ERROR: no se pudo agregar el registro, compruebe que los campos estn rellenos correctamente" End Try Comando.Connection.Close() CargaGrid() End Sub

Private Sub LimpiarCajas() Usuario.Text = "" NomParticipante.Text = "" EmpoEsc.Text = "" Password.Text = "" Usuario.Focus() End Sub

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

94

Actualizar datos en una base de datos de SQL Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto
GridView1

Propiedad
ID Formato Automtico GridView1 Simple

Valor

1 Configurar en la esquina superior izquierda Cose Data Source, de acuerdo al los ejemplos anteriores con la tabla de participante y seleccionando los campos de: usuario, NomParticipante, EmpOEsc, CveCiudad. El GridView queda como a continuacin se muestra:

2 Enseguida entre a editar las columnas en Edit Columns, como se muestra:

3 Agregar una columna de tipo Command Field------Edit-Update-Cancel, para que sea la primera del GridView, como a continuacin se muestra:

4 Convierta la columna NomParticipante,EmpOEsc y CveCiudad a TemplateField, quedando de la siguiente manera:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

95

La ventana queda como a continuacin se muestra:

5 Presente las propiedades del SQLDataSource y modifique la propiedad UpdateQuery, presentndose como se muestra a continuacin:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

96

6 Ejecute la pgina y edite algn registro:

Como se puede observar podemos modificar un registro directamente en el GridView.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

97

Template Column Los controles BoundColumn no son los nicos que se pueden establecer en la coleccin Columns de GridView. Tambin se puede especificar TemplateColumn, que proporciona un control total sobre el contenido de la columna. La plantilla slo tiene contenido arbitrario; se puede procesar cualquier cosa que se desee, incluyendo controles de servidor, dentro de las columnas de GridView. En el siguiente ejemplo se muestra cmo utilizar el control TemplateColumn para procesar la columna "CveCiudad" como una lista desplegable. La sintaxis de enlace de datos de ASP.NET se utiliza para extraer el valor del campo de datos de la plantilla. Debe observarse que hay algo de lgica complicada para hacer que la lista desplegable y la casilla de verificacin reflejen el estado de los datos dentro de la fila. Al igual que se puede colocar una lista desplegable o una casilla de verificacin HtmlControl en TemplateColumn, tambin pueden colocarse otros controles. En el siguiente ejemplo se agregan controles Validator a las columnas para comprobar la entrada del cliente antes de intentar realizar la actualizacin.

Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto


GridView

Propiedad
ID Formato Automtico GridView Simple

Valor

Siga las instrucciones del ejemplo anterior para configurar el GridView o parta del ejemplo anterior para hacer este ejercicio, la ventana queda como a continuacin se muestra:

Una vez efectuado esto, en la esquina superior derecha del GridView seleccione Edit Templates, apareciendo la siguiente ventana:

En la esquina superior derecha del Template seleccione el NomParticipante, como se muestra a continuacin:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

98

y, a continuacin, elija el tipo de plantilla que desea editar, para este ejemplo al Nombre Participante y Empresa seleccione la plantilla Edit Item Template y coloque ahora al lado del TextBox un Control RequiredFieldValidator, colocando un * en la propiedad ErrorMessage y Textbox1 en la propiedad ControlToValidate. Para la Ciudad seleccione la plantilla Edit Template y elimine el TextBox y ahora coloque un DropDownList. Nota: Deber asegurarse que los nombres de los controles colocados en la ventana Edit Templates, sean nicos. Una vez configurado esto hacer clic derecho y seleccionar Terminar edicin de plantilla.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

99

Al colocar el DropDownList1 este deber ser configurado siguiendo los siguientes pasos: Clic en la esquina superior derecha del DropDownList1 y seleccionar Choose Data Source, para crear un nuevo origen de datos como a continuacin se muestra:

Asignar el nombre DWL1 al nuevo DataSource de DataBase, como se muestra a continuacin:

En la siguiente ventana seleccione la conexin a la base de datos, como se muestra:

Presionar el botn de Next y configure la siguiente ventana como se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

100

Seleccionamos la tabla de ciudad por que es la informacin que se desea mostrar en el DropDownList1, en la siguiente ventana presione Finish y mostrara la siguiente ventana:

El campo a desplegar como se puede observar es el NomCiudad. Enseguida seleccionaremos Edit DataBindings, para ligar el campo del GridView con el campo del DropDownList1, configrelo como se muestra a continuacin:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

101

Presione el botn de Ok y en la esquina superior derecho del Template seleccione End Template Edit, como se muestra a continuacin:

Lo que sigue ahora es ejecutar la pgina y probar la edicin de un registro:

Eliminar datos en una base de datos de SQL Realizar eliminaciones en una base de datos es muy similar a una actualizacin o a un comando de insercin, pero se necesita una forma de determinar la fila concreta de la cuadrcula que se va a eliminar. En el siguiente ejemplo se muestra este proceso. Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto
GridView

Propiedad
ID Formato Automtico GridView 1 Profesional 2

Valor

Una vez colocado el GridView y configurado como los ejemplos anteriores, entre en la esquina superior derecha y seleccione Edit Columns para agregar una columna de tipo Command Field y colocarla como la primera, como a continuacin se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

102

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

103

La Ventana Queda como a continuacin se muestra:

Enseguida seleccione del SQLDataSource y seleccione la propiedad Delete Quero, presentndose la siguiente ventana:

Escriba el Delete como se ve en la figura y enseguida presion el botn de OK.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

104

Lo que resta es ejecutar la pgina y probarla.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

105

Trabajar con Relaciones de Maestros Detalles A menudo el modelo de datos contiene relaciones que no se pueden representar slo mediante una cuadrcula sencilla. Una interfaz Web muy comn es aquella en la que una fila de datos, que se puede seleccionar, desplaza al cliente hacia una pgina "details" que muestra informacin detallada acerca de la fila seleccionada. Para conseguirlo mediante DataGrid, se puede agregar una columna HyperLinkColumn a la coleccin Columns, que especifica la pgina de detalles a la que se desplazar el cliente al hacer clic en el vnculo. La sintaxis de cadena de formato se utiliza para sustituir un valor del campo en este vnculo que se pasa como un argumento querystring. En el siguiente ejemplo se muestra este proceso. En la pgina de detalles, se recupera el argumento querystring y se realiza una seleccin combinada para obtener detalles a partir de la base de datos. En el siguiente ejemplo se muestra este escenario. Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto
Label1 GridView

Propiedad
Text ID Formato Automtico Maestro Detalles GridView1 Simple

Valor

El GridView debe ser configurado para mostrar el contenido de la tabla Evento como lo hicimos en ejemplos anteriores y una vez hecho esto agregue la columna hipervnculo de acuerdo a la siguiente tabla:
Objeto Propiedad Columns Valor Columna Hipervnculo Text: Obtener Detalles -DataNavigateURLFields= idEvento DataNavigateURLFormatString: Detalle.aspx?id={0}

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

106

Las propiedades de las columnas del GridView se muestran en la siguiente ventana:

La Ventana Queda como a continuacin se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

107

Este ejemplo en la columna de Hipervnculo hace referencia a la pgina continuacin:

Detalle.aspx

la cual se detalla a

Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto


Label1 GridView

Propiedad
Text ID Formato Automtico Columns Columns Columns

Valor
Detalles Eventos GridView Simple Columna Enlazada: Header Text = Nombre del Evento, DataField =DescEvento. Columna Enlazada: Header Text = Nombre del Participante, DataField = NomParticipante. Columna Enlazada: Header Text = Fecha de Inscripcin, DataField = FechaInscrip

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

108

La Ventana Queda como a continuacin se muestra:

Se debern agregar las siguientes importaciones:


Imports System.Data.OLEDB Imports System.Data

Se deber agregar el siguiente cdigo en modo Code:


Dim Cn As OleDBConnection Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim Sentencia As String Dim DS As New DataSet Dim Comando As OleDbDataAdapter Sentencia = "Select DescEvento,NomParticipante,FechaInscrip " & _ "From (Participante A Inner Join ListaEvento B On (A.Usuario = B.Usuario) ) Inner Join Evento C On (B.IdEvento = C.IdEvento) " & _ "Where C.idEvento = " & Request.QueryString("id") Cn = New OleDbConnection("Provider=SQLOLEDB;User Id=sa;Password=;Data Source=(local);Initial Catalog=Curso") Comando = New OleDbDataAdapter(Sentencia, Cn) Comando.Fill(DS, "NomTab") GridView1.DataSource = DS.Tables("NomTab").DefaultView GridView1.DataBind() End Sub

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

109

Ordenar Datos de una Base de Datos de SQL Un requisito comn de cualquier cuadrcula radica en la capacidad de ordenar los datos que contiene. Mientras que el control DataGrid no ordena explcitamente los datos, proporciona una forma de llamar a un controlador de eventos cuando el usuario hace clic en un encabezado de columna, que se puede utilizar para ordenar los datos.

Coloque los siguientes controles de acuerdo a la siguiente tabla: Objeto


GridView

Propiedad
ID Formato Automtico GridView 1 Simple

Valor

Configure el GridView como lo hemos efectuado en ejemplo anteriores usando la tabla de participante como a continuacin se muestra:

En seguida de clic en la esquina superior izquierda y habilite las opciones de Enable Paging y Enable Sorting, para habilitar el paginado y ordenamiento. Ejectela y compruebe el funcionamiento:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

110

Creacin de Controles Dinmicamente El diseo de una pgina Web involucra la insercin de controles en tiempo de diseo, sin embargo hay ocasiones en las cuales no es posible determinar el nmero de controles que usara la pgina, para remediar esta situacin el entorno de Visual Studio .NET brinda un conjunto de contenedores de controles, los cuales proporcionan una serie de funciones para crear la cantidad de controles que necesitemos. Durante el desarrollo de este documento aprender cuales son los contenedores de controles, como adicionar controles usando el contenedor panel (a travs de un ejemplo prctico) y como leer el valor de cada control. Contenedores de controles Los objetos que tienen la capacidad de incluir varios controles dentro de si son llamados contenedores de controles. En ASP .NET los controles que tienen esa facultad son: Panel Placeholder Table con sus clases TableRow (fila) y TableCell (columna)

Estos controles se localizan dentro de la barra de herramientas que aparece por defecto en el entorno de Visual Studio .NET. Por la sencillez de programacin, el contenedor que se utilizara a lo largo del texto es el control Panel. El siguiente ejemplo muestra como desarrollar una pgina en ASP .NET que muestre un examen de opcin mltiple y que presente las respuestas que selecciono el usuario. Creacin de controles en ASP .NET El desarrollo de este ejemplo esta basado en dos tablas, de las cuales se muestra su estructura a continuacin:

Despus de crear las tablas, se procede a insertar informacin en la tabla de pregunta y luego a generar las respuestas para cada pregunta relacionada. Para llevar a cabo esta actividad, crearemos un proyecto de aplicacin Web ASP .NET, al cual llamaremos CtrlDinamicos. En este adicionaremos los siguientes controles: Control Button Panel Panel Propiedad Text Dar un clic Dar un Clic Valor Mostrar respuestas Eliminar el texto Panel Eliminar el texto Panel

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

111

El diseo de la pgina quedara como la siguiente figura:

Se debern agregar las siguientes importaciones en modo All:


Imports System.Data.OleDb Imports System.Data

Se deber declarar las siguientes variables a nivel pagina Web:


Dim Dim Dim Dim Cn As OleDbConnection i As Integer lblPreg As Label rblResp As RadioButtonList

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Cn = New OleDbConnection("Provider=SQLOLEDB;User Id=sa;Password=;Data Source=(local);Initial Catalog=Curso;") LlenarDatos(lblPreg, rblResp) End Sub Private Dim Dim Dim Dim Dim Dim Sub LlenarDatos(ByVal lbl As Label, ByVal rbl As RadioButtonList) Ds As New DataSet RegPreg, RegResp As DataRow AdaptPreg As OleDbDataAdapter AdaptResp As OleDbDataAdapter i As Integer s As String

AdaptPreg = New OleDbDataAdapter("Select IdPregunta,Pregunta from Pregunta", Cn) AdaptPreg.Fill(Ds, "Pregunta") For Each RegPreg In Ds.Tables("Pregunta").Rows i += 1 lbl = New Label rbl = New RadioButtonList Dim Ds1 As New DataSet lbl.Text = "<BR>" & " " & RegPreg(0) & ". " & RegPreg(1) Panel1.Controls.Add(lbl) AdaptResp = New OleDbDataAdapter("Select IdRespuesta,Respuesta from Respuesta where IdPregunta=" & RegPreg(0) & "", Cn) AdaptResp.Fill(Ds1, "Respuesta") For Each RegResp In Ds1.Tables("Respuesta").Rows rbl.Items.Add(New ListItem(RegResp(1), RegResp(0))) s += Regresp(1) Next Panel1.Controls.Add(rbl) Ds1.Dispose() Next RegPreg End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim RadioBoton As RadioButtonList Dim label As Label Dim j As Integer For i = 2 To Panel1.Controls.Count - 1 Step 2 RadioBoton = Panel1.Controls(i) For j = 0 To RadioBoton.Items.Count - 1 If RadioBoton.Items(j).Selected = True Then label = New Label label.Text = RadioBoton.SelectedItem.Value & ". " & RadioBoton.SelectedItem.Text & "<BR>" Panel2.Controls.Add(label) End If Next Next End Sub

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

112

Concluida la insercin de cdigo se procede a ejecutar la pgina y el resultado que mostrara ser como el siguiente:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

113

Utilizacin de Reportes
Gran parte de las aplicaciones necesitan evaluar informacin obtenida de uno o varios orgenes de datos mediante procesos realmente complejos, con el fin de brindar un resultado capaz de ser comprendido por un usuario final. Si bien el nuevo modelo de impresin podra ser el elegido para esta tarea, existe una tecnologa an ms acorde, la cual permite establecer los procesos de obtencin, anlisis y publicacin, en forma realmente sencilla. Este tipo de caractersticas se gestionan en Visual Basic desde ya hace bastante tiempo a travs de los mdulos de informe. Un mdulo de este tipo establece los diferentes procesos que se le debern realizar a un conjunto de datos. Antes de conocer ms acerca de ellos, vamos a realizar una breve resea sobre los cambios que stos han experimentado en los ltimos aos. En la versin 3.0 de Visual Basic, Microsoft decidi incluir e integrar al generador de informes de la empresa Crystal Reports (ahora llamada Crystal Decisions) como parte del producto, debido a la alta demanda que este tipo de tareas requeran. En la versin 6.0 del producto, la compaa decidi excluir el mismo, adicionando su propia versin de generador de informes, el cual era realmente deficiente. Si bien era posible realizar tareas bsicas sobre un conjunto de datos, no contaba con mayores posibilidades, y las opciones de integracin con aplicaciones para Web eran realmente acotadas. Nuevamente en Visual Basic .NET el generador de informes de Crystal Decisions es incluido como tecnologa nativa de la infraestructura .NET. Sin embargo, la misma no debe ser tomada como una simple herramienta para procesar datos y generar documentos, ya que el alcance de sus funcionalidades es realmente sorprendente. Ahora se cuenta con tres medios a travs de los cuales los informes pueden ser publicados: Aplicaciones para Windows. Pginas de servidor activo ASP.NET. Servicios Web ASP.NET.

El primer tipo es el ya conocido, el cual enva el resultado de un informe a una ventana de vista preliminar de Windows. Para comprender las restantes opciones, es necesario estar al tanto de las dems funcionalidades provistas por la herramienta, las cuales veremos a continuacin. Cuando se genera un informe para una aplicacin, en general el proceso que confecciona el mismo y la vista previa son ejecutados dentro de la misma computadora. Esto es cierto en la mayor parte de los casos, pero, sin embargo, existen nuevas opciones del producto que marcan una diferencia sustancial con respecto a esta aproximacin. Ahora es posible crear y hacer uso de informes desde una aplicacin Web, a los efectos de que ellos puedan ser visualizados desde cualquier explorador que utilice los protocolos y formatos estndares de Internet (http, html, etc.). Para dicho fin, Crystal provee un conjunto de clases y un control Web para visualizar un informe, a los efectos de que los mismos puedan ser accesibles desde las diferentes pginas de servidor activo ASP.NET. Veremos ms adelante que es igual de sencillo crear uno de estos para una aplicacin Windows que para una aplicacin Web. A continuacin veremos las funcionalidades bsicas de la elaboracin de un informe para una aplicacin para Windows, y luego aprenderemos ms sobre aplicaciones Web.

Creando un Informe que utilice OLE DB. Antes de comenzar a explicar sobre cmo crear un informe para una aplicacin para Windows, es importante que conozca que Visual Basic instala una carpeta llamada Samples debajo del directorio Cristal Report, la cual contiene varios ejemplos sobre este tema. Bien, ahora vamos a crear un nuevo proyecto de aplicacin para Windows, y ser el encargado de obtener todos los Participantes por Ciudad y agruparlos por dicho criterio.

Una vez creado el mismo, haremos clic derecho sobre el Explorador de soluciones, y luego Agregar Agregar nuevo elemento. Esto abrir la caja de dilogo similar a la Figura anterior, que nos permitir agregar un nuevo mdulo de informe. Vamos ahora a seleccionar al elemento Crystal Report, para posteriormente cambiarle el nombre del mismo a Participante.rpt, y por ltimo hacer clic en aceptar para adicionar el mismo al proyecto.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

114

Inmediatamente despus de que un mdulo de informe es adicionado al proyecto, la ventana de dilogo denominada Galera de Crystal Reports ser exhibida, a los efectos de que sea posible especificar en forma sencilla el tipo de documento a elaborar. El mismo ofrece las siguientes opciones: Crear un documento mediante el Asistentes de informes. Crear un informe en blanco. Crear un nuevo informe a partir de un informe existente.

A su vez, el control de lista situado en la parte inferior hace posible seleccionar el tipo de asistente, a los efectos de adecuar los posteriores pasos del mismo. Para este ejemplo crearemos un informe utilizando la primera opcin mediante el Asistente de informes, y haremos uso de la plantilla por defecto (estndar). El mismo nos guiar a travs de diferentes ventanas, las cuales harn posible especificar la informacin del origen de datos, los campos a incluir en el mismo, los diferentes proceso a efectuar, etc. Una vez indicadas las opciones tendremos que hacer clic en Aceptar, lo cual exhibir la primera pgina del asistente. Una ventana similar a la de la siguiente figura nos solicitar que especifiquemos el origen o fuente del cual deseamos obtener los datos para confeccionar el informe. Ventana del asistente, presionar el botn de aceptar:

La siguiente ventana se muestra, para que seleccionemos la base de datos:

Como es posible apreciar, el nmero de opciones de conectividad es realmente elevado. Emplearemos la base de datos Base, y dependiendo del origen de la misma, ser el proveedor que tendr que seleccionar.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

115

La siguiente ventana similar a la siguiente figura - nos solicitar informacin sobre cmo deber ser establecida la conexin. Existen dos posibles opciones de autenticacin, la primera es utilizando los usuarios definidos en Windows (Seguridad Integrada), mientras que la segunda es empleando aquellos definidos en SQL Server (o Windows). Esta ltima es de gran utilidad cuando se desea conectar al motor de datos desde ambientes no-Windows, lo cual no es el caso que nos ocupa en este momento. Debido a ello, haremos clic en Seguridad Integrada, a los efectos de que se empleen los privilegios del usuario actual. Por supuesto que es necesario que el mismo cuente con derechos para poder acceder a la base de Base. Por ltimo, debemos especificar el nombre del equipo, o (local) si el servidor se encuentra en forma local, y luego indicar Base en la lista de Bases de datos.

Este bastar para que la conexin a la base pueda ser establecida, por lo que vamos a hacer clic en Finalizar para agregar la conexin a la lista de factibles de utilizar por un informe. El panel de la izquierda ahora exhibir la conexin al origen Base, y bastar con hacer clic sobre la misma para ver las diferentes tablas y campos ofrecidos por ella. Algo realmente interesante es que un informe podra basarse en datos de diferentes orgenes, sin que esto influyera en la complejidad de los procesos posteriores. Vamos entonces a expandir Base, luego dbo, y por ltimo Tablas, a los efectos de acceder a las tablas de la conexin. Para este informe necesitaremos agregar a Ciudad, Participante ya que, si recuerda, el objetivo original era el de exhibir todos los Partcipantes, agrupados por su respectiva Ciudad, y son stas las tablas que proveen la informacin necesaria para este proceso. Para ello, basta con seleccionar las mismas y luego hacer clic en Insertar Tabla, lo que dar un resultado similar al de la siguiente figura:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

116

Las tablas que se involucrarn en el proceso son ahora incluidas en la lista de la derecha con tablas del informe, lo que indica que sern ofrecidas por los dems pasos del asistente. Si vamos a la prxima ventana mediante Siguiente, veremos que los vnculos entre las tablas son automticamente detectados:

Cuando se establece una conexin, el generador de informes no solamente obtiene la informacin de campos y tipos, sino tambin las diferentes relaciones y restricciones de las mismas. Esta informacin es posteriormente utilizada por el generador de informes para por ejemplo- indicar un vnculo de tipo principal/detalle. Sin embargo, con algunos orgenes no es posible obtener dicha informacin, por lo que se brinda la posibilidad de indicar sta en forma manual. Esto es de gran utilidad en dos situaciones, la primera es cuando se desean establecer vnculos diferentes a los originales, y la segunda cuando se tienen tablas que pertenecen a distintos orgenes de datos, y se desea conformar una relacin. Haremos clic en Prximo, a los efectos de obtener una ventana similar al de la siguiente figura:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

117

La misma nos permitir seleccionar los campos que integrarn el informe. Si recuerda, la idea original era la de exhibir los datos de Ciudades y Participantes, por lo que agregaremos los campos de ambas tablas (Ciudad y Participante). Una vez hecho esto, haremos clic en Siguiente. La siguiente ventana solicita los campos necesarios para ordenar y agrupar las diferentes filas obtenidas del origen. Debido a que deseamos que los diferentes Participantes sean agrupados por su respectiva Ciudad, bastar con que indiquemos el campo NomCiudad de la tabla de Ciudad como elemento agrupador, en forma similar y como exhibe la Figura:

Las prximas ventanas brindan la posibilidad de agregar subtotales grficos, etc., y no haremos uso de stos en el ejemplo, por lo que haremos clic en Terminar, lo cual dar como resultado que un nuevo mdulo de informe ser agregado al proyecto, conteniendo caractersticas similares a las de la siguiente figura: C D

B A

A continuacin se describen las cuatro secciones de la figura: A. Explorador de campos. Permite agregar, modificar o eliminar campos del informe, as como tambin frmulas. Es posible mostrar u ocultar esta ventana haciendo clic en el men de la barra principal Ver, luego Otras Ventanas, y por ltimo Esquema del Documento o CTRL.+ALT+T. B. Ventana principal del informe Exhibe el informe con sus campos y dems integrantes. ste incluye las siguientes secciones: 1. Encabezado del informe. Contiene aquellos elementos a ser exhibidos al comienzo del informe. 2. Encabezado de pgina. Aloja aquellos elementos que debern ser incluidos en las diferentes pginas que integrarn al informe. Generalmente se incluyen en sta los ttulos de los diferentes campos, logotipo de la empresa, nmero de pgina, etc. 3. Encabezados de grupo.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

118

Las secciones de este tipo contienen aquellos elementos que debern ser exhibidos al comienzo de cada grupo, y generalmente se incluye una descripcin del mismo. En la aplicacin que realizamos anteriormente se inclua al identificador de autor. 4. Detalles. Las secciones de este tipo contienen las diferentes filas (y campos) que integran el informe. 5. Pie del informe. Contiene aquellos elementos a ser exhibidos en la hoja final del informe. 6. Pie de pgina. Los elementos aqu adicionados sern exhibidos al final de cada pgina.

C. Barra principal de herramientas del informe Incluye las herramientas necesarias para ordenar, ver las propiedades del objeto seleccionado, etc. D. Barra secundaria de herramientas del informe Incluye las herramientas necesarias para insertar nuevos objetos al informe, as como tambin agregar nuevos grupos, etc. Las diferentes pautas sobre cmo tendr que ser obtenida la informacin y los distintos procesos a realizar sobre sta han sido guardados en el documento Participante.rpt. Sin embargo, el mismo no mantiene ninguna relacin sobre cmo deber ser exhibido el resultado, ya que ste se remite exclusivamente a almacenar los procesos especificados mediante el asistente. Esto es as con el fin de que un mismo informe pueda ser utilizado para generar su salida a una aplicacin para Windows o para Web, sin que se requiera modificaciones, o la creacin de informes similares.

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

119

Informes en Aplicaciones para la Web La tecnologa de informes utilizada en la plataforma .NET y provista por la empresa Crystal Decisions es sumamente flexible, ya que brinda la posibilidad de ser empleada en una aplicacin Web en forma similar a una para Windows. La ventaja ms importante es que el generador de informes hace uso de los recursos del servidor en vez del de cada cliente. Debido a que los mismos son publicados en formato HTML, el resultado puede ser visto desde cualquier explorador. Como beneficio adicional y debido a que la definicin del informe no mantiene vinculacin con la forma en la cual ste ser presentado un mismo mdulo puede ser empleado por una aplicacin para la Web y Windows al mismo tiempo, lo que hace muy fcil su reutilizacin. Vamos ahora a crear un nuevo proyecto de aplicacin Web ASP.NET llamado ParticipantesCiu, a los efectos de demostrar las caractersticas bajo este modelo. Una vez hecho esto, adicionaremos el reporte llamado Participante.rpt, para el cual seguiremos las mismas pautas que en el informe de Windows. Nuevamente contamos con un archivo con extensin rpt conteniendo los diferentes campos y procesos del informe, pero an no hemos terminado la forma en que ste se har disponible. Para que cada pgina de servidor activo ASP.NET pueda ofrecer el mismo, es necesario emplear el control de visor de informes para formularios Web. Este ltimo se encuentra en la caja de herramientas, generalmente localizado al final de la misma. Dibujaremos entonces el control en forma similar ha como se muestra en la siguiente figura:

El prximo paso ser el de vincular la definicin del informe con el control Web. Hacemos clic derecho en la esquina superior derecha y entramos a la opcin Choose Report Source,y configurarlo como a continuacin se muestra:

El resultado final es interesante, ya que adquiriremos en tiempo de dise la estructura de campos que tendr el informe. Ahora solo nos hace falta ejecutarlo quedando de la siguiente manera:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

120

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

121

Reportes Usando Report


Agregue un nuevo Item y selecciones Report, asignndole el nombre de Participante como se muestra a continuacin:

En la siguiente ventana dar clic en el lado izquierdo de la ventana, para adicionar un nuevo origen de datos en Add New Data Source:

En la siguiente ventana seleccione la conexin a la base de datos:

En la siguiente ventana seleccione Next:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

122

En la siguiente ventana seleccione Use SQL Statments y presione Next:

En la siguiente ventana seleccione Quero Builder, para construir el Quero del reporte:

En la siguiente ventana agregue las tablas de participante, ciudad y enseguida presione Close como se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

123

En la siguiente ventana selecciones los campos que sern mostrados en el reporte y enseguida presione el botn de OK, como a continuacin se muestra:

Enseguida se muestra la ventana con el Query y presionaremos Next:

En la siguiente ventana presione Next:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

124

En esta ultima ventana presionaremos Finish:

La siguiente ventana muestra el resultado:

En el Toolbox seleccionaremos el control Table sobre el Reporte participante.rdlc y arrastramos los campos a las columnas de ella, en el rengln de en medio como se muestra a continuacin:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

125

Enseguida agregaremos una pgina Web y agregaremos el control ReportViewer del ToolBox en la seccin Data, como se muestra a continuacin:

Daremos clic en la esquina superior derecha del ReportViewer para seleccionar el reporte, como a continuacin se muestra:

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

126

En este punto ya puede ejecutar la pgina Web, que se muestra a continuacin:

Materia Desarrollado por: ISC Alejandro Guzmn Zazueta Maestro de Tecnologico de Roque, Celaya, Gto. a_zazuetag@hotmail.com

GRACIAS

a_zazuetag@hotmail.com I.S.C. Alejandro Guzmn Zazueta

127

You might also like