Visual Basic - formulario de busqueda

Life is soft - evento anual de software empresarial
   
Vista:

formulario de busqueda

Publicado por horacio (7 intervenciones) el 14/11/2015 13:35:40
Buenas tengo un abm de biblioteca

libro es lo siguiente

1
2
3
4
5
6
7
8
Public Type TDULibro
    titulo As String
    autor As String
    editorial As String
    comentario As String
    anio As Integer
    cantPaginas As Integer
End Type

tengo un formulario de busqueda para buscar dentro de un array
1
Public libros() As TDULibro

en el formulario de busqueda tengo un textbox para ingresar la busqueda
despues optionbox segun el tipo de busqueda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function seleccionar() As Integer
    If Busqueda.optTitulo.Value = True Then
        seleccionar = 1
    End If
    If Busqueda.optAutor.Value = True Then
            seleccionar = 2
    End If
    If Busqueda.optEditorial.Value = True Then
            seleccionar = 3
    End If
    If Busqueda.optAnio.Value = True Then
            seleccionar = 4
    End If
End Function

un botón de buscar y un listbox donde aparece el resultado de la búsqueda

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
Public Sub buscar()
    Dim opcion, pos As Integer
    opcion = seleccionar()
    Dim search As String
    search = Busqueda.txtBusqueda.Text
    Select Case opcion
 
        Case 1
            pos = busquedaXTitulo(search)
        Case 2
            pos = busquedaXAutor(search)
        Case 3
            pos = busquedaXEditorial(search)
        Case 4
            pos = busquedaXAnio(CInt(search))
    End Select
    Busqueda.List1.Clear
    If pos >= 0 Then
        Dim libro As TDULibro
        libro = libros(pos)
        Dim item As String
        item = libro.titulo & "-" & libro.autor & "-" & libro.editorial & "-" & libro.anio
        Busqueda.List1.AddItem (item)
    Else
        Busqueda.List1.AddItem ("No se encontraron resultados")
    End If
End Sub

como puedo filtrar la busqueda con comienze con, termine con o contenga alguna parte de la cadena
por ej busqueda por titulo
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Function busquedaXTitulo(titulo As String) As Integer
    Dim i As Integer
    i = LBound(libros)
    While i < UBound(libros) And libros(i).titulo <> titulo
        i = i + 1
    Wend
    If i < UBound(libros) Then
        busquedaXTitulo = i
    Else
        busquedaXTitulo = -1
    End If
 
End Function

Desde ya gracias
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