Hola.
Quisiera saber si es posible ocultar filas de un browse basándose en una condición y cómo tendría que hacerlo.
Gracias por adelantado.
Fernando
Las Palmas de Gran Canaria
Hola.
Quisiera saber si es posible ocultar filas de un browse basándose en una condición y cómo tendría que hacerlo.
Gracias por adelantado.
Que tal, yo para ocultar una columna lo tengo así :
oBrow:aCols[01]:Hide()
ya con algunos if o case, podrías ocultar algunas columnas
Espero y te sirva.
Con que estas alimentando el xbrowse, array, dbf, ado, mysq..? ya que dependiendo de que, podrias usar condicional al crean por ejemplo en mysql el qry, y mostraria las filas que cumplan la condicion que quieras. saludos... ![]()
VitalJavier wrote:Que tal, yo para ocultar una columna lo tengo así :
oBrow:aCols[01]:Hide()
ya con algunos if o case, podrías ocultar algunas columnas
Espero y te sirva.
jejejeje tienes razón, son filas y no culumnas
Hola.
Lo he resuelto creando un índice temporal. Aquí dejo el código por si a alguien le es útil. Sobre un archivo con 25.000 registros ha ido como una moto.
El díalogo: un browse y una casilla de búsqueda.
El archivo: "CLIENTES".
El TAG: "CLIENTES"
El índice: "NOMBRE"
La búsqueda: sobre el campo "NOMBRE".
-----------------------
Function ConsCltes(nCod)
-----------------------
local oDlg, oBrw, oCadena
local cCadena := space(40)
local fFile1
local lFiltro := .f.
---------------------------------------------------------------------------
if ! OpenDbf("CLIENTES", {"CLIENTES"}, (fFile1 := GetNewAlias()), .T.) ; return NIL ; end if
(fFile1)->(ordSetFocus("NOMBRE"))
---------------------------------------------------------------------------
DEFINE DIALOG oDlg RESOURCE "DLG_BUSQUEDA" TITLE "Buscar"
*------------------------------------------------
REDEFINE XBROWSE oBrw ID 101 OF oDlg ALIAS (fFile1) ;
FIELDS (fFile1)->CODIGO, ota((fFile1)->NOMBRE) ;
HEADERS ota("Código"), "Nombre" ;
SIZES 64, 800 ;
ON DBLCLICK (nCod := (fFile1)->CODIGO, oDlg:End())
oBrw:bKeyDown := {|nKey, nFlags| if(nKey == VK_F12, ShowColSizes(oBrw), NIL),;
If(nKey == VK_RETURN, (nCod := (fFile1)->CODIGO, oDlg:End()), NIL)}
#include "xbrw.ch"
*------------------------------------------------
REDEFINE GET oCadena VAR cCadena ID 102 OF oDlg ;
VALID EVAL ({|| if(empty(cCadena), (oBrw:SetFocus(), .t.),;
((fFile1)->(ordCondSet("at(rtrim(cCadena), (fFile1)->NOMBRE) > 0", {|| at(rtrim(cCadena), (fFile1)->NOMBRE) > 0},,,,, RECNO(),,,,)),;
(fFile1)->(ordCreate(, "FILTRO", "(fFile1)->NOMBRE", {|| (fFile1)->NOMBRE},)),;
(fFile1)->(ordSetFocus("FILTRO")),;
(fFile1)->(dbGoTop()),;
oBrw:refresh(), oBrw:SetFocus(), lFiltro := .t., .T.))})
ACTIVATE DIALOG oDlg CENTERED ON PAINT (oBrw:goTop(), oCadena:SetFocus()) ;
VALID (if(lFiltro, (fFile1)->(ordDestroy("FILTRO")), NIL),;
.t.)
(fFile1)->(dbCloseArea())
return NIL
Fernando; solo de curioso
Probaste el filtro en una red?. Como responde?
gracias
Hola.
Falta probarlo en red, aunque precisamente ese era el problema, que estaba usando dbSetFilter() y se ralentizaba a veces bastante. Espero que funcione bien y mejor; mantendré informado en cuanto lo haya instalado en el usuario.