Página 1 de 1

Como usar Filtro no Browse???

Enviado: 20 Mai 2008 21:08
por Cezar
Boa noite,

Para filtrar no Tbrowse eu mantinha um indice pela ordem desejada e usava:

Estoque->( OrdSetFocus("I01") )
Estoque->( DbSeek(cCodCli)) // acha o primeiro
bFilter := {|x| Estoque->CodCli # cCodCli }

oBrowse:SkipBlock={|nSkip| dbSkipBlockFilter( nSkip, oBrowse, bFilter ) }

No codigo abaixo esta me dando erro quando clico com o mouse no
Scroll para descer ou PageDown, etc..
Pode-se ver na listagem do erro que esta em loop ( linha 2149).
As vezes mostra a mensagem "Muitas chamadas recursivas no controle de Errros"

O codigo abaixo foi baseado no exemplo \hwgui\samples\browsefilter.prg que tambem dá os mesmos erros.

Qual a mameira correta de se usar o filtro no HwGui??

Grato,
v_cez@...


Listagem do codigo e o erro gerado:

INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitle ;
AT 3,32 SIZE 780,360 FONT oFontDlg ;
STYLE DS_CENTER+WS_VISIBLE+WS_POPUP+WS_VISIBLE+WS_CAPTION+WS_SYSMENU

SELECT Estoque
Estoque->( OrdSetFocus('I01') )

@ 005,005 BROWSE oBrowse DATABASE OF oDlg ;
SIZE 770,300 FONT oFontBrw ;
STYLE WS_VSCROLL + WS_HSCROLL ;
FIRST {|| Estoque->(DbSeek( cCodCli )) } ;
WHILE {|| Estoque->CodCli == cCodCli } ;
FOR {|| Estoque->CodCli == cCodCli } ;
ON KEYDOWN {|o,Key| Brw_Key(o,Key,oBtn1) } ;
ON CLICK {|o,Key| Brow_Key(o,Key,oBtn1) }

oBrowse:nLastRecordFilter := 0
oBrowse:nFirstRecordFilter := 0
oBrowse:Alias := "Estoque"
oBrowse:lEsc := .T.
oBrowse:Refresh(.T.)

/// erro gerado ///

Error BASE/1004 Class: 'NIL' has no exported method:
NFIRSTRECORDFILTER
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ERRORPREVIEW(154)
Called from ->DEFERROR(79)
Called from errorsys.prg->(b)ERRORSYS(20)
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ERRORPREVIEW(154)
Called from ->DEFERROR(79)
Called from errorsys.prg->(b)ERRORSYS(20)
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ERRORPREVIEW(154)
Called from ->DEFERROR(79)
Called from errorsys.prg->(b)ERRORSYS(20)
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ERRORPREVIEW(154)
Called from ->DEFERROR(79)
Called from errorsys.prg->(b)ERRORSYS(20)
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ERRORPREVIEW(154)
Called from ->DEFERROR(79)
Called from errorsys.prg->(b)ERRORSYS(20)
Called from ->NFIRSTRECORDFILTER(0)
Called from ->FLTGOTOP(2149)
Called from hbrowse.prg->(b)HBROWSE:INITBRW(618)
Called from hbrowse.prg->VSCROLLPOS(2024)
Called from hbrowse.prg->HBROWSE:LINEDOWN(1357)
Called from hbrowse.prg->HBROWSE:DOVSCROLL(1215)
Called from hbrowse.prg->HBROWSE:ONEVENT(304)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from ->ESTOQ(275)
Called from PRG100.PRG->(b)PRG100(58)
Called from hdialog.prg->DLGCOMMAND(341)
Called from hdialog.prg->(b)(_INITSTATICS00003)(0)
Called from hdialog.prg->HDIALOG:ONEVENT(192)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from PRG100.PRG->PRG100(72)
Called from PRG001.prg->(b)MAIN(37)
Called from ->ONCOMMAND(439)
Called from hwindow.prg->(b)HMAINWINDOW(164)
Called from hwindow.prg->HMAINWINDOW:ONEVENT(243)
Called from ->HWG_ACTIVATEMAINWINDOW(0)
Called from hwindow.prg->HMAINWINDOW:ACTIVATE(232)
Called from PRG001.prg->MAIN(79)

HwGUI 2.16 xHarbour build 0.99.70 Intl. (SimpLex)
Date:20/05/08
Time:13:36:55

Re: Como usar Filtro no Browse???

Enviado: 21 Mai 2008 22:34
por Cezar
Boa noite,

Em vez do antigo procedimento acima, estou usando:

DbSetFilter( {|| Estoque->CodCli == cCodCli }, 'Estoque->CodCli == cCodCli' )

Por enquanto tá funcionando!

v_cez@yahoo.com.br

Re: Como usar Filtro no Browse???

Enviado: 22 Mai 2008 00:14
por sygecom
Olá Cezar,
Se você usa CDX é mais aconselhavel você ter um indice pelo campo CODCLI e usar o ORDSCOPE() no lugar do SET FILTER.