DAO y SQL

Iniciado por mdg, 4 Febrero 2009, 05:28 AM

0 Miembros y 1 Visitante están viendo este tema.

mdg

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

Angeldj27

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...


"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!

ssccaann43 ©

#2
Código (vb) [Seleccionar]

'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
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

Angeldj27

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...


"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!

mdg

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.

Angeldj27

Bueno creo k tu problema es esta parte parece que no chekaste los code que te hemos dejado pero bueno...

Código (vb) [Seleccionar]

txtSearch & "'% order by " &


este deberia ser haci

Código (vb) [Seleccionar]

& 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...


"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!