Filtrar Columnas de un DataSet
Fecha: 09/Ago/2004 (08/08/04)
|
Muchas el usuario no desea ver todas las columnas de un Tabla, solo desea ver algunas una manera de hacerlo cuando estamos trabajando con un dataset, cuando trabajamos de manera desconectada (facil seria enviar en el query de la consulta las columnas que el usurio desea, pero tendriamos que estar viajando en cada consulta al servidor, disminuria el rendimiento de la aplicacion. Cuando usamos un dataSet, solo basta ir una vez al servidor, para llenar la tabla, y de ahi trabajamos de manera desconectada.
Para el siguiente ejemplo usaremos un DataSet, un DataGrid y un CheckedLisBox, entre los principales controles.
Creamos una funcion para llenar el DataSet, declarado publicamente:
'Llenar el dataSEt Private Sub LlenarDataSet() 'cadena de consulta Dim strQuery As String = "SELECT * FROM Authors" 'string of connection in my machine Dim strCn As String = "Data Source=(local); database=pubs; user id=sa; password=sa" Dim dA As New SqlDataAdapter(strQuery, strCn) 'instanciando al dataSet miDataSet = New DataSet() 'enlazando al dataset con el adapter Try dA.Fill(miDataSet, "Authors") Catch err As DataException MsgBox("hubo un error: " & err.Message.ToString()) End Try End Sub Creamos un boton para llenar el CheckLis con las columnas de la tabla:Private Sub cmdShowColumnas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdShowColumnas.Click 'numero de columnas Dim nCol As Integer Dim i As Integer Dim nameCol As String nCol = miDataSet.Tables("Authors").Columns.Count 'llnar el checkd For i = 0 To (nCol - 1) nameCol = miDataSet.Tables("Authors").Columns.Item(i).Caption LstColumnas.Items.Add(nameCol) Next End SubFiltramos solo las columnas marcadas y llenamos el dataSet en una grilla:'Mostrar solo algunas columnas de un DataSet Private Function FiltrarDataSet() As DataSet Dim i As Integer Dim tempDataSet As New DataSet() 'la columan que sera borrada Dim myColumn As DataColumn Dim strColumn As String 'recuperando el dataset 'se copia porque si no lo referencia tempDataSet = Me.miDataSet.Copy() 'viendo que filas se selecciono With Me.LstColumnas For i = 0 To .Items.Count - 1 'viendo que Check estan selecionados If Not .GetItemChecked(i) Then 'recuperando el nombre strColumn = .GetItemText(.Items.Item(i)) 'recuperando la columan del data set myColumn = tempDataSet.Tables(0).Columns(strColumn) 'ahora si borrando la columan del dataset tempDataSet.Tables(0).Columns.Remove(myColumn) End If Next End With Return tempDataSet End Function Private Sub cmdFillGrid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFillGrid.Click 'llenando la grilla con los datos filtrados dgFiltrado.SetDataBinding(Me.FiltrarDataSet(), "Authors") End SubCualqier cosa envio el codigo en Zip, para que verifiquen el programa. Ah verdad, cambian la cadena de conexion, de acuerdo a como tiene instalado el SqlServer, pueden cambiar la tabla tambien.
Fichero con el c�digo de ejemplo: Sergio_FiltrarDataSet - 31 KB