FoxPro/Visual FoxPro - filtrar tabla

   
Vista:

filtrar tabla

Publicado por marina (38 intervenciones) el 08/04/2009 21:06:30
hola amigos: estoy haciendo esto
select cta && selecciono una tabla
set order to 1
go top
scan
select codcliente, fecha, comp, debe, from ctacte where (codcliente) ==(thisform.text1.value) into cursor temp_cta && comparo si esta ese cliente con lo q coloq en el text
select temp_ctacte
set filter to thisform.text13.value = temp_cta.fecha && luego quiero filtrarlo a la vez por una fecha q yo deseo
go top
thisform.grdcuentacorriente.recordsource = "temp_cta"
thisform.grdcuentacorriente.column1.controlsource="temp_cta.codcliente"
thisform.grdcuentacorriente.column2.controlsource="temp_cta.fecha"
thisform.grdcuentacorriente.column3.controlsource="temp_cta.comp"
thisform.grdcuentacorriente.column5.controlsource="temp_cta.debe"
thisform.grdcuentacorriente.refresh
endscan
set filter to
thisform.refresh
me funciona bien porq yo filtro la tabla cta por cliente primero, y luego pongo una fecha y me la carga en una grilla sin problema, pero cuando quiero ver la tabla cursor(temp_cta) no me la filtro y me muestra este mensaje
el objeto no esta contenido en un form
¿como hago para q me deje filtrada la tabla temp_cta? gracias amigos
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:filtrar tabla

Publicado por sergio (697 intervenciones) el 08/04/2009 22:44:58
Por lo que veo es algo confuso lo que estas haciendo
dentro de un scan recorres un cursor y ejecutas un select por un cliente,pregunta cuando cambias el cliente si esta en una caja de texto, por lo que yo se una vez que entraste al scan tenes que terminar este ciclo ??
despues llenas el grid cada vez que cambias de registro ??
Eso tambien es otro error
la griila llenala cuando salis del scan me parece
La bverdad quie no entiendo bien lo que queres hacer, espro haberte dado una ayuda con lo qu ete comente
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

RE:filtrar tabla

Publicado por es_binario (757 intervenciones) el 09/04/2009 02:29:28
Lamentablemente esta muy mal tu codigo... sin embargo una solucion sencilla seria que en vez de usar un filtro... hicieras una segunda consulta sobre el cursor.

por ejemplo tienes la tabla ctacte *// que es la tabla cuentas del cliente... para saber si el cliente existe en esa tabla tu primer consulta es correcta.

select codcliente, fecha, comp, debe;
from ctacte ;
where codcliente == thisform.text1.value;
into cursor temp_cta

*// nada mas le agregaria las siguientes lineas para saber si existe de lo contrario
*// que mande un mensage

Select temp_cta
IF RECCOUNT() > 0 && Existe un cliente
ELSE
&& no se encuentra el cliente
MESSAGEBOX("El cliente no tiene cuentas")
RETURN
ENDIF

*// ahora quieres filtrar los datoos a partir de una fecha
*// que contiene el Text3
*// eso se solucionaria agregandole una clausala al select
*// anterio que diga and fecha = Thisform.Text3.value

*// la siguente line with para evitar escribir mucho codigo
WITH thisform.grdcuentacorriente
*// la siguente linea para evitar que se distorcione mi grid
.recordsource = ""
*// pero are un segundo cursor con la fecha
SELECT * FROM temp_cta;
WHERE fecha = Thisform.Text3.value;
INTO CURSOR temp_cta_filtrada
*// y lo pongo en la grilla
.recordsource = "temp_cta_filtrada"
.refresh()
ENDWITH

Saludos!
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

RE:filtrar tabla

Publicado por Gabriel Sánchez (112 intervenciones) el 09/04/2009 02:52:10
select temp_ctacte
set filter to thisform.text13.value = temp_cta.fecha && luego quiero filtrarlo a la vez por una fecha q yo deseo

Hola puedes hacerlo de la siguiente manera:

lcFecha = '"'+dtoc(Thisform.text13.Value)+"'"

&& Luego
select temp_ctacte
set filter to temp_cta.fecha = &lcFecha

Bueno espero te sirva.

PD. Lo que sucede es que al hacer el set filter, el cursor queda de alguna manera relacionado con el objeto text13 es por ello q al estar el cursor fuera del formulario te emite ese mensaje.

Suerte.
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

RE:filtrar tabla

Publicado por ANDRES CORTEZ M (162 intervenciones) el 09/04/2009 11:39:29
HOLA MARINA

haber por lo que te leo en

thisform.text1.value = ingresa al cliente

thisform.text13.value = ingresa fecha

yo no usaria el filter ejemplo

select codcliente, fecha, comp, debe, from ctacte where (codcliente) ==(thisform.text1.value) .and. thisform.text13.value =fecha into cursor temp_cta &&

select temp_ctacte
go top
thisform.grdcuentacorriente.recordsource = "temp_cta"
thisform.grdcuentacorriente.column1.controlsource="temp_cta.codcliente"
thisform.grdcuentacorriente.column2.controlsource="temp_cta.fecha"
thisform.grdcuentacorriente.column3.controlsource="temp_cta.comp"
thisform.grdcuentacorriente.column5.controlsource="temp_cta.debe"
thisform.grdcuentacorriente.refresh

thisform.refresh

otra forma ahora si quieres validar el cliente------------------------

select temp_ctacte
go top
if bof()
return && o mensaje no existe cliente o fecha
end
thisform.grdcuentacorriente.recordsource = "temp_cta"
thisform.grdcuentacorriente.column1.controlsource="temp_cta.codcliente"
thisform.grdcuentacorriente.column2.controlsource="temp_cta.fecha"
thisform.grdcuentacorriente.column3.controlsource="temp_cta.comp"
thisform.grdcuentacorriente.column5.controlsource="temp_cta.debe"
thisform.grdcuentacorriente.refresh

thisform.refresh

espero te sirva

ACM
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