Está en la página 1de 55

Administradores de Bases de Datos Studio .

NET 2005 Y SQL Server 2005

Curso de SQL Server 2005 Developer y .Net


.Net 2005.
Práctica No.1
No.1. Escribiendo y Programando Instrucciones para Crystal Reports.

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

Departamento de Arquitectura y Sistemas de Aplicaciones 1


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Para Trabajar con Reportes

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:

Fijar el Directorio C:\Curso .NET 2005\Crystal Reports\Reportes.

Nombrar desde el inicio al formulario en la propiedad Name: FrmPrincipal que


aparecerá, esto hacerlo desde el arranque.

Departamento de Arquitectura y Sistemas de Aplicaciones 2


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Es decir, que usted vera lo siguiente:

Departamento de Arquitectura y Sistemas de Aplicaciones 3


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

2.- Ahora debe agregar varios objetos los cuales son:

Objeto Propiedades Observaciones


Panel Name: PanelReportes Un único y al centro del
Formulario. Buscar en
Contenedores.
Formulario Name: FrmPrincipal Recuerde siempre poner nombre a
Text: Formulario de los Objetos, esta es una buena
Reportes: práctica, y más cuando esta
programando la capa de negocios.
Boton1 Name: CmdCategoria.
Text: Reporte de
Categoria.
Boton2 Name: CmdTerritorios.
Text: Reporte de
Territorio.
Boton3 Name:CmdCerrar
Text: Cerrar.

De tal forma que se pueda Observar lo siguiente:

Departamento de Arquitectura y Sistemas de Aplicaciones 4


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

3.- Hay que agregarle funcionalidad a los Botones, en tal caso inicie con el Botón Cerrar:

Public Class FrmPrincipal

Private Sub CmdCerrar_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles CmdCerrar.Click

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

En el recuadro interno, se puede observar, que se ha considerado los posibles errores,


mediante la utilización de Try… Catch.

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).

Departamento de Arquitectura y Sistemas de Aplicaciones 5


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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:

Seleccione el Conjunto de Datos, recuerde que este es de extensión XSD.

Departamento de Arquitectura y Sistemas de Aplicaciones 6


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Recuerde poner el nombre que se ha especificado.

4.2.- Habilitar el Server Explorar, o sea, el servidor de Exploradores:

Departamento de Arquitectura y Sistemas de Aplicaciones 7


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Agregar una Conexión:

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 8


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Una Vez que este correcto todo, presionar el Botón Aceptar.

Departamento de Arquitectura y Sistemas de Aplicaciones 9


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Si la Conexión es satisfactoria, usted podrá observar en el explorador de servidores, la


conexión con la Base de Datos, es aquí donde debe seleccionar la Tabla Categories.

4.3.- Arrastre la tabla Categories al Explorador de Servidores, para que este pueda generar
el DataSet de esa tabla, ver gráfico:

Departamento de Arquitectura y Sistemas de Aplicaciones 10


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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:

Departamento de Arquitectura y Sistemas de Aplicaciones 11


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Hacer Click en Vista Previa de Datos, se generara la siguiente ventana:

Le presenta la ventana con los datos llenados en el TableAdapter:

Departamento de Arquitectura y Sistemas de Aplicaciones 12


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Presione el Botón Vista Previa, y simplemente vea los resultados:

Observe con detalle la información con la cual esta llenada en el Table y que esta
manejando el TableAdapter.

Departamento de Arquitectura y Sistemas de Aplicaciones 13


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 14


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

En este momento ya tiene el Punto I, ahora debe realizar el Punto II:

DataSet Lleno, punto I cumplido.

Departamento de Arquitectura y Sistemas de Aplicaciones 15


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

4.4.- Ha llegado el Momento de Agregar el Reporte de Crystal Reports, para esto es


necesario realizar los siguientes pasos:

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:

Departamento de Arquitectura y Sistemas de Aplicaciones 16


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 17


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

4.5.- A usted le aparecerá la siguiente ventana:

Seleccione de tipo Estándar, y siga los siguientes pasos:

Departamento de Arquitectura y Sistemas de Aplicaciones 18


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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:

Departamento de Arquitectura y Sistemas de Aplicaciones 19


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Seleccione la tabla e incorpore al lado derecho (únicamente):

Departamento de Arquitectura y Sistemas de Aplicaciones 20


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Presione siguiente, para poder tener acceso a los campos:

Departamento de Arquitectura y Sistemas de Aplicaciones 21


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Asegúrese de elegir todos los campos que desea mostrar en pantalla, al final seleccione
siguiente.

Departamento de Arquitectura y Sistemas de Aplicaciones 22


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Le aparecerá el agrupamiento, en este caso no seleccione nada, solo presione el botón


siguiente:

Departamento de Arquitectura y Sistemas de Aplicaciones 23


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Tampoco seleccione Filtro, simplemente solo presione el botón siguiente:

Departamento de Arquitectura y Sistemas de Aplicaciones 24


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Seleccione el Cuadro Marrón / Verde Azulado, y presionar Finalizar.

Departamento de Arquitectura y Sistemas de Aplicaciones 25


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 26


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 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.

Ver siguiente página.

Departamento de Arquitectura y Sistemas de Aplicaciones 27


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

De tal forma, que ahora su proyecto esta constituido de la siguiente manera:

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 28


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Al arrastrar el CrystalReportViewer se presenta el siguiente cambio en el Formulario:

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:

Departamento de Arquitectura y Sistemas de Aplicaciones 29


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Objeto Propiedades Observaciones


Formulario Name: FrmVisorReporte. Un único y al centro del
Formulario. Buscar en
Contenedores.
Text: Reporte de Recuerde siempre poner nombre a
Categorías. los Objetos, esta es una buena
StarPosicion: práctica, y más cuando esta
CenterScreen. programando la capa de negocios.
CrystalReportViewer Name: CR. DisplayGruopTree: False. Es
Dock: Fill, lleno. utilizado para no mostrar la parte
DisplayGruopTree: False. izquierda del reporte.

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:

'Librerias que se utilizaran en el Reporte


Imports CrystalDecisions.CrystalReports.Engine

Public Class FrmVisorReporte

'Parametro que permite recibir el reporte a mostrar en el Visor.

'Tiene que haber una propiedad Pública de tipo ReportDocument


‘correspondiente a Crystal Reports, además de ahorrar código, podemos
‘importar librerias facilmente.
Public ObjReporte As ReportDocument

Private Sub FrmVisorReporte_Load(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles MyBase.Load
'Se necesita llamar al Reporte
Try
CR.ReportSource = ObjReporte
CR.Show()

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

Departamento de Arquitectura y Sistemas de Aplicaciones 30


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

En caso de no declarar la librería, otra opción es realizar lo siguiente:

Public ObjReporte1 As CrystalDecisions.CrystalReports.Engine.ReportDocument

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:

a.- debe incluir las librerías antes de la clase FrmPrincipal:

'Librerias que se utilizaran en el Reporte


Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.SqlClient

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):

'Parametro que permite recibir el reporte a mostrar en el Visor.


Dim ObjCnn As SqlConnection
Dim ObjAdapterGral As SqlDataAdapter
'Hay que inicializar las Varibles en FrmPrincipal_Load()

c.- Al momento que se cargue el formulario, debe considerar las siguientes


instrucciones:

Private Sub FrmPrincipal_Load(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Me.Load
Try
'Crear un procedimiento que inicialice los valores y objetos de la
conexión. Me.InicializaVariables()
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en FrmPrincipal_Load" &
ex.Message, MsgBoxStyle.Critical, "Ejemplo1")
End Try

End Sub

Departamento de Arquitectura y Sistemas de Aplicaciones 31


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

d.- El procedimiento de IniciazaVariables() entonces tendrá la siguientes


instrucciones:

'Inicializacion de Variables para manejo de Datos


Private Sub InicializaVariables()

'----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:

Departamento de Arquitectura y Sistemas de Aplicaciones 32


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Private Sub CmdCategoria_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles CmdCategoria.Click
'Se necesita llamar al Reporte
Try
' llamar el reporte categoria
Me.LlamarReporteCategorias()

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

Como se puede observar, también se debe crear un procedimiento para presentar el


Reporte, el cual es el siguiente:

'Llamar al Reporte Categorias


Private Sub LlamarReporteCategorias()
Dim ObjFrmVisorRpt As FrmVisorReporte
Dim ObjRepCategorias As rptCategorias
Dim ObjCategorias As DataTable
Dim StrSql As String

Departamento de Arquitectura y Sistemas de Aplicaciones 33


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Try
ObjCategorias = New DataTable
ObjFrmVisorRpt = New FrmVisorReporte
ObjRepCategorias = New rptCategorias
'-------------

StrSql = " Select CategoryID, " & _


" CategoryName, " & _
" Description " & _
" From Categories " & _
" Order By CategoryName ASC "
'-------------
ObjCnn.Open()
ObjAdapterGral.SelectCommand = New SqlCommand
ObjAdapterGral.SelectCommand.Connection = ObjCnn
ObjAdapterGral.SelectCommand.CommandText = StrSql
ObjAdapterGral.Fill(ObjCategorias)

'------
ObjRepCategorias.SetDataSource(ObjCategorias)
ObjFrmVisorRpt.ObjReporte = ObjRepCategorias
ObjFrmVisorRpt.ShowDialog()

ObjCnn.Close()

Catch ex As Exception

'En caso de existir Error, presentar el porque se genero.


MsgBox("Ocurrio un Error en LlamarReporteCategorias" & ex.Message,
MsgBoxStyle.Critical, "Ejemplo1")

Finally

'ObjFrmVisorRpt.Dispose()
'ObjRepCategorias.Dispose()
ObjFrmVisorRpt = Nothing
ObjRepCategorias = Nothing

End Try

End Sub

Si usted ejecuta las instrucciones entonces obtendrá el siguiente resultado:

Departamento de Arquitectura y Sistemas de Aplicaciones 34


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Le aparecera el Formulario Principal:

Al hacer click en el Botón Reporte Categoría:

Departamento de Arquitectura y Sistemas de Aplicaciones 35


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Segunda Parte

Utilizando Parámetros (ahora con la tabla Territorio)

En este instante se desea presentar los territorios de una determinada región, ya


que estos están divididos en básicamente cuatro partes, las cuales son:

Hay que crear un DataSet de Territorios, esto es lo primero a realizar, y se tiene


que recordar que en este se pegara la Tabla de Regiones (entonces, se puede
deducir, que será con el nombre de DataSetRegiones). Se requiere Filtrar por el
parámetro especificado, y los pasos son los siguientes:

1.- Agregar un nuevo formulario, el cual será: FrmRepTerritorios.Vb.

Departamento de Arquitectura y Sistemas de Aplicaciones 36


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

El formulario tiene que presentar la siguiente estructura:

Los detalles son los siguientes:

Departamento de Arquitectura y Sistemas de Aplicaciones 37


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Objeto Propiedades Observaciones


GroupBox Name: GroupParametros Este brinda una mejor aparecía al
Text: Parámetros. formulario.
Formulario Name: Recuerde siempre poner nombre a
frmParamRepTerritorio los Objetos, esta es una buena
Text: Formulario Con práctica, y más cuando esta
Parámetros. programando la capa de negocios.
Boton1 Name: CmdAceptar.
Text: Aceptar.
Boton2 Name: CmdCancelar.
Text: Cancelar.
ComboBox Name:CboRegion. En el caso del valor
DropDownStyle: DropDownList, este se utiliza
DropDownList. para no permitir que exista
Edición y que los únicos valores
validos, los tenga la lista.

Para encontrar al Objeto GroupBox, buscar en contenedores:

Y para el resto de controles, puede ser localizados en:

Objetos Comunes, los


cuales deben ser incluidos
en el Formulario.

Departamento de Arquitectura y Sistemas de Aplicaciones 38


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

Desde el momento en que se diseña el DataSet, ya se conoce la estructura.

Nuevamente agregar un Conjunto de Datos al Proyecto, en este caso el nombre


será DataSetTerritorios.xsd:

Repita los pasos del ejemplo anterior para poder crear el DataSet con datos:

a.- Tiene que ir al Explorar de Servidores.


b.- Arrastre la Tabla Territories al DataSet.
c.- Verifique si se logro crear el DataSet, para lograr esto, visualice el contenido o
dar vista previa (click Derecho sobre el DataSet y buscar esa opción, ejecutar y
comprobar los datos).

Departamento de Arquitectura y Sistemas de Aplicaciones 39


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Después de los pasos anteriores, este es el resultado:

Si logra presentarse esta ventana en la Pantalla al seleccionar la vista previa,


entonces, lo ha logrado, este es el contenido del DataSet:

Departamento de Arquitectura y Sistemas de Aplicaciones 40


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

3.- A continuación se procede a Crear el Reporte, en este caso, se llamara


rptTerritorios.rpt. Cada vez que se hace este pasó, .NET pide la fuente de
datos para el Reporte.

Para este ejemplo, no se hará:

a.- Ningún Filtrado.


b.- Ninguna Asociación.
c.- Se agregara un Titulo al Reporte: Listado de Territorios.

Departamento de Arquitectura y Sistemas de Aplicaciones 41


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Departamento de Arquitectura y Sistemas de Aplicaciones 42


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Para este caso, no es necesario pasar el RegionID de Territorio:

Como se definió, no se utilizara el agrupamiento:

Departamento de Arquitectura y Sistemas de Aplicaciones 43


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Tampoco se seleccionara ningún registro de subconjunto, así que puede proceder a


presionar siguiente sin temor:

Para presentar el Reporte, seleccionar la penúltima opción (Borde Rojo/Azul), presione


Finalizar:

Departamento de Arquitectura y Sistemas de Aplicaciones 44


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Nuevamente en pantalla, se le presentara el Reporte, el cual en este momento puede


perfectamente iniciar con los ajustes:

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).

Sobre el Campo de la Formula dar Click Derecho:

Departamento de Arquitectura y Sistemas de Aplicaciones 45


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Al Dar Click Derecho, aparecerá una Ventana, la cual es:

Usted Agregara la palabra Región:

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.

Posteriormente, se encuentra con el parámetro creado:

Departamento de Arquitectura y Sistemas de Aplicaciones 46


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 47


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

5.- En este preciso momento, el proyecto tiene los siguientes Objetos:

Ahora se tiene que programar la funcionalidad del Botón de Territorios:

5.1.- Entonces debe agregar el siguiente código:

Departamento de Arquitectura y Sistemas de Aplicaciones 48


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Private Sub cmdTerritorios_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cmdTerritorios.Click

Try
LlamaTerritorios()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdOrdenes_Click " & ex.Message,
MsgBoxStyle.Critical, "EJ2")
End Try

End Sub

5.2.- Debe Crear el Procedimiento LlamaTerritorios:

Private Sub LlamaTerritorios()

'-- Declaracion de Variables


Dim ObjFrmParamTerritorio As frmParamRepTerritorio

Try

ObjFrmParamTerritorio = New frmParamRepTerritorio


ObjFrmParamTerritorio.ShowDialog()

Catch ex As Exception
MsgBox("Ocurrio un error en LlamaTerritorios " & ex.Message,
MsgBoxStyle.Critical, "EJ2")
Finally
ObjFrmParamTerritorio.Dispose()
ObjFrmParamTerritorio = Nothing
End Try
End Sub

5.3.- Puede notar que se ha Creado la funcionalidad para llamar al Reporte, en


este momento debe proceder a crear ese formulario con el nombre de
frmParamRepTerritorio:

5.3.1.- Debe Agregar las librerías antes del nombre de la Clase


FrmParameRepTerritorio, igual que el ejemplo1:

Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine

Departamento de Arquitectura y Sistemas de Aplicaciones 49


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

5.3.2.- Debe incluir las variables y Objetos que manejaran las conexiones de la
Base de Datos:

'-- Declaracion de Variables


Dim ObjConexion As SqlConnection
Dim ObjAdapterGral As SqlDataAdapter
Dim ObjRegion As DataTable
Dim ObjTerritorio As DataTable

5.3.3.- Funcionalidad al cerrar el Formulario:

Private Sub CmdCancelar_Click(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles CmdCancelar.Click
Try
Me.Close()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdCancelar_Click " &
ex.Message, MsgBoxStyle.Critical, "E2")
End Try

End Sub

5.3.4.- La Funcionalidad en Caso de Presionar el Botón Aceptar:

Private Sub CmdAceptar_Click(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles CmdCancelar.Click

Try
Me. LLamaReporteTerritorio()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdCancelar_Click " &
ex.Message, MsgBoxStyle.Critical, "E2")
End Try

End Sub

5.3.5.- Programar al Momento que se cargue el Formulario


frmParamRepTerritorio_Load:

Departamento de Arquitectura y Sistemas de Aplicaciones 50


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Private Sub frmParamRepTerritorio_Load(ByVal sender As


System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Try
InicializaVariables()
LlenaRegion()
Catch ex As Exception
MsgBox("Ocurrio un error en frmParamRepTerritorio_Load "
& ex.Message, MsgBoxStyle.Critical, "E2")
End Try
End Sub

5.3.5.- La funcionalidad del procedimiento de InicializaVariables:

Private Sub InicializaVariables()

'-- Declaracion de Variables


Dim StrConn As String

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

5.3.6.- El Procedimiento Llenar Región:

Private Sub LlenaRegion()

'-- Declaracion de Variables


Dim StrSql As String

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

StrSql = " Select RegionID, RegionDescription " & _


" From Region " & _
" Order By RegionDescription ASC "
'------
ObjAdapterGral.SelectCommand = New
SqlClient.SqlCommand
ObjAdapterGral.SelectCommand.Connection = ObjConexion
ObjAdapterGral.SelectCommand.CommandText = StrSql
ObjAdapterGral.Fill(ObjRegion)

'-- Asignar los datos al Combo


Me.cboRegion.DataSource = ObjRegion
Me.cboRegion.DisplayMember = "RegionDescription"
Me.cboRegion.ValueMember = "RegionID"

'-- Cerrar la conexion


ObjConexion.Close()

Catch ex As Exception
MsgBox("Ocurrio un error en LlenaRegion " & ex.Message,
MsgBoxStyle.Critical, "E2")
End Try

End Sub

5.3.7.- Falta completar el Visor de Reportes, esto se hace con el Procedimiento


LLamaReporteTerritorio:

Private Sub LLamaReporteTerritorio()

'-- Declaracion de Variables


Dim ObjFrmVisorRpt As frmVisorReportes
Dim objRepTerritorios As rptTerritorios
Dim StrSql As String

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

6.- Si todo es correcto, entonces en pantalla aparece el siguiente resultado:

Departamento de Arquitectura y Sistemas de Aplicaciones 53


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

Y si presiona el Botón de Reporte de Territorio:

Si presiona el Botón Aceptar le mostrar el Reporte en base al parámetro:

Como puede observar, la misión se ha cumplido, bienvenido a Crystal Reports.

Departamento de Arquitectura y Sistemas de Aplicaciones 54


Administradores de Bases de Datos Studio .NET 2005 Y SQL Server 2005

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.

3.- A partir de este momento, inicia la segunda ronda de presentaciones de proyectos, es


decir, ahora se deben incluir:

a.- Procedimientos Almacenados (para fines prácticos y crear habilidades se


definen diez procedimientos con Parámetros y cinco sin parámetros).

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.

Departamento de Arquitectura y Sistemas de Aplicaciones 55