Maestro-Detalle con UltraWinGrid 2004

Parte Num #2
 

Fecha: 02/Feb/2005 (01/02/05)
Autor: Por: Lic. Giovanni Cuadra Reyes
Email: [email protected]

Managua, Nicaragua.

La nueva comunidad de desarrollo!!!

 


La segunda parte del articulo UltraWinGrid 2004 (ver la primera parte) tiene como objetivo exponer dos m�todos los cuales ser�n utilizados con el espacio de nombre Nicasoft.Net.v1.0.2005.dll versi�n final. Estos dos m�todos que expondr� a continuaci�n son:

A continuaci�n explicare el uso de estos dos m�todos que expondr�:

PRINTPREVIEW

Este m�todo tiene como objetivo mostrar en forma preliminar un reporte en formato Crystal Report .Net para Microsoft Visual Basic Express 2005. Dicho m�todo requiere tres par�metros, de los cuales dos son requeridos y uno es opcional. A continuaci�n muestro los nombres de estos tres elementos:

FINDPOSITION

Este m�todo tiene como objetivo principal, buscar un registro dentro de un dataset utilizando el �ndice de la posici�n en el cual se encuentra en memoria. Dicho m�todo requiere cuatro par�metros que son requeridos. A continuaci�n muestro los nombres de estos cuatro elementos:

REQUERIMIENTOS

� VB .Net 2005 Beta 1

� Microsoft Windows XP o superior.

� Mem�ria m�nima 256 RAM.

� Espacio en disco duro de por lo menos 10 Gigas o m�s.

� El software de Infragistics NetAdventage 2004 Volumen 3 (Por lo menos el software de prueba). El cual lo puedes descargar de http://www.infragistics.com/

� Microsoft SQL Server 2000 o superior.

Algo importante, es el mencionar que este ejemplo es una versi�n modificada del primer articulo sobre como crear un formulario maestro-detalle con el control UltraWinGrid 2004, no obstante quiero explicar que las �nica modificaciones en esta segunda parte son los m�todos mencionados anteriormente, por lo tanto el c�digo es el mismo y solo expondr� el c�digo nuevo.

En esta versi�n final del espacio de nombre Nicasoft.Net.v1.0.2005.dll, no expongo m�todo alguno para conexi�n a bases de datos Microsoft Access u otros origines de datos que no sea Microsoft SQL Server 7.0 o 2000. Es importante recalcar que este ejemplo fue probado en la versi�n 2000 de SQL Server.

En versiones futuras incluir� algunas caracter�sticas nuevas que quiz�s ser�n atractivas, entre las cuales conexiones a diferentes or�genes de datos. Tambi�n preparare un archivo de ayuda indicando el uso del resto de los m�todos, as� como ejemplos que podr�n llevar de la mano en el aprendizaje y quiz�s sea un control para simplificar algunas tareas cotidianas.

Iniciare por mostrar el formulario con las nuevas modificaciones:

El cuadro combinado buscar contiene un control de tipo ComboBox el cual es cargado en tiempo de ejecuci�n con todas las categor�as de productos de la tabla categor�as de la base de datos NorthWind, a la par se muestra un bot�n el cual tiene como objetivo que una vez que el dato fue seleccionado del control o lista se hace clic en el bot�n y manda a disparar el m�todo FindPosition para buscar la posici�n de ese registro dentro del dataset en memoria. A continuaci�n muestro el c�digo:

El m�todo FillDataSet, tiene como objetivo primordial el cargar en el Dataset no tipado DataCatProducts_NorthWind los datos en memoria, en este caso exclusivamente los del cat�logo. Esto se hace con el objetivo de obtener los nombres del catalogo para crear la b�squeda con este tipo de criterio y aplicarla al resto del formulario y el reporte.

El control cboB_Categoria, es llenado en tiempo de ejecuci�n utilizando como datasource el dataset temporal detallado anteriormente. La propiedad DisplayMember, permite mostrar las filas originarias de la columna CategoryName y la propiedad ValueMember la columna del ID de cada uno de los nombres de las categor�as, en este caso CategoryID.

A continuaci�n muestro un fragmento de c�digo:

datSource.FillDataSet(Me.SqlCn, Me.DataCatProducts_NorthWind, Me.SqlDatCategorias)

With Me.cboB_Categoria

      .DataSource = Me.DataCatProducts_NorthWind

      .DisplayMember = "Categories.CategoryName"

     .ValueMember = "Categories.CategoryID"

End With

Una vez que todo esto se encuentra debidamente configurado pasamos a escribir el c�digo que permitir� encontrar la categor�a seleccionado dentro del cuadro de lista anteriormente descrito:

Private Sub btnB_Categoria_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnB_Categoria.Click

                    '--Capturar el No. Pos del elemento del combo.

                    Dim Pos As Integer = Me.cboB_Categoria.SelectedIndex

                    '--Mandar a buscar el elemento al DataSet central y tabla principal

                    '--pasar el Index Pos del elemento seleccionado.

                    datSource.FindPosition(Me.DataNorthWind1, "Categories", Me, Pos)

                 '--Aqu� mando a refrescar el contador de registro

                Me.lblCountRecord.Text = datSource.RecordCount(Me.DataNorthWind1, "Categories", Me)

End Sub

A continuaci�n mostrare el formulario en tiempo de ejecuci�n al realizar una b�squeda, utilizando el c�digo mostrado anteriormente. Quiero recalcar en los requerimientos mencionados al inicio de este art�culo ya que sin ellos no obtendremos conocimiento de la operaci�n del c�digo fuente as� como el efecto que este producir�.

Como se puede observar en esta primera figura. En la lista, selecciono la categor�a a buscar, en este caso selecciono Seafood, en la figura dos se observar� el efecto posterior.

 

En la siguiente presentaci�n muestro el registro despu�s de ser seleccionado y encontrado seg�n el �ndice que posee en el dataset en memoria.

Si observas tanto en el c�digo de ejemplo como en el formulario son ejemplos totalmente sencillos. Pues en el caso del fragmento de c�digo expuesto en relaci�n de la b�squeda son unas pocas l�neas de c�digo para realizar algo muy f�cil y r�pido que de alguna forma pueden sacar de apuro a cualquiera o en un idioma m�s sencillo simplificarte el tiempo y resolverte un problema.

A continuaci�n expondr� el fragmento de c�digo para enviarle instrucciones al motor de Crytal Report .Net la orden de mostrar un reporte en forma preliminar. Aqu� se podr� observar tambi�n unas cuantas l�neas de c�digo que pueden quiz�s simplificarte un poco de trabajo y tiempo.

Private Sub btnP_Products_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnP_Products.Click

                    Dim Filename As String = App.Path & "\..\Report\crNorthWind_CatProducts.rpt"         '--Path y nombre del archivo.

                    Dim Filter As String = "{Categories.CategoryName}='" & Me.txtCat.Text & "'"                '--Filtro del archivo.

                    '--El m�todo manda abrir el formulario predise�ado en CR .Net

                    '--El Filter es opcional. Si lo pasas aplica el filtro de tipo SelectionFormula

                    '--de lo contrario carga todos los registros en el reporte.

                    '--El FileName es el nombre del archivo de reporte.

                    '--El Me.DataNorhtWind1 es el DataSource que se le pasa din�micamente a CR .net

                    '--El reporte esta dise�ado en la versi�n 10 de CR .Net

                    Printer.PrintPreview(Filename, Me.DataNorthWind1, Filter)

 

End Sub

Estas tres l�neas de c�digo incluyendo las variables declaradas e inicializadas, m�s el m�todo que permite lanzar al reporte en vista preliminar son las que se requieren para echar andar el ejemplo. La variable Filename se inicializa al ser declarada, en esta forma se concatena una instancia de clase denominada App con la propiedad Path, esta mezcla App.Path es muy parecida a la de VB6.0, dir�a que tienen pr�cticamente el mismo significado e utilizaci�n, ya que permite ubicar el directorio de la aplicaci�n ejecutable y con el atajo \..\Report\crNorthWind_CatProducts.rpt puedo ubicar la direcci�n de localizaci�n del archivo del reporte.

La variable Filter es declarada e inicializada inmediatamente con la instrucci�n {Categories.CategoryName}=Me.txtCat.Text, la cual tiene como objetivo enviarle al reporte o al motor de este un nombre de categor�a el cual ser� filtrado y mostrado en la vista preliminar de datos.

La �ltima instrucci�n Printer.PrintPreview(Filename,Me.DataNorthWind,Filter) es la que invoca al formulario predise�ado que hace referencia a Crystal Report .Net.

A continuaci�n muestro el formulario de ejemplo en la vista preliminar de datos. El registro que mostrare es el mismo donde efectu� la b�squeda ya anteriormente expuesta.

 

EN RESUMEN

Esta segunda entrega tiene como objetivo mostrar algunas de las bondades que nos presta Visual Basic Express 2005 Beta 1, ya que este espacio de nombres que expongo fue dise�ado en dicha versi�n con el prop�sito de recalcar que en cada nueva versi�n de Visual Basic, viene tan mejorado que se escribe menos c�digo cada d�a y esto trae como consecuencia que las personas que trabajamos en este tipo de profesi�n hagamos las cosas m�s r�pido y de forma m�s eficiente.

Espero que este ejemplo sea de ayuda y que produzca mejores ideas de las que expongo aqu�, ya que en este tipo de trabajo siempre las cosas se hacen diferentes y con un mayor grado de eficiencia.

Quiero mencionar que uno de mis objetivo con este espacio de nombres Nicasoft.Net.v1.0.2005.dll es el de tratar de simplificar de alguna forma algunos peque�os pero sencillos procesos de programaci�n que a veces nos beneficia mucho al entregar en tiempo y forma nuestro trabajo. Quiz�s con estos m�todos que expongo se pueda solucionar algunas cosas de forma temporal o definitiva, porque la mayor�a de nosotros encontramos una soluci�n y despu�s la mejoramos.

Pero quiz�s que mi mayor aporte sea, el de brindarle a toda la comunidad peque�as y sencillas ideas para el beneficio del d�a a d�a.

 


Espacios de nombres usados en el c�digo de este art�culo:

Nicasoft.Net.v1.0.2005 (Versi�n final)

System.Data.SqlClient

System.Data

 


Fichero con el c�digo de ejemplo: gcuadra_UltraWindGrid_2004_Fuentes2.zip - Tama�o 114 KB

Para bajarte las DLLs del espacio de nombres Nicasoft Beta 1 puedes hacerlo desde este grupo de MSN:
http://groups.msn.com/Nicasoft-Net2005/

Adem�s ah� encontrar�s las actualizaciones que se hagan a dicha DLL.

 


ir al índice