Visual Basic - Buequeda !!!

Life is soft - evento anual de software empresarial
 
Vista:

Buequeda !!!

Publicado por Tomas (28 intervenciones) el 22/06/2007 19:17:35
Estoy haciendo una busqueda en un listbox desde un textbox...

la idea es que cuando le de enter al textbox... el contenido del mismo sea buscado en el listbox y lo filtre... el detalle de esto que lo busque sin importar que tenga adelante y que tenga atras el contenidof del textbox por ejemplo

as

el resultado seria

casa
asador
masa
tasa
asumir
lasaña

fijese que todas las palabras contiene en algun lugar las letras as claro seguidas !!!
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

RE:Buequeda !!!

Publicado por Richard (67 intervenciones) el 22/06/2007 23:43:23
si lo que quieres es filtrar el contenido de un ListBox, sin base de datos..podrias

-------------------------------------------------------------------------------------------
'General...
Private Type tp_DatosFiltrados
Elemen As String
Agregar As Boolean
End Type

Dim Vector() As String
Dim VectorTemp() As tp_DatosFiltrados

Dim Elems As Integer
--------------------------------------------------------------------
Private Sub Form_Load()

RescatarContenidoDeListBox

End Sub
--------------------------------------------------------------------
Private Sub RescatarContenidoDeListBox()

Dim E As Integer

'Guardamos los elemntos iniciales del ListBox
Elems = List1.ListCount - 1

ReDim Vector(Elems)

For E = 0 To Elems
Vector(E) = List1.List(E)
Next

End Sub
--------------------------------------------------------------------
Private Sub ElemntosInicialesListBox()

Dim E As Integer

'Cargamos los elementos iniciales
For E = 0 To Elems
List1.List(E) = Vector(E)
Next

End Sub
--------------------------------------------------------------------
Private Sub FiltrarElemntos(Elemento As String)

Dim E As Integer
Dim E2, E3 As Integer

E2 = List1.ListCount - 1

ReDim VectorTemp(E2)

For E = 0 To E2

VectorTemp(E).Elemen = List1.List(E)
If Es_SubCadena(Trim(UCase(List1.List(E))), Trim(UCase(Elemento))) Then
VectorTemp(E).Agregar = True
Else
VectorTemp(E).Agregar = False
End If

Next

E3 = 0
List1.Clear

For E = 0 To E2
If VectorTemp(E).Agregar Then
List1.AddItem VectorTemp(E).Elemen, E3
E3 = E3 + 1
End If
Next

End Sub
--------------------------------------------------------------------
Private Sub Text1_Change()

If Trim(Text1.Text) <> "" Then
FiltrarElemntos Trim(Text1.Text)
Else
ElemntosInicialesListBox
End If

End Sub
--------------------------------------------------------------------
Private Function Es_SubCadena(Cadena As String, SubCadena As String) As Boolean

Dim I As Integer
Dim Parte As String

Es_SubCadena = False

For I = 1 To Len(Trim(Cadena))
Parte = Mid(Trim(Cadena), I, 1)

If Parte = Mid(Trim(SubCadena), 1, 1) Then
If Mid(Trim(Cadena), I, Len(Trim(SubCadena))) = Mid(Trim(SubCadena), 1, Len(Trim(SubCadena))) Then
Es_SubCadena = True
Exit For
End If
End If

Next

End Function

--------------------------------------------------------------------

si es con bases de datos, podrias utilizar el Comodin LIKE.
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