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