HOLA Colegas
les cuento tengo un filtro que pide el apelliido de un medico a travez de un text.box y trae sus datos de un lisviwev pero cuando filtro una letra el listviwev queda sin elementos en la lista,...me guie de un trabajo q me pasaron y ai este elemento rs.RecordCount se pone en 1 es asi con lo q muestra el elemento el mio dice -1......
esta es la sentencia y tambien les pongo la sentencia de la que me guio:
Private Sub Text1_Change()
Set rs = New ADODB.Recordset
Dim Campo, OrderByCampo, Orden As String
Campo = Text1.Text
If rs.State = adStateOpen Then
rs.Close
End If
sql = "SELECT * FROM centromedico.doctor Where apellidomed like '" & Campo & "%'"
rs.Open sql, cn, adOpenStatic, adLockOptimistic
'----------------------------------------------------------------'
With turnos
.ListView1.ListItems.Clear
' si hay registros
MsgBox rs.RecordCount
If rs.RecordCount > 0 Then
Do While Not rs.EOF
Set subelemento = .ListView1.ListItems.Add(, , rs.Fields("nombre_esp"))
subelemento.SubItems(1) = rs.Fields("apellidomed")
subelemento.SubItems(2) = rs.Fields("nombremed")
subelemento.SubItems(3) = rs.Fields("hora_mañanaini")
subelemento.SubItems(4) = rs.Fields("hora_mañanafin")
subelemento.SubItems(5) = rs.Fields("hora_tardeini")
subelemento.SubItems(6) = rs.Fields("hora_tardefin")
subelemento.SubItems(7) = rs.Fields("lunes")
subelemento.SubItems(8) = rs.Fields("martes")
subelemento.SubItems(9) = rs.Fields("miercoles")
subelemento.SubItems(10) = rs.Fields("jueves")
subelemento.SubItems(11) = rs.Fields("viernes")
subelemento.SubItems(12) = rs.Fields("sabado")
rs.MoveNext
Loop
End If
End With
End Sub
la sentencia de la q me guio:------------------------------------------------------------
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 = "Id"
ElseIf Combo1.ListIndex = 1 Then
Campo = "Nombre"
ElseIf Combo1.ListIndex = 2 Then
Campo = "Apellido"
End If
Select Case Combo2.ListIndex
Case 0: OrderByCampo = "Id"
Case 1: OrderByCampo = "Nombre"
Case 2: OrderByCampo = "Apellido"
Case 3: OrderByCampo = "FechaDeAlta"
End Select
If CmdOrdenar(0).Value Then Orden = "asc"
If CmdOrdenar(1).Value Then Orden = "desc"
' si el recorset está abierto lo cierra
If rs.State = adStateOpen Then
rs.Close
End If
SQL = "SELECT * FROM Personas Where " & _
Campo & " like '" & txtSearch & _
"%' order by " & OrderByCampo & " " & Orden
rs.Open SQL, cnn, adOpenStatic, adLockOptimistic
Call CargarListView(FrmPrincipal.LV, rs)
End Sub
---------------------------------------------------------------------------------------------------------
Public Sub CargarListView(LV As ListView, rs As ADODB.Recordset)
On Error GoTo ErrorSub
Dim i As Integer
'limpia el LV
LV.ListItems.Clear
' si hay registros
If rs.RecordCount > 0 Then
' recorre el recordset
While Not rs.EOF
' añade los datos
Set ObjItem = LV.ListItems.Add(, , rs(0))
ObjItem.SubItems(1) = rs!Nombre
ObjItem.SubItems(2) = rs!Apellido
ObjItem.SubItems(3) = rs!Telefono
ObjItem.SubItems(4) = rs!Direccion
If Abs(rs!sexo) = 0 Then
ObjItem.SubItems(5) = "Masculino"
Else
ObjItem.SubItems(5) = "Femenino"
End If
ObjItem.SubItems(6) = rs!FechaDeAlta
' siguiente registro
rs.MoveNext
Wend
End If
Call ForeColorColumn(&H8000&, 0, FrmPrincipal.LV)
'Call ForeColorColumn(vbRed, 6, FrmPrincipal.LV)
Exit Sub
ErrorSub:
If Err.Number = 94 Then Resume Next
End Sub