Reportes VB Visual Studio 2005
Reportes VB Visual Studio 2005
Reportes VB Visual Studio 2005
EELLLA
ABBO
A ORRA
ADDDOOP POORRR:: Ing. Giovanni Sáenz.
FFEEEC
CH
C HA
AD
A DEE EELLA
D ABBBO
ORRRAAC
CIIÓ
C ÓN
Ó N:
N 5 de Julio del 2008.
C
COOLLA
ABBBO
A ORRRA
O AC
A CIIIÓ
ÓN
Ó YV
NY
Y VEERRSSSIIIÓ
ÓNNO
ORRIIIG
GIIN
NA
N ALLL:: Ing. Marvin Lira Chamorro y Ing. Glenda Barrios
O
OBBJJJEEETTTIIIVVO
OD
O AP
DEEE LLA PRRÁ
ÁCCTTIIC
CAA::
1.- Desarrollar habilidades para la Programación de Reportes en Visual Studio .NET 2005.
2.- Analizar y especificar los pasos necesarios para el Desarrollo de Aplicaciones .NET
donde se debe utiliza Crystal Reports.
3.- Definir los pasos a seguir y las reglas que se establecen para el llamado de todos los
objetos y controles que se requieren para trabajar con Cristal Reports.
Tabla de Contenido:
Tabla de Contenido:_______________________________________________________ 1
Para Trabajar con Reportes ________________________________________________ 2
Primera Práctica _________________________________________________________ 2
Segunda Parte __________________________________________________________ 36
Utilizando Parámetros (ahora con la tabla Territorio) _____________________________ 36
Tareas a Realizar: _______________________________________________________ 55
Bibliografía: ____________________________________________________________ 55
Primera Práctica
1.- Trabajando al Modo Clásico (el cual ya no se recomienda) o Rustico en .NET 2005,
abra un nuevo proyecto, el cual incorporara los siguientes elementos:
3.- Hay que agregarle funcionalidad a los Botones, en tal caso inicie con el Botón Cerrar:
Try
'Cerrar el Formulario
Me.Close()
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en CmdCerrar_Click" & ex.Message,
MsgBoxStyle.Critical, "Ejemplo1")
End Try
End Sub
End Class
4.- Se inicia con la programación del Reporte, en este caso, es recomendable para el
reporte, definir que es lo que se ira a traer y se presentara en el reporte. En el primer
botón traeremos la Tabla Cateries de la base de datos NorthWind. Para lograr esto, es
necesario traer los datos, los pasos son los siguientes:
I.- Crystal Reports por si solo no puede trabajar con Datos, para lograr que tenga o
recupere datos en la versión Studio .NET 2005 se necesita de la creación del
DataSet, en este caso tiene que ser tipados conectados, es decir, que tiene que
ser mediante una DataSet la conexión a la base de datos.
II.- Crear el reporte y asociarle el DataSet creado, basado en el DataSet se debe crear
el Reporte.
III.- Desde el evento Click del Botón, que al hacer click debe llamar al reporte
señalado, el cual enviara la información a pantalla. Es aquí donde entra en acción
el visor de tipo Crystal Reports (se debe generar la salida).
IV.- Debe existir un extremo cuidado, Crystal Reports necesita de un visor para
mandar el resultado, en este sentido, se debe agregar código para el resultado
presentado en pantalla (esto es lo que se conoce, como agregar código para
mandar a pintar los datos).
En base a los detalles antes expuesto, proceda a crear un DataSet con el nombre de
DataSetCategoria:
4.1.- Seleccione el proyecto, hacer click derecho y agregar nuevo elemento, ver grafica
siguiente:
Debe colocarse sobre la conexión de datos, y sobre este hacer click derecho, en este
instante le presentara la siguiente ventana:
Se abre una ventana donde usted tiene que seleccionar la Base de Datos, es aquí donde
seleccionara NorthWind, como lo puede ver en este gráfico.
4.3.- Arrastre la tabla Categories al Explorador de Servidores, para que este pueda generar
el DataSet de esa tabla, ver gráfico:
Si tiene dudas sobre la información que se ha generado, entonces haga Click derecho sobre
el Table y se presentara la opción de una vista Previa:
Observe con detalle la información con la cual esta llenada en el Table y que esta
manejando el TableAdapter.
Este Objeto es
conocido como el Table
en el DataSet.
Esta parte es la
encargada de la
Conexión, conocido
como el TableAdapter
en el DataSet.
a.- Debe hacer Click derecho sobre el Proyecto Reportes, nuevamente se generara una
ventana donde usted debe agregar un nuevo elemento:
Ahora debe seleccionar un Objeto de tipo Plantilla de Crystal Reports, como el que se
muestra a continuación:
Usted debe de cambiar de nombre a esa Plantilla, en este caso será con el nombre de
rptCategorias.rpt:
De tal forma que ya se incluya el nombre correcto y este sea visible desde el inicio.
Abrir la opción de tipo de datos del proyecto, entonces le aparece la ventana de la siguiente
manera:
Podrá ver el detalle del DataSet que puede conectar al Reporte, ver siguiente página:
Asegúrese de elegir todos los campos que desea mostrar en pantalla, al final seleccione
siguiente.
En este instante, podrá observar tanto el diseño del reporte, así como detalles de los
campos. Se recomienda, que para ir interactuando, agregar un texto al formulario, tal como
Incluir de encabezado el Listado de Categorías. Esto lo puedo realizar incluyendo o
arrastrando un objeto de tipo texto, al igual como trabaja el Label en Visual Studio .NET
2005.
4.6.- Ahora debe Agregar el Visor, esto es posible si se incluye un nuevo formulario y
sobre el agregar el visor para presentar el Reporte. Entonces, proceda a agregar un
nuevo formulario, a este le pondrá el nombre de FrmVisorReporte.
Para incluir el Visor, tiene que buscar en el cuadro de herramientas los Objetos que son de
tipo Crystal Reports, el objeto CrystalReportViewer tiene que incorporarlo y
arrastrarlo dentro del formulario antes definido como FrmVisorReporte.
Ahora bien, para que el reporte tenga un orden y sea clara la información que se presentara,
se recomienda hacer ajuste a las siguientes propiedades tanto del Visor como del
Formulario:
4.7.- Este visor debe recibir como parámetro el Reporte, en este sentido se debe importar la
librería (recuerde que este debe ser escrito en el espacio de nombre, el cual al final
permite acortar la escritura). Este código se hace en el FrmVisorReporte:
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en FrmVisorReporte_Load" & ex.Message,
MsgBoxStyle.Critical, "Ejemplo1")
End Try
End Sub
End Class
El cual luego tiene que ser utilizado a lo largo del formulario. Usted ahora tiene dos
opciones, y en ambas obtendrá el mismo resultado.
4.8.- Ahora se tiene que retornar al Formulario FrmPrincipal y ahí debe agregar el
código correspondiente al llamado del Formulario y el Visor del Reporte, para lograr
esto, agregue el siguiente código:
b.- Tiene que declarar las variables que manejaran la conexión y el DataAdapter, los
cuales deben ser de manera global al formulario (dentro del formulario – pruebe
usted que sucede si lo declara en un modulo o una clase):
End Sub
'----Declaracion de Variables
Dim StrConexion As String
Try
ObjCnn = New SqlConnection
ObjAdapterGral = New SqlDataAdapter
'-- Objeto de Conexion
StrConexion = ""
ObjCnn.ConnectionString = "Data Source=LOCAL;Initial
Catalog=Northwin;User ID=sa"
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en InicializacionVariables" & ex.Message,
MsgBoxStyle.Critical, "Ejemplo1")
End Try
End Sub
4.9.- Se le debe agregar la funcionalidad al Botón para llamar al Reporte, entonces ese
código es el siguiente:
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en FrmVisorReporte_Load" & ex.Message,
MsgBoxStyle.Critical, "Ejemplo1")
End Try
End Sub
Try
ObjCategorias = New DataTable
ObjFrmVisorRpt = New FrmVisorReporte
ObjRepCategorias = New rptCategorias
'-------------
'------
ObjRepCategorias.SetDataSource(ObjCategorias)
ObjFrmVisorRpt.ObjReporte = ObjRepCategorias
ObjFrmVisorRpt.ShowDialog()
ObjCnn.Close()
Catch ex As Exception
Finally
'ObjFrmVisorRpt.Dispose()
'ObjRepCategorias.Dispose()
ObjFrmVisorRpt = Nothing
ObjRepCategorias = Nothing
End Try
End Sub
Segunda Parte
2.- Ahora se creara el nuevo Reporte, este será el de los Territorios. Recordar,
que debe estar diseñado en base a un DataSet Tipado.
Que el DataSet sea tipado, esto indica que ya existe una estructura, se
puede conocer los campos y datos que existen. En comparación con los datos
que no están de esta manera, no tienen estructura definida, y en el momento
que se ejecuta, es que .NET se da cuenta de la información que puede cargar
dentro del DataSet, y en dependencia de la instrucción SQL que se ejecute en
el momento de la corrida.
Repita los pasos del ejemplo anterior para poder crear el DataSet con datos:
Estos
campos se
utilizaran
4.- Como el Reporte recibirá un parámetro, es necesario crear ese parámetro. Para hacer
posible esto, Crystal Reports trabajo con lo que se conoce como Parámetros
Fiedls (Campos de parámetros, el cual se puede observar en la grafica de arriba en la
ventana de Explorador de Campos).
Tiene que usar el Asistente, el Crystal Reports le antepone a los parámetros @, para
indicar que es un campo que no proviene del DataSet de la Base de Datos, sabe que es un
campo de tipo parámetro.
Usted solo presionara Guardar y cerrar, puede observar que en el campo de la Formula se
ha creado Región.
Con esto Finaliza la parte del reporte, ahora regrese al formulario Principal, en este caso es
el FrmPrincipal.
Try
LlamaTerritorios()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdOrdenes_Click " & ex.Message,
MsgBoxStyle.Critical, "EJ2")
End Try
End Sub
Try
Catch ex As Exception
MsgBox("Ocurrio un error en LlamaTerritorios " & ex.Message,
MsgBoxStyle.Critical, "EJ2")
Finally
ObjFrmParamTerritorio.Dispose()
ObjFrmParamTerritorio = Nothing
End Try
End Sub
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
5.3.2.- Debe incluir las variables y Objetos que manejaran las conexiones de la
Base de Datos:
End Sub
Try
Me. LLamaReporteTerritorio()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdCancelar_Click " &
ex.Message, MsgBoxStyle.Critical, "E2")
End Try
End Sub
Try
'-------
ObjConexion = New SqlConnection
ObjAdapterGral = New SqlDataAdapter
ObjRegion = New DataTable
ObjTerritorio = New DataTable
'-------
StrConn = "Data Source=LOCAL;Initial
Catalog=Northwin;User ID=sa"
ObjConexion.ConnectionString = StrConn
Catch ex As Exception
MsgBox("Ocurrio un error en InicializaVariables " &
ex.Message, MsgBoxStyle.Critical, "EJ2")
End Try
End Sub
Try
'-- Abrir la conexion
ObjConexion.Open()
Departamento de Arquitectura y Sistemas de Aplicaciones 51
Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005
Catch ex As Exception
MsgBox("Ocurrio un error en LlenaRegion " & ex.Message,
MsgBoxStyle.Critical, "E2")
End Try
End Sub
Try
ObjFrmVisorRpt = New frmVisorReportes
objRepTerritorios = New rptTerritorios
'------------
StrSql = " Select TerritoryID, " & _
" TerritoryDescription " & _
" From Territories " & _
" Where RegionID = " &
Me.cboRegion.SelectedValue() & _
" Order By TerritoryDescription ASC "
'------------
Departamento de Arquitectura y Sistemas de Aplicaciones 52
Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005
ObjConexion.Open()
ObjAdapterGral.SelectCommand = New SqlCommand
ObjAdapterGral.SelectCommand.Connection = ObjConexion
ObjAdapterGral.SelectCommand.CommandText = StrSql
'--- Limpiar la fuente de datos
ObjTerritorio.Clear()
ObjAdapterGral.Fill(ObjTerritorio)
'------------
objRepTerritorios.DataDefinition.FormulaFields("Region").Text = "'
Parametros del Reporte: " & Me.cboRegion.Text & " '"
objRepTerritorios.SetDataSource(ObjTerritorio)
ObjFrmVisorRpt.ObjReporte = objRepTerritorios
ObjFrmVisorRpt.ShowDialog()
ObjConexion.Close()
Catch ex As Exception
MsgBox("Ocurrio un error en LlamaReporteCategorias " &
ex.Message, MsgBoxStyle.Critical, "EJ1")
Finally
ObjFrmVisorRpt.Dispose()
objRepTerritorios.Dispose()
ObjFrmVisorRpt = Nothing
objRepTerritorios = Nothing
End Try
End Sub
Tareas a Realizar:
1.- Ahora que tiene dos posibles formas de presentar Reportes, haga los ajustes a sus
proyectos y presente estas opciones a su proyecto, es decir, que en base a los
procedimientos almacenados y tablas diseñadas, ir viendo como será presentado en
Menú de Opciones la parte de Reportes.
2.- Presentar una propuesta de estructura de Reportes, así como el detalle del orden en que
estas serán vista, es decir, que tipo de presentación utilizara y las pantallas de captación
que tendrá su sistema.
b.- Funciones recordar que estas pueden ser escalares o retornen tabla (Al igual que el
caso anterior, es valido la cantidad, así mismo la distribución).
c.- Deben presentar cada estudiantes ocho Triggers (esto se deben programar en
cada tabla, la definición y como se implemente, eso depende del grupo).
d.- Se deben Cumplir todos los incisos anteriores, al igual de la cantidad de registros y
todo lo que se refiere a la Información que se debe Administrar en las Tablas.
Bibliografía:
En este momento queda pendiente, y en la semana se brindara los detalles (son
Ocho textos los que se utilizaron para esta información, más los datos de los
profesores). Mi agradecimiento, tanto a los Señores Representantes en
Nicaragua de MC Graw Hill: Engel Hurtado y de la Prentice Hall
Francisco Mayorquín, quienes siempre muy gustosamente me han facilitado
toda la información en Libros y textos frescos, no me he olvidado de cada uno de
los títulos, sin falta el lunes los incluiré a esta lista. A todos Gracias.