FoxPro/Visual FoxPro - VFP MOSTRAR 3 GRID EN UN MISMO FORMULARIO

 
Vista:
Imágen de perfil de daniel
Val: 33
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

VFP MOSTRAR 3 GRID EN UN MISMO FORMULARIO

Publicado por daniel (21 intervenciones) el 08/07/2017 21:47:00
PARA LOS TROMES
Necesito poder visualizar en un mismo formulario 3 Grids con datos de una misma tabla pero que en cada grid me muestre solo datos que cumplan la condición pendientes de pago, en otro grid los que cumplan la condición pagados, y otro grid me muestre los datos que cumplan la condición x y que estos datos se muetren en el inicio del formulario sin necesidad de estar aplicanto un filtro

Desde ya un agradecimiento a los que puedan apoyarme con mi consulta
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

VFP MOSTRAR 3 GRID EN UN MISMO FORMULARIO

Publicado por Fidel José (657 intervenciones) el 09/07/2017 14:38:02
Hola Daniel
Si bien hay soluciones que trae la misma interfaz del control grid (LinkMaster, ChildOrder, ControlSource) lo único sensato que hay es armar tres cursores con sus respectivas consultas.

(Para operar con Linkmaster y ChildOrder es necesario abir la tabla tantas veces como se necesite, dependiendo del SET RELATION implícito del ChildOrder, con sendos alias, de tal modo que cualquier otro movimiento del sistema no altere el SET ORDER de la tabla LinkMaster. Si la tabla base tiene muchos datos, el movimiento por los controles grid será tortuoso.)

Estrategia de tres cursores.
Para mostrar el formulario al inicio, en este tipo de escenarios, la estrategia pasa por crear los tres cursores en el LOAD del form.
USE Tabla IN 0 SHARED
SELECT * FROM TABLA WHERE .F. INTO CURSOR1 READWRITE
SELECT * FROM TABLA WHERE .F. INTO CURSOR2 READWRITE
SELECT * FROM TABLA WHERE .F. INTO CURSOR3 READWRITE

En el init del form apuntas a los métodos de configuración de los tres controles grid que quedarán siempre asociados a esos cursores.

Luego, tienes que crear un método en el form que pueda crear las tres consultas necesarias, o tres métodos, uno para cada consulta según te convenga.
Por ejemplo, si el campo Pagado es un boolean y además necesitas la información por fecha:
SELECT * FROM TABLA WHERE PAGADO AND FECHA BETWEEN ldDia1 AND ldDia2 ORDER BY FECHA INTO CURSOR curPagado
SELECT CURSOR2
APPEND FROM DBF("curPagado")
Thisform.grid2.refresh
USE IN curPagado

SELECT * FROM TABLA WHERE NOT PAGADO AND FECHA BETWEEN ldDia1 AND ldDia2 ORDER BY FECHA INTO CURSOR curPagado
SELECT CURSOR3
APPEND FROM DBF("curPagado")
Thisform.grid3.refresh
USE IN curPagado

Nota
Si el ejemplo fuera cierto, lo conveniente para acelerar las consultas sería tener en la tabla, dos índices:
INDEX ON PAGADO TAG iPagado
INDEX ON FECHA TAG iFecha
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