Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/12/2012, 07:51
41b3r70
 
Fecha de Ingreso: febrero-2010
Mensajes: 28
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema de filtro en Data Adapter

Hola. Gracias jhonjairo00 por tu interes. He conseguido solucionarlo despues de darle muchas vueltas.

Lo que yo queria hacer era cargar todos los datos de la tabla mediante una sola conexion a la BBDD y que luego todos los filtros que se hicieran, no requiriesen de mas conexiones. Mas que nada porque la tabla contiene bastantes registros y al estar los filtros colocados en los eventos textchanged de los textbox, se ralentizaba un poco el tema. De ahi que quisiera usar un adptador y filtrar sobre el para no realizar mas conexiones.

Al final lo he solucionado asi:

Código:
  Private Sub FiltrarDatos()

        If Tabla.Rows.Count = 0 Then
            Exit Sub
        End If

        Dim StrFiltro As String = Nothing
        Dim FiltroCompleto As String = Nothing

        If Txt_ReferenciaHistoricoFabricacion.Text <> "" Then
            If StrFiltro = "" Then
                StrFiltro = StrFiltro & " Referencia= '" & Txt_ReferenciaHistoricoFabricacion.Text & "'"
            Else
                StrFiltro = StrFiltro & " and Referencia=  '" & Txt_ReferenciaHistoricoFabricacion.Text & "'"
            End If
        End If
        If Txt_HRHistoricoFabricacion.Text <> "" Then
            If StrFiltro = "" Then
                StrFiltro = StrFiltro & " Nº_HR=  '" & Txt_HRHistoricoFabricacion.Text & "'"
            Else
                StrFiltro = StrFiltro & " and Nº_HR=  '" & Txt_HRHistoricoFabricacion.Text & "'"
            End If
        End If

.............

     FiltroCompleto = StrFiltro
        Dim Filtro As New DataView(Tabla)
        Filtro.RowFilter = FiltroCompleto
        Dim i As Integer
        Dim Lista As ListViewItem = Nothing
        Dim fila As DataRowView
        Lst_HistoricoFabricacion.Items.Clear()
        For Each fila In Filtro
            For i = 0 To Lst_HistoricoFabricacion.Columns.Count - 1
                If i = 0 Then
                    Lista = Lst_HistoricoFabricacion.Items.Add(fila(i).ToString)
                    Lista.Tag = fila
                Else
                    Lista.SubItems.Add(fila(i).ToString)
                End If
            Next
        Next

Seguramente haya una forma mejor de hacerlo pero a mi me ha funcionado asi. Gracias otra vez