Cómo puedo recorrer registros de una tabla nativa y mostrar sus datos solo si cumplen cierta condición????

719 views
Skip to first unread message

Wilzy G

unread,
Aug 3, 2019, 11:28:38 AM8/3/19
to Comunidad de Visual Foxpro en Español


Buenas, necesito ayuda.


Resulta que tengo una tabla que se llama:

factura_cliente (nro_factura, cod_cliente, total_factura, total_pagado, TIPO, etc)


En ella guardo 4 tipo de ventas (F, T, S, G), cada tipo de venta se realiza desde formularios diferentes, o sea, existen 4 formularios de ventas distintos, pero todas ellas guardan la venta en la tabla factura_cliente.


Factura pregunta grupo Fox.jpg

En cada formulario tengo los siguientes 4 botones (en recuadro rojo)

Botones adelante y atras.jpg

|< : Para desplazarme al principio de la tabla.

SELECT factura_cliente

GO TOP

skip -1

if bof()

   go top

   wait window "Esta en el principio de la Tabla" nowait

endif  

thisform.datos_factura()


<<: Para desplazarme 1 a 1 por los registros hacía la izquierda

select factura_cliente

skip -1

if bof()

   go top

   wait window "LLegó al inicio de la Tabla" nowait

endif  

thisform.datos_factura()


>>: Para desplazarme 1 a 1 por los registros hacía la derecha

select factura_cliente

skip

if eof()

   go bottom

   wait window "Llegó al final de la Tabla" nowait

endif  

thisform.datos_factura()

 

 

>|: Para desplazarme al final de los registros de la tabla.

select factura_cliente

go bottom

skip

if eof()

   go bottom

   wait window "Final de la Tabla" nowait

endif  

thisform.datos_factura()


Con estos códigos, por ejemplo si estoy en el formulario tipo T y me desplazo hacía la izquierda va pasando por los registros  1 a 1 y muestra los datos aunque NO sean del tipo T.

 

Cómo puedo lograr que estando en el formulario tipo T solo muestre los de su tipo?? Que vaya saltando de tipo T en tipo T.


Y así también si estoy en el formulario tipo F muestre solo los tipo F.



Tal vez podría cargar todos los de un mismo tipo en un cursor y recorrerlo, pero está en red, y mientras se recorre el cursor ya se podrían haber insertado varios nuevos registros del tipo en la tabla.





Luis suescún

unread,
Aug 3, 2019, 12:26:24 PM8/3/19
to publice...@googlegroups.com
Hola, eso te iba a decir, que lo hicieras todo en un mismo formulario le adicionaras un control list, con los tipos de factura para que se seleccione de acuerdo al tipo que se quiere recorrer y hacer una consulta a un cursor...
Pero ya que aclaras eso de nuevas inserciones puedes tener razón, pero tal vez no, porque igual cuando vuelvas y refresques el filtro te debería aparecer los nuevos registros ...

Igual todo lo que vas a hacer en un cursor lo puedes aplicar a la tabla original, pero ya la tabla filtrada si tiene muchos registros pierde rendimiento de desplazamiento....

Yo me orientaría por la opción del cursor...

Normal 0 21 false false false ES-PY X-NONE X-NONE <m:smallFrac

Hèctor Javier Yost

unread,
Aug 3, 2019, 12:37:14 PM8/3/19
to Comunidad de Visual Foxpro en Español
Buen día!, Yo crearía una vista con los filtros respectivos, y con un requery lo solucionarias,
Saludos!

Gabriel Araya Garcia

unread,
Aug 3, 2019, 2:05:33 PM8/3/19
to publice...@googlegroups.com
Creo que la solucion mas practica es con un SELECT, llenar un cursor con los del tipo deseado y con una grid reflejar dicho cursor. No se porque te complicas con los botoncitos "INICIO - SIGUIENTE - ATRAS - FINAL" etc, eso corresponde a tecnicas antiguas de desplique de informacion. Es el usuario quien debe desplazarse en la grid, Puedes poner en la misma ventana (formulario) cajas de busqueda o filtros, y ordenamientos ascendentes o descendentes en las cabeceras de columnas,..etc Ademas colocar un botoncito de refresco de datos. Así por detrás el cursor se vaciara y volvera a llenarse con los datos hasta ese instante preciso. Debes poner atencion como funciona el despliegue de informacion en los sistemas WEB.
Salu2 
 

El sáb., 3 ago. 2019 a las 12:37, Hèctor Javier Yost (<hjavi...@gmail.com>) escribió:
Buen día!, Yo crearía una vista con los filtros respectivos, y con un requery lo solucionarias,
Saludos!

--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/publicesvfoxpro/a5cb2256-ea9c-4ebd-96c9-31936f40d483%40googlegroups.com.


--
Gabriel Araya Garcia
GMI - Desarrollo de Sistemas Informáticos
99.7721.15.70

HernanCano

unread,
Aug 3, 2019, 2:42:30 PM8/3/19
to Comunidad de Visual Foxpro en Español
Gabriel:
Es la programación que conocen los aprendices y yo también.
Me parece que no soy el único.

Es lo que aprendimos muchos de nosotros que conocemos y nos gusta esta variante de los lenguajes xBase.

Mientras podamos usarlo, muy probablemente querremos hacerlo.

Evidentemente tú que conoces otras metodologías diferentes a los "botoncitos", puedes implementarlas. O ponerle ejemplos (adecuadamente completos) para que los analice en un momento adecuado.
Pero mientras en las mentes de algunos se necesiten resolver alguna cosa, éso pediremos.
----------------------

Amigo "wil":

Probablemente puedas usar una especie de combobox en el que tengas opciones "--vacío--,Tipo1,Tipo2,Tipo3, ...etc".

Y en algún método un case que mire cada opción y en cada case algo como

set filter to alltrim(TIPO)==alltrim(ValorDelComboBox)

Quizá para la opción 1 podría ser:

set filter to 

No cuentas cómo te va con estas recomendaciones que te hemos dado.

HernanCano

unread,
Aug 3, 2019, 2:45:52 PM8/3/19
to Comunidad de Visual Foxpro en Español
El amigo "wil" dijo:

>>> Cómo puedo lograr que estando en el formulario tipo T solo muestre los de su tipo?? Que vaya saltando de tipo T en tipo T.

>>> Y así también si estoy en el formulario tipo F muestre solo los tipo F.

Hernán dice:

Considero que en el init del formulario escribes algo como 

set filter to alltrim(TIPO)==alltrim(M.tTipo)

donce M.tTipo contiene el tipo que necesitas.

Wilzy G

unread,
Aug 3, 2019, 4:27:09 PM8/3/19
to Comunidad de Visual Foxpro en Español


Muchas gracias a todos.

Sí, en realidad esos botoncitos no tienen mucha utilidad, puesto que el formulario tiene luego un botón de busqueda para buscar un número específico de factura que corresponde a un determinado tipo, pero al cliente le gusta estos botoncitos, qué le vamos a hacer, a veces hay que darles el gusto $i $$$

Luis suescún

unread,
Aug 4, 2019, 3:43:48 PM8/4/19
to publice...@googlegroups.com
A mi me parece buena practica lo de los "botoncitos", porque talves aunque ahora este trabajando con tablas nativas(cosa que no aclaró) es posible que esté también trabajando con un servidor remoto y en este caso cargar una tabla de miles de registros, lo puede saturar.

saludos


Reply all
Reply to author
Forward
0 new messages