FoxPro/Visual FoxPro - flitrar tabla

 
Vista:

flitrar tabla

Publicado por mauriico (9 intervenciones) el 12/06/2009 01:35:13
necesito esta ayuda por favor, estoy filtrando una tabla de cuenta corriente
por ej.: quiero ver del cliente 21 toda la deuda

aca funciona bien pero quisiera verlo ordenado por la fecha de las factura
yo tengo esto

select ctacte
set order to 1 * 1 && la ordeno por el cliente, si no lo hago asi no funciona
go top
scan
selec ctacte && selecciono la tabla
select codcliente, fecha, comp, referencias, debe, saldo from ctacte where (codcliente) ==(thisform.text1.value) into cursor temp_ctacte
select temp_ctacte && genero una tabla temporal
go top
thisform.grdcuentacorriente.recordsource = "temp_ctacte"
&& le devuelvo los datos a una grilla
thisform.grdcuentacorriente.column1.controlsource="temp_ctacte.codcliente"
thisform.grdcuentacorriente.column2.controlsource="temp_ctacte.fecha"
thisform.grdcuentacorriente.column3.controlsource="temp_ctacte.comp"
thisform.grdcuentacorriente.column4.controlsource="temp_ctacte.referencias"
thisform.grdcuentacorriente.column5.controlsource="temp_ctacte.debe"
thisform.grdcuentacorriente.column6.controlsource="temp_ctacte.saldo"
thisform.grdcuentacorriente.refresh
endscan

bueno esto funciona sin problemas lo q sucede es q tengo los reg desordenados y si quiero ordenarlos por fecha, donde esta el asteriso me modifica todo y no anda bien
¿ q Puedo hacer para seguir viendolos pero ordenados por fecha? gracias
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

RE:flitrar tabla

Publicado por Pablo (argentina) (433 intervenciones) el 12/06/2009 02:45:00
A ver amigo, yo estuve renegando bastante este ultimo tiempo con eso y algo aprendi, sino busca griila en el buscador de aca y vas a ver varios ejemplos.

Pero por lo que vi te estas enredadndo demasiado con algo que creo que no deberias, yo te paso como lo haria, no se si funcionara probalo y me avisas sino funciono lo pruebo y te paso el codigo bien hecho

No entiendo para que generas otra tabla temporal, si vos con el selec ya podes hacer todo de una sola vez y lo volves a mostrar el el grdcuentacorriente o sea creo que todo el codigo que escribis abajo para volver los datos a la grilla no irian

Pone en el INIT del form

thisform.grdcuentacorriente.recordsource = ""
selec ctacte && selecciono la tabla
select codcliente, fecha, comp, referencias, debe, saldo from ctacte where (codcliente) ==(thisform.text1.value) into cursor temp_ctacte order by fecha
go top
thisform.grdcuentacorriente.recordsource = "temp_ctacte"
thisform.grdcuentacorriente.refresh

solamente con esto te deberia andar, saca el set filter, el scan y todo eso, proba con el codigo que te pase
Porque te lo digo asi, porque en el grdcuentacorriente.recordsource = "" lo que hace es mantenerte las columnas como vos las diseñantes y lo pierdan su dimension cada vez que haces una consulta.
Despues con el select codcliente, fecha, etc, ect, ya esta haciendo todo, filtras por codigo de cliente, lo insertas en el cursor temp_ctacte y ordenados por fecha, ¿me explico?
despues los que haces es llamar de nuevo al grdcuentacorriente con los datos del cursor "temp_ctacte" o sea que no necesitas esa otra tablas, porque ahi ya estan mostrando los datos del cliente ej. 21 ordenados por fecha con todos sus datos. y por ultimo refresco el grid.

Te tendria que funcionar, probalo a ver que hace y sino me avisas y busco bien el codigo como iria y te lo paso nuevamente o fijate sino como te dije en la 2 o 3 o 4 pagina de este foro que hay varias consultas mias sobre grilla con el codigo escrito con lo que vos necesitas,

Suerte y avisame!!!!!!!!!!

Pablo
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