FoxPro/Visual FoxPro - Filtrar Campos mientras se va digitando

 
Vista:
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Jesus (121 intervenciones) el 19/05/2015 06:11:40
Estimados Amigos
Buenas de nuevo molestando esta vez necesito q a travez de un Cuadro de Texto ir digitando
caractrer por caracter el nombre de una persona y q se vaya mostrando en un Cuadro Combinado
o de Lista o en Grid los nombres de las persona q se asemejen y al seleccionar el dato de la persona
deseada me devuelva sus otros datos adicionales.

Si escribo "A" deberia filtrar en el Combo o Grid

Alvarez Perez
Alvarez Sanchez
Abanto castro
Abencia meza

Si escribo "Ab" deberia filtrar en el Combo o Grid
Abanto castro
Abencia meza


De antemano Mil Gracias por tu paciencia

Atentamente,

Jesus
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Fidel José (558 intervenciones) el 19/05/2015 15:51:45
Puedes tener una rutina (expongo un planteo sencillo) como la que sigue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PROCEDURE BUS_INC
LPARAMETERS tcTabla,tcWhere,tcListaCampos,tcCursor
tcListaCampos=EVL(tcListaCampos,"*")
tcCursor = EVL(tcCursor,"curResp")
LOCAL lcSelect
 
TEXT TO lcSelect TEXTMERGE NOSHOW PRETEXT 15
SELECT <<tcListaCampos>>
FROM <<tcTabla>>
WHERE <<tcWhere>>
INTO CURSOR <<tcCursor>>
ENDTEXT
 
&lcSelect
 
RETURN tcCursor

Luego, en el InteractiveChange del TextBox
1
2
3
4
5
6
7
8
lcTabla="Clientes"
lcLista = "Nombre,Cuit,idclien"
* lcTabla , lcLista  pueden ser propiedades de una clase basada en Textbox
lcWhere = "NOMBRE="+CHR(39)+ALLTRIM(this.Value)+CHR(39)
 
lcCursor = businc( lcTabla , lcWhere , lcLista )
SELECT (lcCursor)
BROWSE         && en la aplicación, el cursor obtenido rellenará un grid o un Listbox o un Combobox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Filtrar Campos mientras se va digitando

Publicado por [email protected] (31 intervenciones) el 20/05/2015 14:59:51
lo resolvi, en el interactivechange del texbox le puse esto

SET EXACT OFF
SET NEAR OFF

SELECT TABLACLIENTES
SET ORDER TO INDNYA

GO TOP
ThisForm.gridBusNomPro.SetFocus
ThisForm.busca.SetFocus
THISFORM.REFRESH

y en el lostfocus estos

VCLAV=ALLTRIM(ThisForm.Busca.Value)
SET FILTER TO VCLAV$NYA

y listo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Fidel José (558 intervenciones) el 20/05/2015 15:24:19
Con una tabla de 100.000 registros en una LAN, tu código puede tardar 10 o más segundos por cada letra que tipeas.
SET FILTER es un comando tan cómodo como ineficiente.
Incluso, para dejar ese código y no encontrarte con que la variable se salió de alcance, necesitas poner VCLAV como PUBLIC VCLAV, o mucho, mejor, crea una propiedad del formulario que tenga el código de filtrado.
El comando SET FILTER se puede utilizar para cursores o tablas locales. Con tablas en red, debe evitarse totalmente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Jesus (121 intervenciones) el 21/05/2015 18:20:54
Tienes Razon Fidel con Filter se pone lenta la busqueda Mil Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar Campos mientras se va digitando

Publicado por [email protected] (31 intervenciones) el 21/05/2015 20:02:40
Si Si, lo uso en una tabla en red, pero tiene 5000 registro nada más
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar Campos mientras se va digitando

Publicado por [email protected] (31 intervenciones) el 21/05/2015 20:51:52
Fidel, con select, como sale ?? no lo he probado, como funciona asi no lo toque, pero quizas vos ya lo hiciste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Fidel José (558 intervenciones) el 22/05/2015 01:42:39
Fernando:
Hay otras formas de hacer lo mismo, que en algunas circunstancias son más eficientes que el SELECT - SQL para tablas nativas. Estas se basan en archivos indexados por el campo de búsqueda y se puede apoyar en un cursor o en un array según se ve la conveniencia.

El problema es que encontrar una solución general es harto tedioso. Entonces puedes recurrir a soluciones específicas, que solo sirven para el caso. También la solución por SELECT - SQL tiene otra perspectiva: si quieres mudarte a una base de datos (SQL SERVER, MariaDB o la que fuere) tendrás menos adecuaciones en un futuro.

Con SELECT SQL no necesitas preocuparte por encontrar las etiquetas de índice. Si tienes definido el path, ni siquiera debes preocuparte por abrir la tabla (aunque si de cerrarla). Lo que si merece un estudio detenido, es la conveniencia de que se produzcan búsquedas por cada tecla, o si es mejor tener un botón de "Buscar" junto al textbox. La solución depende un poco del tamaño de la tabla. Para una tabla de 200000 clientes, buscar para cada letra que se cambie en el textbox puede resultar un tanto pesado. En ese caso, hay que pensar en dejar que el usuario escriba algunas letras y decida cuándo buscar.

Mientras tanto, para las DBF me parece mejor recurso crear un formulario (generalmente modal) donde se generalicen las búsquedas y no una solución para cada problema que aparece.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Filtrar Campos mientras se va digitando

Publicado por [email protected] (31 intervenciones) el 22/05/2015 19:16:40
Clarisimo, muchas gracias Fidel.
Estas haciendo algo con el tema factura electronica ??
Ando medio perdido y me queda 1 mes para hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Filtrar Campos mientras se va digitando

Publicado por Fidel José (558 intervenciones) el 23/05/2015 01:20:52
Si, ya desde agosto 2014 tengo clientes con factura electrónica.
No me compliqué la vida: Para todo el tema de conexión, obtener el Cae y generar la factura en PDF utilizo el software de http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs.
Cada cliente paga su licencia de $ 2250 + iva (el último precio que tengo). Tienen un foro bastante concurrido y muy buena respuesta por mail para los licenciados.
Necesitás un buen manejador de errores (TRY / CATCH / FINALLY / ENDTRY). Los ejemplos son un poco anticuados, pero con un poco de trabajo lo sacás.
Podés bajarte el instalador para pruebas. En la página tenés todas las instrucciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar