en este momente pienso un monton de cosas para hacerlo, pero para salir del paso proba pasarle como parametro la cadena de conexion y asi se conecta segun lo que vos le pases...por ejemplo(y por favor indentar el codigo y usar la etiqueta del codigo del foro!!!!!!!), mira que bueno que soy que hasta te acomode el codigo..¿no se lee mejor asi?
Código vb:
Ver originalPublic Sub Cargar_Lista(ByVal vSQL As String)
'Esto nos permitirá acceder a las tablas y a sus registros.
Dim rs As New ADODB.Recordset
Dim iEle As Integer
'*********************** aqui es donde le digo con el where que me filtre por cedula************ ese fue todo el cambio. *****************************
If vSQL = "" Then
'si no hay parametro se conecta por defecto asi
rs.Open "SELECT * FROM registro Where Cedula Like '%" & FormFiltrar.txtSearch & "%'", nc, adOpenDynamic, adLockOptimistic
Else
'si hay parametro(o sea viene del formualario filtro) te conectas con la cadena que le pasaste..
rs.Open vSQL, nc, adOpenDynamic, adLockOptimistic
End If
'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
Código vb:
Ver originalPublic 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(SQL)
'rs.Open SQL, nc, adOpenStatic, adLockOptimistic
End Sub
probalo...
saludos.