Visual Basic - Filtrar registros de un MSFlexGrid

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 17/11/2015 19:45:56
Que tal, los molesto para lo siguiente:

Necesito filtrar mediante un TextBox (conforme se escriba en el), los resultados que tengo en un MSFlexGrid.

Este MSFlexGrid ya está previamente lleno con una consulta realizada cuando cargo el Modulo que lo contiene.

El resultado del filtro escrito en el TextBox necesito mostrarlo en un ListBox y de ahí seleccionar uno para poder modificarlo en otro modulo que ya tengo hecho.

Espero haberme explicado. Estoy trabajando con Visual Basic 6.0 y no creo que se requiera, pero trabajo con SQL 2000 para la Base de Datos.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 18/11/2015 19:50:53
El código que tengo es este, solo que no quiero hacer conexión a la base de datos porque el FlexGrid ya esta previamente cargado como menciono en mi primer mensaje. Lo que quiero es filtrar del FlexGrid y mostrar en un ListBox las coincidencias de lo que se escribe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub Buscar()
 
    If Len(Trim(txtBuscar)) < 3 Or txtBuscar = "<< Capture un proveedor o descripción >>" Then Exit Sub
 
    lstBuscar.Clear
 
    SqlCanQuery (SqlConn)
    strquery = "SELECT nompr, rfcpr, ciudd, a.idpro, isnull(b.correo, 'NO ESPECIFICADO'), isnull(claveweb, 'SIN CLAVE') FROM  proveedores a left join proveedoresdet b on a.idpro = b.idpro where nompr LIKE '%" & LTrim(RTrim(txtBuscar.Text)) & "%'"
 
    Result = SqlCmd(SqlConn, strquery)
    Result = SqlExec(SqlConn)
    Result = SqlResults(SqlConn)
 
On Error GoTo Salir
 
    If (Result = SUCCEED) Then
        Result = SqlNextRow(SqlConn)
        If (Result <> NOMOREROWS) Then
            Do
                lstBuscar.AddItem Trim(SqlData(SqlConn, 2)) + vbTab + Trim(SqlData(SqlConn, 1))
                Result = SqlNextRow(SqlConn)
            Loop Until (Result = NOMOREROWS)
        End If
        SqlCanQuery (SqlConn)
    End If
 
 
Salir:
    If lstBuscar.ListCount > 0 And Not lstBuscar.Visible Then lstBuscar.Visible = True
 
End Sub


Saludos.!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 24/11/2015 00:53:09
Por si alguien tuvo la curiosidad, les dejo lo que me ayudo a resolver.

No era más que 2 Ciclos For Next, uno para recorrer las filas y otro las columnas..les dejo el codigo por si les sirve.

1
2
3
4
5
6
7
8
9
With msfProvs
        For R = 0 To .Rows - 1  'Filas
            For C = 0 To .Cols - 1  'Columnas
                If InStr(1, .TextMatrix(R, C), txtBuscar.Text, vbTextCompare) > 0 Then
                    lstBuscar.AddItem .TextMatrix(R, 1) + vbTab + .TextMatrix(R, 0)
                End If
            Next C
        Next R
    End With

Saludos..que esten bien.!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Filtrar registros de un MSFlexGrid

Publicado por xve (178 intervenciones) el 24/11/2015 09:55:07
Gracias por compartirlo Rubhenn!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 24/11/2015 20:55:51
No hay de que..espero te sirva si lo llegaras a ocupar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 25/11/2015 19:58:29
Algo más relacionado con lo mismo.

Ya que encuentro el registro y lo tengo en la Lista, quisiera saber como moverme al MSFlexGrid exactamente en la posición en la que se encuentre el registro seleccionado.

Tengo el siguiente código, pero lo que hace es que me manda al primer registro del MSFlexGrid independientemente cual sea el que yo haya seleccionado en la lista.

1
2
3
4
5
6
If lstBuscar.ListIndex > -1 Then
        fraBuscar.Visible = False
        msfProvs.Row = lstBuscar.ItemData(lstBuscar.ListIndex) + 1
        msfProvs.TopRow = msfProvs.Row
        msfProvs.SetFocus
End If

Como hago esto?

Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rubhenn

Filtrar registros de un MSFlexGrid

Publicado por Rubhenn (16 intervenciones) el 26/11/2015 16:51:16
Ya encontre la solución.

Antes de moverme al MSFlexGrid necesito asignarle valor al ItemData del ListBox. Esto lo realizo en esta parte:

1
2
3
4
5
6
7
8
9
10
With msfProvs
        For R = 0 To .Rows - 1  'Filas
            For C = 0 To .Cols - 1  'Columnas
                If InStr(1, .TextMatrix(R, C), txtBuscar.Text, vbTextCompare) > 0 Then
                    lstBuscar.AddItem .TextMatrix(R, 1) + vbTab + .TextMatrix(R, 0)
                    lstBuscar.ItemData (lstBuscar.NewIndex) = R   '<--------- Aqui se le asigna el valor.
                End If
            Next C
        Next R
    End With

Entonces si, despues de esto se llama esta parte:

1
2
3
4
5
6
If lstBuscar.ListIndex > -1 Then
        fraBuscar.Visible = False
        msfProvs.Row = lstBuscar.ItemData(lstBuscar.ListIndex)
        msfProvs.TopRow = msfProvs.Row
        msfProvs.SetFocus
End If

Y listo..de esta manera se posiciona en el registro que se eligio desde la Lista al FlexGrid

Espero haberme dado a entender.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar