Buenas amigos espero puedan ayudarme.
Resulta que tengo un formulario con el cual intento filtrar ciertos registros, el asunto es que al intentar utilizar el LIKE con el comodin % para que a medida que escribo el criterio valla filtrando las conincidencias no me funciona y con ADO si funcion, tengo entendido que con dao es otro caracter de comodin o que se utiliza de otra forma. aqui les dejo lo que tengo. gracias por todo.
PD: lo que pretendo es que al buscar apellido GONZALES al escribir G o GO o GON etc, me vaya filtrando los registros que coincidan con lo que voy escribiendo.
Public Sub Filtrar()
On Error GoTo Hay_err_err
Dim Item As ListItem
Dim Campo, OrderByCampo, Orden As String
Form2.ListView1.ListItems.Clear
If Combo1.ListIndex = -1 Then
Combo1.ListIndex = 0
End If
If Combo2.ListIndex = -1 Then
Combo2.ListIndex = 0
End If
If Combo1.ListIndex = 0 Then
Campo = "afiliado"
ElseIf Combo1.ListIndex = 1 Then
Campo = "Nombres"
ElseIf Combo1.ListIndex = 2 Then
Campo = "Apellidos"
End If
Select Case Combo2.ListIndex
Case 0: OrderByCampo = "afiliado"
Case 1: OrderByCampo = "Nombres"
Case 2: OrderByCampo = "Apellidos"
Case 3: OrderByCampo = "Fecha_afiliacion"
End Select
'If CmdOrdenar(0).Value Then Orden = "asc"
'If CmdOrdenar(1).Value Then Orden = "desc"
Dbpath = App.Path & "\" & DirectorioBase & "\" & Db_A_Name
strSQL = "SELECT * FROM tbl_afiliados Where " & _
Campo & " like '" & txtSearch & "'% order by " & OrderByCampo & " " & Orden
Set Db = DBEngine.OpenDatabase(Dbpath, False, False, ";pwd=" & StrPass)
Set Rst = Db.OpenRecordset(strSQL)
'Recorre todos los registro para añadirlos al ListView
While Not Rst.EOF
Set Item = Form2.ListView1.ListItems.Add(, , Rst!afiliado)
Item.SubItems(1) = Rst!apellidos
Item.SubItems(2) = Rst!nombres
Item.SubItems(3) = Rst!empresa
Item.SubItems(4) = Rst!linea
Rst.MoveNext
Wend
Hay_err_exit:
Rst.Close
Db.Close
Set Rst = Nothing
Set Db = Nothing
Hay_err_err:
Select Case Err.Number
Case 3024
MsgBox "Es imposible encontrar la base de datos. " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la ruta:" & App.Path & "\bases" & " e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
Resume Hay_err_exit:
Case 3078
MsgBox "Es imposible encontrar la tabla: " & vbCrLf & vbCrLf & "Verifique que exista o que se encuentre en la base de datos" & "Base_Actual.mdb" & "e intente nuevamente", vbInformation + vbOKOnly, "Aviso!"
Resume Hay_err_exit:
End Select
End Sub
Creo que te falta un comodin despues de like
Campo like '%GON%' order by Campo
Haci es que debe quedar creo ese es el recordsorce que visualice de un ado pero en esencia es lo mismo osea
SQL = "%" & Trim(txtSearch.Text) & "%"
"SELECT * From tbl_afiliados WHERE " & Campo & " like '" & Trim(SQL) & "' order by " & OrderByCampo & " " & Orden
Chekate hay si funciona no tengo vb en esta pc pero creo que debe funcionar asi talves te sirva de algo
Saludos...
'Query
strSQL = "SELECT * FROM tbl_afiliados WHERE Campo LIKE '" & txtSearch & "%' Order by Campo;"
Esa es la instrucción SQL correcta. Luego de hacerlo, pues limpias todos los registro del listview y lo cargas nuevamente pasandole esa instrucción, q por cierto lo debes colocar en el objeto txtSearch en el evento Change
De esa manera funcionará. Saludos
Citar
Esa es la instrucción SQL correcta.
claro que el comdin de adelante se puede omitir pero yo siempre lo pongo o lo utilizo pork me abia dado ciertos errores en diversos momentos cuando lo omitia anteriormente y por eso me he acostumbrado a utilizarlos.
Saludos...
Hola de nuevo, gracias por las respuestas pero no ha resultado, todas las sugerencias que me dieron funcionan en ADO pero no con DAO, lamentablemente tengo mi codigo adaptado a esta forma de trabajo y se me hace muy dificil cambiarlo. probe lo seiguiente:
strSQL = "SELECT * FROM tbl_afiliados Where " & _
Campo & " like '" & txtSearch & "'% order by " & OrderByCampo & " " & Orden
Pero sigue sin funcionar, yo no recuerdo bien pero estoy seguro de que se utilizaba de otra manera o sin comillas o no recuerdo la combinacion pero era distinto con DAO, gracias y espero mas sugerencaias.
Bueno creo k tu problema es esta parte parece que no chekaste los code que te hemos dejado pero bueno...
txtSearch & "'% order by " &
este deberia ser haci
& txtSearch & "%' Order by " &
Antes de la comilla simple va el comodin no despues y en todo caso la instruccion sql debe funcionarte sea ado o dao o como kieras usarla..
Saludos...