In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Sobre cFilter en un TDBBrowse

Foro público de Xailer en español
Responder
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Sobre cFilter en un TDBBrowse

Mensaje por ddupre »

Estimados,
Espero se encuentren todos bien.

Primero mi planteo:
Tengo un TEdit sobre el cual el operador puede digitar lo que desea buscar y en el evento onChar de dicho TEdit pongo esto:

METHOD Nombre1Char( oSender, nKey, nFlags ) CLASS TForm2

do case
case 47 <= nKey .and. nKey <= 57 // Números y /
::oDBBrwCtas:aCols[2]:cFilter := AllTrim(oSender:Value) + Upper(Chr(nKey))
case 65 <= nKey .and. nKey <= 90 // Letras mayúsculas
::oDBBrwCtas:aCols[2]:cFilter := AllTrim(oSender:Value) + Upper(Chr(nKey))
case 97 <= nKey .and. nKey <= 122 // Letras minúsculas
::oDBBrwCtas:aCols[2]:cFilter := AllTrim(oSender:Value) + Upper(Chr(nKey))
case nKey == 8 // Back Espace
::oDBBrwCtas:aCols[2]:cFilter := SubStr(AllTrim(oSender:Value),1,Len(AllTrim(oSender:Value))-1)
endcase

Si bien el filtrado se realiza perfectamente, lo que no logro hacer, es limpiar correctamente el filtro para poder realizar otra búsqueda.

He probado muchas opciones pero no siempre el filtro se limpia.

He puesto en el evento onEnter del TEdit y en varios lugares más esto: ::oDBBrwCtas:aCols[2]:cFilter := Nil pero, si bien el filtro se "limpia", (dado que el debugger así me lo muestra), el TDBBrowse, la Tabla asociada o "no se quien" a veces sigue filtrado.

Tambien he probado agregar cosas como estas que pongo a continación pero si bien el Browse se muestra sin filtro, igualmente el filtro anterior está en algún lugar, porque cuando el operador comienza a realizar otra búsqueda, la misma, parte desde el filtro anterior.

::oDBBrwCtas:aCols[2]:cFilter := Nil
Cuentas->(dbclearfil())
::oDBBrwCtas:Refresh(.T.)

Espero haberme hecho entender.

Y ahora mi consulta:
¿Cómo funciona y sobre qué actua realmente la propiedad cFilter?, ¿como se realiza una limpieza "total"?


Se agradece toda ayuda que me puedan brindar.

Saludos
Daniel
ftwein
Mensajes: 50
Registrado: Lun Oct 22, 2007 5:17 pm

Re: Sobre cFilter en un TDBBrowse

Mensaje por ftwein »

Hola.

Prueba con:

::oDBBrwCtas:aCols[2]:cFilter := ""

Saludos,

Fausto
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Sobre cFilter en un TDBBrowse

Mensaje por ddupre »

Fausto,
Lo he brobado pero lamentablemente sigue quedando filtrado (a veces)

Muchas gracias por la ayuda.
Saludos
Daniel
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Sobre cFilter en un TDBBrowse

Mensaje por ddupre »

Resuelto,
El problema se me daba en una situación en la que "limpiaba" el filtro del TDBBrowse luego de poner la propiedad lVisible := .F.

Saludos
Daniel
Responder