FoxPro/Visual FoxPro - PROBLEMAS CON EL SET FILTER

   
Vista:

PROBLEMAS CON EL SET FILTER

Publicado por @nDy (11 intervenciones) el 19/04/2013 21:18:44
Ante todo gracias por la ayuda, ahi va mi problema:
pues en un form tengo un grid, combobox, un botton y una base de datos ALLCLIEN (contiene turno:1,2 /codigo/nombredelclien/estado: "activo e inactivo"
lo que deseo es que con el combobox luego de seleccionar el turno solo me paresca la relacion de clientes con el turno seleccionado y que esten activos ("A") luego de presionar el botton, la codificacion que uso es :

Set filter TO ALLCLIEN.TURNO = thisform.combo1.value where allclien.estado="A"
thisform.grid1.refresh()

y el problema q tiene esta codificacion es que me repite la lista varias veces
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

PROBLEMAS CON EL SET FILTER

Publicado por Fidel (558 intervenciones) el 20/04/2013 01:01:18
Podría ser
select allclien
SET FILTER TO TURNO=THISFORM.Combo1.Value .AND. ESTADO="A"
go top
THISFORM.GRID1.REFRESH

De todos modos el uso de SET FILTER es poco recomendable sobre todo si trabajas en red (con la excepción de tablas relativamente cortas y en lo posible basándose en un campo lógico). Lo puedes usar con tranquilidad en tablas temporales y locales.

1) Si el cliente puede estar activo ó inactivo (boolean) por qué no usar un campo lógico?
2) En general, usa SELECT-SQL en lugar de SET FILTER

SELECT * FROM ALLCLIEN WHERE TURNO=thisform.Combo1.Value AND ESTADO="A" ;
INTO CURSOR MyCursor
Thisform.grilla.RecordSource="MyCursor"
Thisform.grilla.refresh


Para evitar el problema de religar el GRid con la aparición de un fastidioso blanco, puedes hacer, una vez que abres la tabla AllClien, un cursor vacío basado en la tabla:
Select * from AllClien into cursor gClien where .F. READWRITE && crea un cursor en blanco con la estructura de la tabla

Creas la asociación del grid con el cursor gClien
Thisform.Grid.REcordSource='gClien'
... Etc

Luego cuando solicitas los datos:
IF USED("MYCURSOR")
SELECT MYCURSOR
USE
ENDIF
SELECT * FROM ALLCLIEN WHERE TURNO=thisform.Combo1.Value AND ESTADO="A" ;
INTO CURSOR MyCursor
select gClien
ZAP
append from DBF("MyCursor")
go top
thisform.grid1.refresh
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

PROBLEMAS CON EL SET FILTER

Publicado por @nDy (11 intervenciones) el 20/04/2013 17:23:06
ok FIDEL muchas gracias pondre en practica lo que me recomiendas, se le agradece
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