Ver Mensaje Individual
  #23 (permalink)  
Antiguo 06/04/2009, 13:14
principefreddy
 
Fecha de Ingreso: julio-2008
Mensajes: 205
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problema con filtrado

hola david. mira he conseguido que filtrara. pero solo por una de los tres opciones que tengo en el combo. mas no logro que ordene. te paso el coodigo.

el siguiente codigo esta en el FormRegistro:
Public Sub Cargar_Lista()


'Esto nos permitirá acceder a las tablas y a sus registros.
Dim rs As New ADODB.Recordset
Dim iEle As Integer
'rs.Open "SELECT * FROM registro", nc, adOpenDynamic, adLockOptimistic
*********************** aqui es donde le digo con el where que me filtre por cedula************ ese fue todo el cambio. *****************************
rs.Open "SELECT * FROM registro Where Cedula Like '%" & FormFiltrar.txtSearch & "%'", nc, adOpenDynamic, adLockOptimistic

'Ahora biene lo bueno...

'Limpiamos el objeto LISTVIEW...
FormRegistro.lvLista.ListItems.Clear


While Not rs.EOF
'Se comporta como un archivo...
iEle = (FormRegistro.lvLista.ListItems.Count) + 1

With FormRegistro.lvLista

.ListItems.Add , , rs!codigo
.ListItems(iEle).SubItems(1) = rs!nacionalidad
.ListItems(iEle).SubItems(2) = rs!Cedula
.ListItems(iEle).SubItems(3) = rs!Nombre
.ListItems(iEle).SubItems(4) = rs!sexo
.ListItems(iEle).SubItems(5) = rs!estadocivil
.ListItems(iEle).SubItems(6) = CLng(rs!edad)
.SelectedItem.Selected = False

End With

'Esto no debe faltar...
rs.MoveNext
'es para moverse entre los registros.

Wend

'cerramos el recurso.
rs.Close
'y lo destruimos o sacamos de la memoria..
Set rs = Nothing
'End Sub
End Sub

y el siguiente codigo esta en el FormFiltrar:
Public Sub Filtrar()
Dim Campo, OrderByCampo, Orden As String
Dim SQL As String

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 = "Codigo"
ElseIf Combo1.ListIndex = 1 Then
Campo = "Cedula"
ElseIf Combo1.ListIndex = 2 Then
Campo = "Nombre"
End If

Select Case Combo2.ListIndex
Case 0: OrderByCampo = "Codigo"
Case 1: OrderByCampo = "Cedula"
Case 2: OrderByCampo = "Nombre"
End Select


' si el recorset está abierto lo cierra
If rs.State = 1 Then
rs.Close
End If

SQL = "SELECT * FROM registro Where " & _
Campo & " like '" & txtSearch & _
"%' order by " & OrderByCampo & " " & Orden
Call FormRegistro.Cargar_Lista '(FormRegistro.lvLista, rs)
rs.Open SQL, nc, adOpenStatic, adLockOptimistic
End Sub