Buscar datos solo con las primeras letras

Estoy haciendo un pequeño programa para una Biblioteca el cual cuando le doy a buscar autor no tenga que poner el nombre completo, sino solo el nombre o apellido, o las primera letras, por ejemplo imaginate que vas a buscar una persona con el apellido "schwarzenegger" Diooooooos...¡ ¿Cómo me puedo acordar de ese apellido? En este caso solo colocas "Sch" y el código que coloco me debe buscar en la base de datos todos los datos que contengan "Sch" no importa que empiece o termine con esas letras solo tiene que tenerlas. Aquí te hago envío de la linea de código que estoy escribiendo:
DataAvanzada.RecordSource = "select * from Biblioteca where Autor = '" & s & "' or Autor2 = '" & s & "' or Autor3 = '" & s & "' or Autor4 = '" & s & "' "
Es solo parte del código.
Respuesta
1
Utiliza LIKE para hacer esta consulta
" Select * from Biblioteca WHere Autor LikE '%" & s & "%' OR Autor2 LIKE '%" & s "%' "
Gracias amigo por tu valiosa respuesta, pero ahora el programa me dice que ese dato no existe pero el dato esta ahí, te voy a enviar el código completo a ver si fue que omití algo:
ElseIf Oautor = True Then
    Dim s As String
    s = Text1.Text
    DataAvanzada.RecordSource = "select * from Biblioteca where Autor Like '%" & s & "%' or Autor2 Like '%" & s & "%' or Autor3 Like '%" & s & "%' or Autor4 Like '%" & s & "%'"
    DataAvanzada.Refresh
    Tabla2.Visible = True
    LabelVisible
    activarVisible
    Label2.Visible = True
    Label2 = "Total de Registros de la Consulta: " & (Tabla2.Rows) - 1 & ""
    DataAvanzada.Visible = True
If DataAvanzada.Recordset.EOF Then
    MsgBox "El Nombre del Autor: '" & Text1 & "'" & " No está en la Base de Datos", vbExclamation, "¡Por Favor Revisa el dato!"
    Tabla2.Visible = False
    Label2.Visible = False
    DataAvanzada.Visible = False
    Text1.Visible = True
    Text1 = ""
    Text1.SetFocus
    LabelNoVisible
    desactivarVisible
Gracias
    End If
Ejecuta la sentencia sql en el query analyzer y vas probando primero con autor1 luego con el 2 y así hasta que ubiques el error.

1 respuesta más de otro experto

Respuesta
1
Para esta opción en particular de schwarzenegger, si deseas buscar con la condición de sch, tu comando debe ser así:
select * from Biblioteca where Autor Like '%sch%'
Esto te arrojaría todos los autores de la tabla bilbioteca que tengan la cadena "sch" en su nombre y/o apellido sin improtar la ubicación de esta.
Gracias amigo por tu respuesta, pero ahora cuando le doy a buscar me dice que el dato no existe, y se que esta ahí. Te envío el código completo a ver si es que le falta un pequeño detalle:
ElseIf oAutor = True Then
    Dim s As String
    s = Text1.Text
    DataAvanzada.RecordSource = "select * from Biblioteca where Autor Like ' % s % ' or Autor2 Like '& s &'or Autor3 Like '& s &'or Autor4 Like '& s &'"
    DataAvanzada.Refresh
    Tabla2.Visible = True
    LabelVisible
    activarVisible
    Label2.Visible = True
    Label2 = "Total de Registros de la Consulta: " & (Tabla2.Rows) - 1 & ""
    DataAvanzada.Visible = True
If DataAvanzada.Recordset.EOF Then
    MsgBox "El Nombre del Autor: '" & Text1 & "'" & " No está en la Base de Datos", vbExclamation, "¡Por Favor Revisa el dato!"
    Tabla2.Visible = False
    Label2.Visible = False
    DataAvanzada.Visible = False
    Text1.Visible = True
    Text1 = ""
    Text1.SetFocus
    LabelNoVisible
    desactivarVisible
    End If
Gracias.
Tienes Autor Like '% es %' y luego los otros son "Autor Like '& es &', entonces si tu quieres buscar en autor la cadena de texto que tenga es debes colocar %s%, porque si lo colocas % s % estas buscando la s con un espacio antes y otro después.
Disculpame con esto, cometí una equivocación, estuve consultando mis textos y para buscar con like utiliza el * en lugar del % es decir Autor Like '*s*', igual no entiendo porque en los ostros Autores usas &, ¿quieren concatenar algo?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas