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

Buscar mientras escribo en un text

Estas en el tema de Buscar mientras escribo en un text en el foro de Visual Basic clásico en Foros del Web. Hola, estoy haciendo una Agende de telefonos y lo que quiero es escribir la primer letra y que salganm todos los nombres que empiezan con ...
  #1 (permalink)  
Antiguo 01/02/2009, 22:44
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Buscar mientras escribo en un text

Hola, estoy haciendo una Agende de telefonos y lo que quiero es escribir la primer letra y que salganm todos los nombres que empiezan con esa letra, escribo la segunda letra y que salgan todos los nombres que salgan con esas letras.. lo hice y funciona, los datos me lo muestra en un flexGrid, el tema es que no me borra los datos anteriores buscascados, como se puede hacer? aca les dejo el codigo y una foto de lo buscado..

En la foto primero busque on F y despues con M




Aca le dejo el codigo:

Código PHP:
"Select * from contactos where nombre_apellido like '%" Text2.Text "%'"
apertura.Open Xconectar
1
Do While Not apertura.EOF
  MSFlexGrid1
.Sort flexSortStringNoCaseAscending
  MSFlexGrid1
.TextMatrix(i0) = apertura!nombre_apellido
  MSFlexGrid1
.TextMatrix(i1) = apertura!domicilio
  MSFlexGrid1
.TextMatrix(i2) = apertura!tel_personal
  On Error Resume Next
  MSFlexGrid1
.TextMatrix(i3) = apertura!tel_comercial
  MSFlexGrid1
.TextMatrix(i4) = apertura!email
  MSFlexGrid1
.TextMatrix(i5) = apertura!cel
  MSFlexGrid1
.TextMatrix(i6) = apertura!comentarios


  i 
1
   apertura
.MoveNext
    Loop
    apertura
.Close
    Call cerrar 
  #2 (permalink)  
Antiguo 02/02/2009, 03:11
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Buscar mientras escribo en un text

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola, estoy haciendo una Agende de telefonos y lo que quiero es escribir la primer letra y que salganm todos los nombres que empiezan con esa letra, escribo la segunda letra y que salgan todos los nombres que salgan con esas letras.. lo hice y funciona, los datos me lo muestra en un flexGrid, el tema es que no me borra los datos anteriores buscascados, como se puede hacer? aca les dejo el codigo y una foto de lo buscado..
Hola, supongo que ése código está dentro del evento Change del TextBox.

Algunos comentarios:
El comodín de porcentaje (%) antes y después de la cadena a buscar, dá como resultado todas las palabras que contengan en cualquier parte lo escrito en el TextBox. Para que salgan los nombres que empiecen por esa letra, sólo se pone al final.

Cada vez que ejecutas la consulta tienes que asignar al Grid el número de filas igual al número de registros que devuelve el recordset.

La propiedad Sort del Grid la tienes que sacar del bucle (es mas, yo la pondría donde formateas el Grid).

Utilizar la instrucción "On Error Resume Next" es una mala práctica y puede dar resultados erroneos. Supongo que la pusiste ahí para que no dé error si algún campo es null. Eso lo puedes solventar concatenando el valor del campo con doble comilla.

En fin, yo dejaría el código así:

Código:
x = "Select * from contactos where nombre_apellido like '" & Text2.Text & "%'"
apertura.Open x, Conectar
MSFlexGrid1.Rows = apertura.RecordCount + 1
MSFlexGrid1.Sort = flexSortStringNoCaseAscending
i = 1
Do While Not apertura.EOF
    With MSFlexGrid1
        .TextMatrix(i, 0) = apertura!nombre_apellido
        .TextMatrix(i, 1) = apertura!domicilio
        .TextMatrix(i, 2) = apertura!tel_personal
        ' On Error Resume Next
        .TextMatrix(i, 3) = apertura!tel_comercial & ""
        .TextMatrix(i, 4) = apertura!email & ""
        .TextMatrix(i, 5) = apertura!cel & ""
        .TextMatrix(i, 6) = apertura!comentarios & ""
    End With
    i = i + 1
    apertura.MoveNext
Loop
Un saludo
  #3 (permalink)  
Antiguo 02/02/2009, 21:47
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Buscar mientras escribo en un text

Hola Avellaneda, gracias por contestar, mira pego el codigo y me sale el error " el subindice esta fuera del intervalo", he estado tratando de verdonde esta el problema pero con mi escasa informacion no lo encuentro, te dejo todo el codigo..

en un boton tengo el siguiente codigo :

Código PHP:
Call abrir
de 
"Select count(*) as ultimo from contactos"
apertura.Open deconectar
ultimo 
apertura!ultimo 1
apertura
.Close
    MSFlexGrid1
.FixedCols 0
    MSFlexGrid1
.Cols 8
    MSFlexGrid1
.FixedRows 0
    MSFlexGrid1
.Rows ultimo
    MSFlexGrid1
.ColWidth(0) = 1801
    MSFlexGrid1
.ColWidth(1) = 1301
    MSFlexGrid1
.ColWidth(2) = 1301
    MSFlexGrid1
.ColWidth(3) = 1101
    MSFlexGrid1
.ColWidth(4) = 1312
    MSFlexGrid1
.Font 8
    MSFlexGrid1
.TextMatrix(00) = "NOMBRE y APELLIDO"
    
MSFlexGrid1.TextMatrix(01) = "TEL PERSONAL"
    
On Error Resume Next
    MSFlexGrid1
.TextMatrix(02) = "TEL COMERCIAL "
    
MSFlexGrid1.TextMatrix(03) = "CELULAR"
    
MSFlexGrid1.TextMatrix(04) = "E-MAIL"
    
MSFlexGrid1.TextMatrix(05) = ""
    
MSFlexGrid1.TextMatrix(06) = ""
    
MSFlexGrid1.TextMatrix(07) = ""
    
Call cerrar 
que por ahora lo tengo en un boton.,.. mas adelante lo pondre donde corresponda... y en un "Private Sub Text2_Change()" tengo el codigo que diste..
Código PHP:
"Select * from contactos where nombre_apellido like '" Text2.Text "%'"
apertura.Open xConectar
MSFlexGrid1
.Rows apertura.RecordCount 1
MSFlexGrid1
.Sort flexSortStringNoCaseAscending
1
Do While Not apertura.EOF
    With MSFlexGrid1
        
.TextMatrix(i0) = apertura!nombre_apellido
        
.TextMatrix(i1) = apertura!domicilio
        
.TextMatrix(i2) = apertura!tel_personal
         On Error Resume Next
        
.TextMatrix(i3) = apertura!tel_comercial ""
        
.TextMatrix(i4) = apertura!email ""
        
.TextMatrix(i5) = apertura!cel ""
        
.TextMatrix(i6) = apertura!comentarios ""
    
End With
    i 
1
    apertura
.MoveNext
Loop 
y me sale ese error.. no se por donde seguir viendoY por ultimo ya avusando de tu confianza para que sirve esta sentencia? MSFlexGrid1.Sort = flexSortStringNoCaseAscendingSaludos Y muchisimas Gracias
  #4 (permalink)  
Antiguo 02/02/2009, 22:14
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: Buscar mientras escribo en un text

buenas, no te interesa ahcerlo con un lsitView ? queda mejor y funca de 10 !!!

decime y te doy una mano :)
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #5 (permalink)  
Antiguo 03/02/2009, 01:19
 
Fecha de Ingreso: febrero-2009
Ubicación: Villa Ocampo - Santa Fe
Mensajes: 100
Antigüedad: 15 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Buscar mientras escribo en un text

Hola como estas??, te sugiero una forma muy sencilla de resolver tu problema pero debo advertirte que te funcionará solo de acuerdo como tienes configurado tu visual:
debes declarar una variable tipo Recorset a la cual llamaremos Rs
luego debes hacer lo siguiente

private sub BuscoContactos()
Set Rs = New AdoDB.Recorset

CadenaSql = "Select * From Contactos Where '%" & me.txtbuscar & "%'
Rs.Open CadenaSql,"Aqui le Pasas la coneccion con la base de datos"


Antes que nada debes Utilizar el DataGrid o el MSHFlexGrid (si no lo tienes lo pùedes agregar en Componentes)

luego lo único que te queda es hacer lo siguente


Set Me.DataGrid1.DataSource = Rs

End Sub
y en el Evento Change del txt que vas a usar para buscar escribes el nombre del sub

Private sub TxtBuscar_Change
BuscoContactos
End Sub



si te da error Busca en las Referencias Microsoft Axtive X DataObjects 2.1 o 2.6 Agregala y funciona Seguro, Cualquier Duda me lo preguntas y te lo detallo mejor
Saludos
  #6 (permalink)  
Antiguo 03/02/2009, 02:07
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Buscar mientras escribo en un text

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola Avellaneda, gracias por contestar, mira pego el codigo y me sale el error " el subindice esta fuera del intervalo", he estado tratando de verdonde esta el problema pero con mi escasa informacion no lo encuentro, te dejo todo el codigo..

en un boton tengo el siguiente codigo :


que por ahora lo tengo en un boton.,.. mas adelante lo pondre donde corresponda... y en un "Private Sub Text2_Change()" tengo el codigo que diste..

y me sale ese error.. no se por donde seguir viendoY por ultimo ya avusando de tu confianza para que sirve esta sentencia? MSFlexGrid1.Sort = flexSortStringNoCaseAscendingSaludos Y muchisimas Gracias
Hola, creo que el problema es que tu recordset no tiene el cursor de lado cliente y por lo tanto la propiedad RecordCount devuelve -1

Una vez declarado el recordset (a continuación de de la instrucción Set apertura =... ) pon esta instrucción:

apertura.CursorLocation = adUseClient

La propiedad Sort sirve para ordenar el Grid, que en este caso podrías eliminarla y en la consulta hacer un ORDER BY [campo]. Por cierto, elimina la instrucción On Error.. (en el ejemplo la puse comentada para que vieras que no es necesaria).

  #7 (permalink)  
Antiguo 03/02/2009, 14:25
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Buscar mientras escribo en un text

Hola, lamentablemente me pierdo un poco al programar y se poco estoy empezando y hay cosas que no las tengo en clara..

Avellaneda, pego el codigo apertura.CursorLocation = adUseClient ,

y me sale un error que dice que "La operacion no esta permitida si el objeto esta abierto".. nose donde pegarla

no se por doinde seguir.. :(

Saludos a todos
fede
  #8 (permalink)  
Antiguo 03/02/2009, 14:29
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Buscar mientras escribo en un text

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola, lamentablemente me pierdo un poco al programar y se poco estoy empezando y hay cosas que no las tengo en clara..

Avellaneda, pego el codigo apertura.CursorLocation = adUseClient ,

y me sale un error que dice que "La operacion no esta permitida si el objeto esta abierto".. nose donde pegarla

no se por doinde seguir.. :(

Saludos a todos
fede
Una vez declarado el recordset (a continuación de de la instrucción Set apertura =... ) pon esta instrucción

Es decir, antes de abrir el recordset!

Saludos
  #9 (permalink)  
Antiguo 05/02/2009, 22:04
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Buscar mientras escribo en un text

Hola, muchas gracias por la ayuda, enserios que muchas gracias..!!!

Los efectos que hace mi programa no son los buscado por mi... ... pero bueno seguiremos insistiendo como siempre,,,

Cualquier cosa vuelvo a preguntar.

PD: si alguien conoce algun programita me dice donde bajarlo... gracias

Saludos a todos

Federico
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 00:15.