FoxPro/Visual FoxPro - No se donde esta el error...

 
Vista:

No se donde esta el error...

Publicado por Fermin (41 intervenciones) el 13/03/2004 19:22:05
Disculpen, tengo un Combo Box al que le he puesto el siguiente codigo :
Gr = THISFORM.Grid1
Do Case
Case this.value = "Todos"
select * from maecli into cursor clien
Gr.RecordSource = "clien"
Case this.value = "Naturales"
select * from maecli where maecli.tipo='1' into Cursor clien
Gr.RecordSource = "clien"
Case this.value = "Jurídicos"
select * from maecli where maecli.tipo='2' into Cursor clien
Gr.RecordSource = "clien"
Case this.value = "Activos"
select * from maecli where maecli.estado='01' into Cursor clien
Gr.RecordSource = "clien"
Case this.value = "Inactivos"
select * from maecli where maecli.estado='02' into Cursor clien
Gr.RecordSource = "clien"
Endcase
Gr.Refresh

Al ejecutarlo todo sale bien, pero si elijo la opcion NATURALES por ejemplo y vuelvo a elejir Todos, en la GRID todo sale distorsionado es como que creara otra GRID y la pusiera encima, la GRID solo tiene 3 columnas.

Donde esta el error o lo estoy haciendo mal?
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:No se donde esta el error...

Publicado por Roman Suazo (2723 intervenciones) el 13/03/2004 21:53:28
Yo te propongo otr opcion, algo asi:

Selec tablagrid
Do Case

Case this.value = "Todos"
set filter to

Case this.value = "Naturales"
set filter to maecli.tipo=1
.
.

go top
thisform.grid.refresh

etc

Es decir, filtrar la tabla con el SET FILTER, asi no tienes que estar construyendo y borrando cursores, solo tendrias que poner como fuente
del grid la tabla en cuestion. Con vistas esto se hace mas eficientemente pero tendrias que leer algo (en la ayuda del fox).
Checa bien el uso del SET FILTER

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:No se donde esta el error...

Publicado por saul (362 intervenciones) el 14/03/2004 03:04:11
hola ...

Yo creo que por mi parte te quedes con el selec .. (como me dice un amigo asi se aprente) pues el select es mucho meyor que el set filter pues el set filter se llena la tabla y se pone lentisimo..

ahora yo creo que tu error es el de refrescar el grid..

Has el grid programado como si fueras a crearlo completo por pasos y solo le refrescas las columnas, anchos, y altos y si tienen negritas o no y la cantidad de columnas que quieras greo que te saldra un poco mejor..
Otra opcion que ami me gusta mucho es tambien usar el SET KEY TO (velo en la ayuda) es para filtrar pero por medio de indexados..

Es mas rapido quel el set filter..

Chao y 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:No se donde esta el error...

Publicado por Roman Suazo (2723 intervenciones) el 14/03/2004 06:57:20
Como dije antes lo mejor son las vistas (tecnologia mas moderna y practica), si usas el cursor tendras dos achivos abiertos (menos memoria). Los cursores son recomendables para los reportes mas que todo. Ahora si usas los cursores el codigo se hace mas dificil de mantener y poco generico, aun mas tendrias que añadir codigo
extra si quieres que el cursor sea automatizable (dependiendo de la
version de fox que tengas). Con el set key ocupas indices, lo cual signifca que ocupas mas memoria (cuando hablamos de
indices, lo mejor es tener solo los necesarios, ya que asi el sistema
es mas rapido y mas facil de mantener)

Por cierto lo mejor es crear un metodo llamado ¨FiltrarTabla¨
y pones este codigo

lparameters lcExpresion, lcTablafiltrar

if used(lctablafiltrar)

selec (lcTablafiltrar)

if empty(lcExpresion)
set fitler to
else
set filter to eval(lcExpresion)
endif

go top

else

return .F.
endif

return .t.
***ha este codigo le hace falta mejorar un poco o puede tener errorsillos

y Desde el combo llamas el metodo asi

thisform.Filtratabla(´miexpresion´, ¨tablafiltrar¨)
thisform.grid.fresh

Insisto lo mejor son las vistas, el SET FILTER y SET KEY son viejos
y estan mas por compatibilidad.

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