Como usar Filtro no Browse???

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Como usar Filtro no Browse???

Mensagem 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
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Re: Como usar Filtro no Browse???

Mensagem 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
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Como usar Filtro no Browse???

Mensagem 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.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder