Menús y Crystal Reports (parte 2)

Anuncio
Universidad Nacional de Ingeniería
UNI - RUSB
Curso de Studio .NET 2005
Uso de Menú en Visual Basic Studio .NET
2005.
Implementación de Menú con Crystal Report
en Studio .Net 2005.
Prof. Giovanni Francisco Sáenz Araica.
1
Tabla de Contenido:
Tabla de Contenido:_______________________________________________________ 2
Creación de Menús en .NET 2005 _______________________________________________ 4
Paso UNO ___________________________________________________________________ 4
Paso DOS____________________________________________________________________ 4
Paso TRES __________________________________________________________________ 5
Paso Cuatro__________________________________________________________________ 6
Paso Cinco___________________________________________________________________ 6
Reporte de Tipo Maestro Detalle – Primer Reporte _________________________________ 9
Paso UNO ___________________________________________________________________ 9
Paso DOS___________________________________________________________________ 10
Paso TRES _________________________________________________________________ 11
Paso CUATRO ______________________________________________________________ 13
Paso Cinco__________________________________________________________________ 14
Paso Seis ___________________________________________________________________ 16
Paso Siete___________________________________________________________________ 16
Paso Ocho __________________________________________________________________ 17
Paso Nueve _________________________________________________________________ 19
Paso Diez ___________________________________________________________________ 19
Paso Once __________________________________________________________________ 21
Paso Doce __________________________________________________________________ 21
Paso Trece __________________________________________________________________ 22
Paso Catorce ________________________________________________________________ 23
Paso Quince_________________________________________________________________ 23
Paso Dieciséis _______________________________________________________________ 24
Paso Diecisiete_______________________________________________________________ 25
Paso Dieciocho ______________________________________________________________ 26
Paso Diecinueve _____________________________________________________________ 27
Paso Veinte _________________________________________________________________ 29
Paso Veintiuno ______________________________________________________________ 30
2
Paso Veintidós_______________________________________________________________ 31
Paso Veintitrés ______________________________________________________________ 32
Ahora Proceda a la Programación en el Menú ____________________________________ 35
El primer paso ______________________________________________________________ 35
Paso Dos ___________________________________________________________________ 36
Paso Tres ___________________________________________________________________ 37
Presentar el Reporte de Ordenes _______________________________________________ 38
El primer paso ______________________________________________________________ 38
Paso Dos ___________________________________________________________________ 38
Paso Tres ___________________________________________________________________ 39
Paso Cuatro: ________________________________________________________________ 40
Tareas:_____________________________________________________________________ 43
Bibliografía: ________________________________________________________________ 44
3
Creación de Menús en .NET 2005
Paso UNO: Crear un nuevo proyecto en Visual Basic .NET 2005:
En este caso, seguirá sobre el proyecto desarrollado en Crystal Reports, el cual esta en la
dirección C:\Curso .NET 2005\Crystal Reports\Reportes\Reportes.
Paso DOS: Buscar en el cuadro de Herramientas el objeto
4
En la Opción
de menú y
barras
de
herramientas,
busque
el
MenuStrip,
este pegarlo al
formulario que
presentara el
Menú.
Paso TRES: Arrastre el MenuStrip y péguelo al Formulario que ha definido donde
estará el Menú:
Notara dos Detalles:
a.- En la parte superior le
indicara un texto que
debe ir agregando las
opciones que desea
presentar
a
lo
horizontal y vertical.
b.- Contenedores de
control mostrara el
objeto incorporado.
5
Paso Cuatro: Asumiendo que usted a desarrollado las prácticas de Crystal Reports, y
tiene este proyecto disponible, se procede a desarrollar esta práctica, encima de ese
proyecto, el cual usted lo tiene ubicado en C:\Curso .NET 2005\Crystal
Reports\Reportes\Reportes.
Ver siguiente página.
Si es correcto, entonces invoque a esa solución y proceda a realizar los siguientes pasos
para presentar el reporte de forma más adecuada:
Los detalles del Formulario
Clase u Objeto
Formulario
MenuStrip
Propiedades
Name:
Text:
Windowstate:
Name:
Valor
FrmMenu
Formulario Menú.
Maximizado.
MenuNorthWind
Paso Cinco: Una vez claro el formulario de fondo, debe colocarse sobre este e ir
agregando los siguientes detalles como se muestran en la figura:
5.1.- Proceda a agregar entonces la primera opción, donde se visualizaran las Tablas:
6
a.- Categorías.
b.- Territorios.
c.- Regiones.
Opción Principal
Tablas
SubOpciones de la
opción Tablas
5.2.- Ahora incluya la opción de Reportes, los cuales serán:
a.- Reporte de Categorías.
b.- Reportes de Regiones.
Para lograr esto, primero colocarse sobre el Titulo de la Columna, y luego escribir
en la parte inferir los sub opciones del menú.
7
De tal forma, que usted podrá ver al final del diseño de esta opción:
Reportes
con Crystal
Reports
Usted Continué, de tal forma que al final se le presente el formulario de la siguiente
manera:
8
Ayuda,
puede usar
programas
adicionales
o
simplemente
formularios
Reporte de Tipo Maestro Detalle – Primer Reporte
Para Trabajar con un Reporte de Tipo Maestro Detalle siga los siguientes pasos:
Paso UNO: Debe Incluir al proyecto un nuevo DataSet, el cual tendrá como nombre
DataSetOrdenes:
9
Paso DOS: Arrastre la Vista vwDetalleOrdenes, la cual tiene el siguiente contenido,
en caso de que no tenga el archivo original (o sea el Scripts):
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[vwDetalleOrdenes]') and OBJECTPROPERTY(id,
N'IsView') = 1)
drop view [dbo].[vwDetalleOrdenes]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW dbo.vwDetalleOrdenes
AS
TOP
100
PERCENT
dbo.[Order
Details].OrderID,
SELECT
dbo.Employees.FirstName
+
dbo.Customers.CustomerID,
dbo.Employees.LastName AS Empleado, dbo.Customers.CompanyName
AS
NombreCompania,
dbo.Orders.OrderDate,
dbo.[Order
Details].ProductID,
dbo.Products.ProductName,
dbo.[Order
Details].Quantity,
dbo.Categories.CategoryName,
dbo.[Order Details].UnitPrice, dbo.[Order Details].Quantity *
dbo.[Order Details].UnitPrice AS CostoTotal
10
FROM
dbo.[Order
Details]
INNER
JOIN
dbo.Products
ON
dbo.[Order Details].ProductID = dbo.Products.ProductID INNER
JOIN
dbo.Categories
ON
dbo.Products.CategoryID
=
dbo.Categories.CategoryID INNER JOIN dbo.Orders ON dbo.[Order
=
dbo.Orders.OrderID
INNER
JOIN
Details].OrderID
dbo.Customers ON dbo.Orders.CustomerID =
INNER
JOIN
dbo.Employees
ON
dbo.Customers.CustomerID
dbo.Orders.EmployeeID = dbo.Employees.EmployeeID ORDER BY
dbo.[Order Details].OrderID, dbo.[Order Details].ProductID
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Paso TRES: Debe de Arrastrar la vista para crear tanto el Table y el TableAdaptar
del DataSetOrdenes:
Si siente inseguridad en la Conexión de los Datos, vea la vista previa, colóquese sobre el
DataSetOrdenes, click Derecho y buscar la opción:
11
Si todo es correcto, la ventana se mostrara de la siguiente forma:
12
Esto asegura que los datos se pudieron conectar de manera correcta.
Paso CUATRO: Ahora proceda a crear el Reporte, entonces a este le pondrá de
nombre rptOrdenes.rpt:
13
Paso Cinco: Presione agregar, y ahora seleccione Estándar y aceptar:
14
Continúa en la siguiente página:
15
Paso Seis: Identifique el DataSet que utilizara:
Paso Siete: Defina los Datos a Presentar en el Reporte:
16
Paso Ocho: Seleccione los campos que se visualizaran en el reporte, observe con
detalle, que para este caso, se han omitido algunos valores, ya que en el reporte no son
necesarios (es decir, por ejemplo el ProductID):
17
Continúa en la siguiente página:
18
Paso Nueve: para este ejemplo, se utilizara el agrupamiento, en este sentido, se
utilizara el OrderID, observar los detalles en las imágenes:
Paso Diez: la sumatoria que se utilizara es la del CostoTotal, el resto se debe eliminar:
19
De tal forma que solo quede el CostoTotal, observar la gráfica:
20
Paso Once: Para este caso, no de ninguna clasificación, si usted lo desea, utilícelo
después de esta configuración (es tarea asignada):
Paso Doce: No se establece para este ejemplo, el uso de diagrama, pero usted lo debe
practicar posteriormente (es otra tarea asignada).
21
Paso Trece: No seleccione ningún subconjunto.
22
Paso Catorce: Muestre el estilo de Reporte Estándar (a usted le queda como tercera
tarea el probar las otras opciones):
Paso Quince: Observar el Reporte rptOrdenes, este es el formato que le presentara, el
cual debe ser ajustado y ordenado.
23
Paso Dieciséis: Muestre una vista previa del reporte, para que observe y tenga una
visión de cómo se mostrara en pantalla los datos.
24
Paso Diecisiete: Recuerde el orden en que se presentaran los reporte, es momento de
realizar el ajuste y la programación del primer reporte, en este caso, Reporte de Ordenes.
25
Paso Dieciocho: Ajustar el OrderID, la fecha y el Total General:
Pie del Orden del ID, Total por Orden
Compra total de todas las Órdenes de Compras
La recomendación, es hacer ajustes, para que no se vea de forma desordenada:
a.- Mandar el Campo Total que corresponde a la sumatoria total a la derecha.
b.- Mandar el Campo Total que corresponde a la sumatoria de cada orden a la derecha.
c.- La etiqueta que dice Total general, cambiarla por una etiqueta que exprese Total X
Orden, donde la letra sea de tipo Arial (la Fuente) y de tamaño 10.
26
Paso Diecinueve: Ajustar la suma total parcial y la suma total de todas las órdenes:
Si se observa, las líneas indican hacia adonde debe de moverse las celdas de los Totales.
Se debe de cambiar la etiqueta, fíjese en los pasos que debe realizar:
27
De tal forma, que ahora se pueda ver de la siguiente manera:
28
Paso Veinte: Incluir un separador de Secciones, en este caso se utilizara una línea:
Ahora agregue una línea, la cual se pueda utilizar para separar los datos de cada orden:
De tal forma, que ahora pueda ver todos los detalles:
29
Paso Veintiuno: Como se desea establecer un poco de más orden en el reporte se
procederán ha hacer los siguientes ajustes:
Se pasaran al encabezado
Eliminara
De tal forma que ahora existirá un mejor orden en la información:
30
Cambios
Paso Veintidós: Ahora al nombre de la sección de encabezado cambie a texto que
represente la información que se mostrara:
En este caso, los cambios se realizaron a las etiquetas que estaban en la sección del
encabezado de la página:
31
Cambios
Incluya el titulo del reporte, en este caso, Lista de Ordenes (tamaño 14):
Paso Veintitrés: Ahora cambie el formato de la OrderDate, fecha de la orden, siga
los pasos que se muestran a continuación:
32
Se coloca sobre el dato que desea dar formato:
Dar click derecho y sobre el buscar el tipo de dato dd/mm/año:
En este caso, asegúrese que sea el formato que se muestra en pantalla:
33
Simplemente solo presione el botón aceptar.
34
Ahora Proceda a la Programación en el Menú
Para Programar el Menú y que en este se pueda cargar las Bases de Datos, junto con los
Reportes:
El primer paso es programar las variables y objetos que controlan la conexión y
muestran el visor:
Estas deben de ser declaradas a nivel de la clase FrmMenu:
Public Class FrmMenu
'Aqui deben ir las declaraciones de los Objetos.
Private Sub FrmMenu_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
End Sub
End Class
Visto con el código que debe incorporarse a la clase FrmMenu:
Public Class FrmMenu
'Aqui deben ir las declaraciones de los Objetos.
'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()
Private Sub FrmMenu_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
‘El siguiente código que se presenta, debe incluirse aquí.
End Sub
End Class
35
Paso Dos: Cuando se cargue el Menú, se deben incluir el siguiente código:
Private Sub FrmMenu_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Try
Me.InicializaVariables()
Catch ex As Exception
'En caso de existir Error, presentar el porque se genero.
MsgBox("Ocurrio un Error en FrmPrincipal_Load"
MsgBoxStyle.Critical, "Ejemplo1")
End Try
&
ex.Message,
End Sub
Incluya el Método o Procedimiento de InicializaVariables, el cual se detalla a
continuación:
'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
Catalog=Northwin;User ID=sa"
Source=LOCAL;Initial
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
36
Paso Tres: Recuerde Incluir las librerías en la parte superior de la Clase:
'Librerias que se utilizaran en el Reporte
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.SqlClient
37
Presentar el Reporte de Ordenes
Para que funcione lo anterior, es necesario incluir la funcionalidad del formularios Menú,
para esto, siga la secuencia de pasos a desarrollar:
El primer paso para presentar los reportes, es colocarse sobre la opción, y hacer doble
click o click sobre ella:
Hacer Click en Reporte de Ordenes
Paso Dos: Se procede a programar el evento al Hacer Click en la opción presentar
Reporte de Ordenes (usted debe agregar el código que se muestra a continuación):
Private Sub ReporteDeCategoriasToolStripMenuItem_Click(ByVal sender As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
ReporteDeCategoriasToolStripMenuItem.Click
Try
LlamaReporteOrdenes()
Catch ex As Exception
MsgBox("Ocurrio un error en cmdOrdenes_Click " & ex.Message,
MsgBoxStyle.Critical, "EJ1")
End Try
End Sub
38
Paso
Tres:
Debe
LlamaReporteOrdenes:
incluir
adicionalmente
el
procedimiento
o
método
Private Sub LlamaReporteOrdenes()
'-- Declaracion de Variables
Dim ObjFrmVisorRpt As frmVisorReportes
Dim ObjRepOrdenes As rptOrdenes
Dim StrSql As String
Dim ObjOrdenes As DataTable
Try
ObjOrdenes = New DataTable
ObjFrmVisorRpt = New frmVisorReportes
ObjRepOrdenes = New rptOrdenes
'-----------‘------------- Observe que esta instruccion es el llamado a una vista:
‘-------------StrSql = " Select * From vwDetalleOrdenes " & _
" Order By OrderID ASC "
'-----------ObjCnn.Open()
ObjAdapterGral.SelectCommand = New SqlCommand
ObjAdapterGral.SelectCommand.Connection = ObjCnn
ObjAdapterGral.SelectCommand.CommandText = StrSql
ObjAdapterGral.Fill(ObjOrdenes)
'-----------ObjRepOrdenes.SetDataSource(ObjOrdenes)
ObjFrmVisorRpt.ObjReporte = ObjRepOrdenes
ObjFrmVisorRpt.ShowDialog()
ObjCnn.Close()
Catch ex As Exception
MsgBox("Ocurrio un error en LlamaReporteOrdenes " & ex.Message,
MsgBoxStyle.Critical, "EJ1")
Finally
ObjFrmVisorRpt.Dispose()
ObjRepOrdenes.Dispose()
ObjOrdenes.Dispose()
ObjRepOrdenes = Nothing
ObjFrmVisorRpt = Nothing
ObjOrdenes = Nothing
39
End Try
End Sub
Paso Cuatro: Antes de Correr el programa, asegúrese de tener conexión con el
servidor, en caso de no estar habilitada esta, se le presentaran problemas, y quizás no serán
las salidas que espera ver:
En este sentido, actualice la conexión, en caso de no existir ninguna habilitada. Recuerde
colocarse sobre la conexión que desea utilizar, luego click derecho y actualizar, listo:
40
Notara la diferencia, ya que podrá observar detalles, como la conexión directa u otros:
Una Vez ajustado todos los detalles, se presentara la ventana del menú de la siguiente
manera:
41
Si usted hace click sobre el Reporte de Ordenes, la cual es una suborden de Reportes, se
presentara el reporte, observe las siguiente imágenes:
Esta es la figura de la solicitud del Reporte Ordenes.
En la pantalla completa vera lo el reporte:
En la parte final, podrá observar el detalle del desglose global de todas las órdenes:
42
Observe el final de la ultima pagina en su reporte, vera estos detalles.
Tareas:
Puede observar que los otros dos reportes son de la primera actividad que se realizo con
Crystal Reports, su misión para este momento es:
a.- Incluir estos dos reportes a este menú, los cuales están el archivo de Crystal Reports
parte 1, ver en la WEB.
b.- Crear dos Formularios adicionales, los cuales debe responder a las dos opciones de
ayuda, tanto para el Acerca de… y Ayuda del Sistema (se puede auxiliar de cualquier
programa que diseñe el sistema de ayuda).
c.- Debe Incluir tres formularios para hacer el llamado a las tablas que se señalan en la
Opción “Tablas”, en este sentido, busque en la WEB del Profesor Giovanni Sáenz, los
archivos que se utilizaron para pintar las tablas en formularios y objetos DataSet
conectados y desconectados.
Para todo lo anterior, existe mucha información en esta página, no puede existir pretexto
para no avanzar en el proyecto, hay bastantes insumos, en tal caso, proceda a realizar las
indagaciones (investigaciones, como se le llamaba antes, pero este termino es únicamente
valido cuando van a crear algo que no existe, en este caso, ya existe y en los libros de
43
cualquier autor se puede encontrar – tomen el ejemplos de los otros grupos, tal como el
4T1_Co y el 4T3_Co, ellos están programados todo sin esperar que el profesor suba la
información adicional).
Bibliografía:
I.- Departamento de Arquitectura y Sistemas de Aplicaciones, Ingeniería en Computación,
Curso .NET 2003 y SQL Server 2000 – Administradores de Bases de
Datos, año 2007. Impartido por Ing. Glenda Barrios e Ing. Marvin Lira.
II.- Michael Halvorson, Aprenda ya Visual Basic .NET 2005, Mc Graw Hill –
Profesional, ISBN: 970-10-5897-6.
III.- Harvey M. Deitel y Paul J. Deitel, Como Programar en C#, Pearson – Prentice
Hall, segunda edicion, ISBN: 970-26-1056-7.
IV.- Forrest Houlette, Fundamentos de SQL, Mc Graw Hill, ISBN: 970-10-3895-9.
Existe información adicional, en este momento no se ha incluido, pero ustedes la conocen,
en clases les he mostrado cada uno de los libros, así como se, que ya los compraron.
44
Descargar