Sobre cFilter en un TDBBrowse
Publicado: Mié May 27, 2020 8:20 pm
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
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