Page 1 of 1

Filtro y control browse

Posted: Fri Oct 01, 2021 7:39 pm
by mjaviergutierrez
Hola Colegas ! , espero que anden todos bien. Uds. saben que tengo que filtrar una tabla en un control browse , por un campo de descripción que contenga (con el operador $ ), hace dias que estoy renegando y no me dá bolilla, busque y no encontre un ejemplo claro del useo del control browse con un filtro. No uso nunca ese control, siempre uso el grid , pero no se porque en un proyecto use un browse hace un tiempo y ahora lo tengo que modificar, si alguien tiene a mano un ejemplo, se los agradecería. Muchas saludos !

Re: Filtro y control browse

Posted: Sat Oct 02, 2021 4:56 am
by andyglezl
Hola Javier, quizá esto...

dbUseArea( .T., "DBFNTX", "MAESTRO", "MAE", .T., .F. )
dbSetFilter( {|| 'Car' $ MAE->NOMBRE }, " 'Car' $ MAE->NOMBRE" )
dbGoTop()
@ 074,007 BROWSE BRW_MAE WIDTH 720 HEIGHT 300 WORKAREA "MAE"................
.
.
.
.
dbClearFilter()

Re: Filtro y control browse

Posted: Sat Oct 02, 2021 12:57 pm
by AUGE_OHR
hi,

SET FILTER can be take long Time when navigate in BROWSE ... depend on how it is (un)sort
when have a Index which work on same FIELD like FILTER than it is much faster

if use $ you can use OrdWildSeek() which need Index

Code: Select all

   DO WHILE ORDWILDSEEK("*"+ cSearch +"*",.T.)
      AADD( aFound, TEST->RECNO() } )
   ENDDO
   BROWSE()

Re: Filtro y control browse

Posted: Sat Oct 02, 2021 9:00 pm
by mjaviergutierrez
Gracias Andy, Jimmy !!! Solucionado, gracias. Saludos.

Re: Filtro y control browse

Posted: Sun Oct 03, 2021 5:01 pm
by franco
Hello,
I do this with temporary index. This works well on large tables.

Code: Select all

Private  ixorder , etemp    // AT START OF PROGRAM
* LATER IN PROGRAM
ixorder := indexord()
INDEX ON DESC TO TEMP FOR  cSearch $ DESC
BROWSE()
SET ORDER TO IXORDER
**** AFTER CLOSE TABLE
etemp:= 'temp.ntx'
close (your table)
ERASE (etemp)