Page 1 of 1

Filtrado general de un browse... (es posible con TSBROWSE)

PostPosted: Tue Mar 25, 2008 9:40 am
by Andrés González
Es posible realizar un filtrado general de todos los campos de un browse que cumplan una condición. A modo de ejemplo lo que realiza el iTunes de Apple. Que tienes una condición que busca en todos los campos y solo te muestra aquellos registros donde cualquiera de sus campos cumple la condición.

Generalmente esto debe realizarse en los campos de texto buscando una parte parcial de alguno de los campos, supongo que de manera similar a como lo realiza el comando AT()

Que browse debo utilizar...
Existe algún ejemplo
Es posible con el browse del Sr. Mercado.

PostPosted: Tue Mar 25, 2008 12:20 pm
by Marcelo Via Giglio
Hola,

se me ocurre que puedes hacer la busqueda y los regs. que cumplen l a condicion lo marcas a traves de un campo, y luego aplicas un filtro o un scope sobre el campo de marca y eso no dependera del browse que utilices.

solo una idea

saludos

Marcelo

PostPosted: Tue Mar 25, 2008 8:27 pm
by Armando
Andrés:

Otra posibilidad es que te apoyes en conocer cuantos campos de tipo character tiene el registro y despues hacer un filtro de esos campos, por ejempo:

cFiltro $ CampoCharacter1 .OR. cFiltro $ CampoCharacter2 .OR. etc etc

Tambien es solo una idea

Saludos

Re: Filtrado general de un browse... (es posible con TSBROWS

PostPosted: Wed Mar 26, 2008 3:42 pm
by mmercado
Hola Andrés:
Andrés González wrote:Es posible realizar un filtrado general de todos los campos de un browse que cumplan una condición. A modo de ejemplo lo que realiza el iTunes de Apple. Que tienes una condición que busca en todos los campos y solo te muestra aquellos registros donde cualquiera de sus campos cumple la condición.

Puedes probar esto, funcionará con cualquier tipo de campo:
Code: Select all  Expand view
   Set Filter To lEncuentra( cBusca )
     
Function lEncuentra( cBusca )
   
   Local cText := ""
   
   For nFld := 1 To FCount()
      cText += cValToChar( FieldGet( nFld ) )
   Next
   
Return cBusca $ cText

Andrés González wrote:Que browse debo utilizar...

Cualquiera.

Andrés González wrote:Es posible con el browse del Sr. Mercado

También, ya que los filtros son aplicables a cualquier browse. En el caso de TSBrowse, también podrías usarlo como argumento de búsqueda para encontrar datos en los registros mostrados en una base de datos no filtrada usando oBrw:ExpLocate( lEncuentra( cBusca ) )

Saludos.

Manuel Mercado

PostPosted: Wed Mar 26, 2008 9:06 pm
by Andrés González
Gracias, Marcelo, Armando y sobre todo a D. Manuel. La verdad tengo entendido que el set filter provoca problemas de lentitud pero en mi caso tampoco es muy importante ya que la base de datos que pretendo utilizar es muy dinámica y no suele contener muchos registros. había pensado en una solución similar a la propuesta por Armando pero la idea del sr. Mecado es muy elegante.