Maestro-Detalle con UltraWinGrid 2004 Parte Num #2 Fecha: 02/Feb/2005 (01/02/05) 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:
Utilizar el m�todo PrintPreview para mandar a mostrar el reporte en forma preliminar (Usando Crystal Report .Net)
Utilizar el m�todo de b�squeda FindPosition para acceder al �ndice del registro de un Dataset.
La propiedad Path de solo lectura la cual permite ubicar el archivo que se utilizar� para enviarlo a mostrar en forma preliminar.
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:
FileReport: Es de tipo String el cual tiene como objetivo principal el pasar la ubicaci�n y nombre del archivo de reporte.
DataSource: Es de tipo System.Data.Dataset el cual tiene como objetivo el pasar la informaci�n de conexi�n al reporte.
Filter: Es de tipo String el cual es opcional y tiene como objetivo pasar un filtro al reporte. Este tipo de par�metro es de formato SelectionFormula (Es una propiedad original de Crystal Report .Net. Si deseas mayor informaci�n busca en la ayuda de MSDN de Visual Basic .Net acerca del uso de dicha propiedad, utiliza la clave SelectionFormula).
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:
DataSource: Es de tipo System.Data.Dataset, el cual tiene como objetivo el pasar la informaci�n de conexi�n.
TableName: Es de tipo String, el cual tiene como objetivo pasar el nombre de la tabla o consulta que ser� utilizada para mandar a buscar el registro correspondiente.
FormName: Es de tipo System.Windows.Forms.Form, el cual tiene como objetivo indicar el formulario al cual se efectuara la b�squeda.
Pos: Es de tipo Integer, el cual tiene como objetivo pasar el �ndice num�rico o posici�n del registro dentro del dataset temporal.
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.