Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Buscar y mostrar resultados en Listview

Estas en el tema de Buscar y mostrar resultados en Listview en el foro de Visual Basic clásico en Foros del Web. Hola a todos!!!! Mi problema es el siguiente: Tengo una agenda hecha con VB6, pero al tratar de instalarla en otro pc, por más que ...
  #1 (permalink)  
Antiguo 16/05/2012, 08:30
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Buscar y mostrar resultados en Listview

Hola a todos!!!!
Mi problema es el siguiente:
Tengo una agenda hecha con VB6, pero al tratar de instalarla en otro pc, por más que haga un paquete de instalación con el "Asistente de empaqutado" , me da un error con los ocx del DataGrid. Por lo cual opté por cambiar el DataGrid por un Listview. El Listview se encuentra en un Form donde solo hay además de él un Textbox llamado TextBuscar. Mi intención es que al ir rellenando el texbox en el Listview se muestren las coincidencias. La sentencia que realice busca en una columna de un (.mdb) llamada "Nombres", tabla "Personas" y archivo "datos". Mi sentencia es la siguiente:

Public Sub RellenarLista()

Dim strVALOR_BuscarNombre As String
Dim Consulta01 As ADODB.Recordset
Dim li As ListItem

Set Consulta01 = New ADODB.Recordset

strVALOR_BuscarNombre = TextBuscar.Text

If TipoBusqueda = "Nombre" Then
Consulta01.Open "SELECT * FROM Personas WHERE Nombre like '%" & strVALOR_BuscarNombre & "%'", cnn, adOpenStatic, adLockReadOnly

Do Until Consulta01.EOF
Set li = ListView1.ListItems.Add(, , Consulta01("ID_Agenda"))
li.ListSubItems.Add , , Consulta01("Nombre")
li.ListSubItems.Add , , Consulta01("Domicilio")
li.ListSubItems.Add , , Consulta01("Num")
li.ListSubItems.Add , , Consulta01("Apto")
li.ListSubItems.Add , , Consulta01("Telefono")
li.ListSubItems.Add , , Consulta01("Celular")
li.ListSubItems.Add , , Consulta01("Departamento")
li.ListSubItems.Add , , Consulta01("Observaciones")

Consulta01.MovePrevious

Loop
End If
End Sub
Mi problema: Al digitar en el Textbox me muestra la coincidencia tantas veces como coincidencia de caracteres.
Ej:
Si digito juan en el textbox, me muestra en el listview:

juan
juan
juan
juan
julio
julio
justo
justo
josé
Espero puedan ayudarme, un abrazo a todos......
  #2 (permalink)  
Antiguo 16/05/2012, 10:17
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Buscar y mostrar resultados en Listview

Y si usas la consulta:
"SELECT DISTINCT * FROM Personas WHERE Nombre like '%" & strVALOR_BuscarNombre & "%'"
  #3 (permalink)  
Antiguo 17/05/2012, 06:41
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Buscar y mostrar resultados en Listview

Me da el mismo resultado que el SELECT solo.
  #4 (permalink)  
Antiguo 17/05/2012, 11:31
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Buscar y mostrar resultados en Listview

Confirma:
• Cambia el "Consulta01.MovePrevious" por "Consulta01.MoveNext"
• Que no estes llamando el Sub "RellenarLista" varias veces
• Que no tienes varios "Juanes" en la base de datos (Juan Pablo, Juan Perez, José Juan, etc.). El Distinct deberia traer los Distintos elementos de la Base de Datos...
  #5 (permalink)  
Antiguo 18/05/2012, 07:44
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Buscar y mostrar resultados en Listview

Te paso el codigo completo:

Desde aquí llamo al form
_________________________
Private Sub Buscar_Click(Index As Integer)
Call Buscar1
End Sub

Private Sub Buscar1()
With Form_Buscar
.TipoBusqueda = "Nombre"
.LblBuscarPor.Caption = "Buscar Usuario Por: Nombre"
.Caption = "Busqueda por Nombre"
.Show 1
End With
End Sub
______________________________
y este es el codigo completo del form (en el cual tengo solo el listview y con textbox)

Option Compare Text
Public TipoBusqueda As String

Private Sub Form_Load()
Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
Const sPathBase As String = "C:\Genexis\Datos.mdb"
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sPathBase & ";"
.Open
End With
End Sub

Public Sub RellenarLista()
Dim strVALOR_BuscarNombre As String
Dim Consulta01 As ADODB.Recordset
Dim li As ListItem
Set Consulta01 = New ADODB.Recordset
strVALOR_BuscarNombre = TextBuscar.Text
If TipoBusqueda = "Nombre" Then
Consulta01.Open "SELECT DISTINCT * FROM Personas WHERE Nombre like '%" & strVALOR_BuscarNombre & "%'", cnn, adOpenStatic, adLockReadOnly
Do Until Consulta01.EOF
Set li = ListView1.ListItems.Add(, , Consulta01("ID_Agenda"))
li.ListSubItems.Add , , Consulta01("Nombre")
li.ListSubItems.Add , , Consulta01("Domicilio")
li.ListSubItems.Add , , Consulta01("Num")
li.ListSubItems.Add , , Consulta01("Apto")
li.ListSubItems.Add , , Consulta01("Telefono")
li.ListSubItems.Add , , Consulta01("Celular")
li.ListSubItems.Add , , Consulta01("Departamento")
li.ListSubItems.Add , , Consulta01("Observaciones")
Consulta01.MoveNext
Loop
End If
End Sub

Private Sub TextBuscar_Change()
Call RellenarLista
End Sub

Private Sub TextBuscar_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc("'") Then KeyAscii = 0
End Sub

Private Sub Cerrar_Click()
Unload Me
End Sub
Me sigue dando el mismo problema. Como siempre gracias por tu preocupación y ayuda
  #6 (permalink)  
Antiguo 18/05/2012, 09:21
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Buscar y mostrar resultados en Listview

AAHH!! Debes de limpiar el ListView antes de cargarlo con los datos:

Código vb:
Ver original
  1. If Consulta01.EOF = False Then ListView1.ListItems.Clear

Aqui esta el codigo:
Código vb:
Ver original
  1. Public Sub RellenarLista()
  2.  
  3.     Dim strVALOR_BuscarNombre As String
  4.     Dim Consulta01 As ADODB.Recordset
  5.     Dim li As ListItem
  6.    
  7.     Set Consulta01 = New ADODB.Recordset
  8.     strVALOR_BuscarNombre = TextBuscar.Text
  9.    
  10.     If TipoBusqueda = "Nombre" Then
  11.         Consulta01.Open "SELECT DISTINCT * FROM Personas WHERE Nombre like '%" & strVALOR_BuscarNombre & "%'", cnn, adOpenStatic, adLockReadOnly
  12.        
  13.         If Consulta01.EOF = False Then lsvList.ListItems.Clear
  14.        
  15.         Do Until Consulta01.EOF
  16.             Set li = ListView1.ListItems.Add(, , Consulta01("ID_Agenda"))
  17.             li.ListSubItems.Add , , Consulta01("Nombre")
  18.             li.ListSubItems.Add , , Consulta01("Domicilio")
  19.             li.ListSubItems.Add , , Consulta01("Num")
  20.             li.ListSubItems.Add , , Consulta01("Apto")
  21.             li.ListSubItems.Add , , Consulta01("Telefono")
  22.             li.ListSubItems.Add , , Consulta01("Celular")
  23.             li.ListSubItems.Add , , Consulta01("Departamento")
  24.             li.ListSubItems.Add , , Consulta01("Observaciones")
  25.  
  26.             Consulta01.MoveNext
  27.         Loop
  28.     End If
  29. End Sub
  #7 (permalink)  
Antiguo 19/05/2012, 21:52
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Buscar y mostrar resultados en Listview

De más!!! Me funciono bárbaro, mil gracias Lokoman..... Siempre sos de gran ayuda
  #8 (permalink)  
Antiguo 21/05/2012, 06:16
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Buscar y mostrar resultados en Listview


Etiquetas: listview, select, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:42.