Amigos,
Boa tarde a todos,
o negocio é o seguinte como faço para selecionar os dados de um determinado mes e trata-lo (JA USEI O SET FILTER SO QUE FICOU MUITO LENTO AS OPERAÇOES DEPOIS DE SELECIONADOS TEM QUE INCLUIR, EXCLUIR ) HOJE UTILIZO UM ARQUIVO TEMPORARIO COM BROWSE(), TENHO QUE MOSTRAR OS DADOS PARA O USUARIO NA HORA DA MOVIMENTAÇÃO (ACHO LEGAL ASSIM) ME DEEEM UMA LUZ POR FAVOR..
AGRADECO
uso clipper 5.3b+belinker 7.0 + llibg[/b]
Selecionar dados de um determinado mes
Moderador: Moderadores
-
mmaciel11
- Usuário Nível 2

- Mensagens: 69
- Registrado em: 23 Mar 2006 11:16
- Localização: sao luis
- Contato:
Selecionar dados de um determinado mes
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Esse é um (dos muitos) trecho de código que foi disponibilizado pelo dudu_xbase.
Não é lento e funciona legal.
Neste exemplo ele filtra pelo código do cliente, mas você pode filtrar por qualquer campo.
Veja onde mudar (de vermelho) para "filtrar" a sua pesquisa direto no banco de dados.
Substitua o bloco de código com a sua condição de filtro.
dbselectarea ("propri")
dbsetorder (1) // indice pelo codigo do caboclo
// procuro o caboclo
dbseek(clientes->CODCLI)
/* crio tbrowse */
oPropri := tbrowsedb (12,03,19,76)
/* filtro tbrowse com a função skipwhil() */
oProPri:SKIPBLOCK := {|x| SKIPWHIL(x, {||propri->CODCLI== clientes->CODCLI})}
oPropri:GOTOPBLOCK := {| | SKIPWHIL((LASTREC()* -1),{||propri->CODCLI== clientes->CODCLI})}
oproPri:GOBOTTOMBLOCK := {| | SKIPWHIL((LASTREC()* 1), {||propri->CODCLI== clientes->CODCLI})}
/* defino separadores do tbrowse */
oPropri:colorspec := "w+/bg+,n/w,n,n,w/bg+,g/bg+,gr+/w"
oProPri:colsep := chr (032) + chr (179) + chr (032)
oPropri:headsep := chr (196) + chr (194) + chr (196)
oPropri:footsep := chr (196) + chr (193) + chr (196)
/* defino colunas do tbrowse */
oCol1 := tbcolumnnew("Codigo", {||propri->CODCLI })
oCol2 := tbcolumnnew("Propriedade",{||propri->PROPRIED })
oProPri:addcolumn(oCol1)
oPropri:addcolumn(oCol2)
/*Congelo a Primeira Coluna frescura minha...*/
oPropri:freeze := 1
oProPri:gotop()
while ( .t. )
setcursor (0)
while ( !oPropri:stabilize () )
enddo
nTecla := inkey (0)
do case
case ( nTecla == K_ESC )
exit
case ( nTecla == K_DOWN )
oPropri:down ()
case ( nTecla == K_UP )
oPropri:up ()
case ( nTecla == K_LEFT )
oPropri:left ()
case ( nTecla == K_RIGHT )
oPropri:right ()
case ( nTecla == K_PGUP )
oPropri:pageup ()
case ( nTecla == K_PGDN )
oPropri:pagedown ()
case ( nTecla == K_CTRL_PGUP )
oPropri:gotop ()
case ( nTecla == K_CTRL_PGDN )
oPropri:gobottom ()
endcase
oPropri:refreshall()
enddo
/**********
*
* SKIPWHIL ()
*
* Esta funcao 'e auxiliar dos browsers, e serve para fazer filtros...
* Dudu_Xbase : 23/05/1997 fununcionou... *:)
*
**********/
function SKIPWHIL (x,key_val)
local i := 0
if lastkey() == 0
return i
endif
if (x > 0 .and. recno() <> lastrec()+1)
do while (i < x)
skip 1
if eof() .or. !(eval(key_val))
skip -1
exit
endif
i++
enddo
elseif (x < 0)
do while (i > x)
skip -1
if bof()
exit
endif
if !(eval(key_val))
skip 1
exit
endif
i--
enddo
endif
return i
Esperto ter ajudado.
MarceloG
Não é lento e funciona legal.
Neste exemplo ele filtra pelo código do cliente, mas você pode filtrar por qualquer campo.
Veja onde mudar (de vermelho) para "filtrar" a sua pesquisa direto no banco de dados.
Substitua o bloco de código com a sua condição de filtro.
dbselectarea ("propri")
dbsetorder (1) // indice pelo codigo do caboclo
// procuro o caboclo
dbseek(clientes->CODCLI)
/* crio tbrowse */
oPropri := tbrowsedb (12,03,19,76)
/* filtro tbrowse com a função skipwhil() */
oProPri:SKIPBLOCK := {|x| SKIPWHIL(x, {||propri->CODCLI== clientes->CODCLI})}
oPropri:GOTOPBLOCK := {| | SKIPWHIL((LASTREC()* -1),{||propri->CODCLI== clientes->CODCLI})}
oproPri:GOBOTTOMBLOCK := {| | SKIPWHIL((LASTREC()* 1), {||propri->CODCLI== clientes->CODCLI})}
/* defino separadores do tbrowse */
oPropri:colorspec := "w+/bg+,n/w,n,n,w/bg+,g/bg+,gr+/w"
oProPri:colsep := chr (032) + chr (179) + chr (032)
oPropri:headsep := chr (196) + chr (194) + chr (196)
oPropri:footsep := chr (196) + chr (193) + chr (196)
/* defino colunas do tbrowse */
oCol1 := tbcolumnnew("Codigo", {||propri->CODCLI })
oCol2 := tbcolumnnew("Propriedade",{||propri->PROPRIED })
oProPri:addcolumn(oCol1)
oPropri:addcolumn(oCol2)
/*Congelo a Primeira Coluna frescura minha...*/
oPropri:freeze := 1
oProPri:gotop()
while ( .t. )
setcursor (0)
while ( !oPropri:stabilize () )
enddo
nTecla := inkey (0)
do case
case ( nTecla == K_ESC )
exit
case ( nTecla == K_DOWN )
oPropri:down ()
case ( nTecla == K_UP )
oPropri:up ()
case ( nTecla == K_LEFT )
oPropri:left ()
case ( nTecla == K_RIGHT )
oPropri:right ()
case ( nTecla == K_PGUP )
oPropri:pageup ()
case ( nTecla == K_PGDN )
oPropri:pagedown ()
case ( nTecla == K_CTRL_PGUP )
oPropri:gotop ()
case ( nTecla == K_CTRL_PGDN )
oPropri:gobottom ()
endcase
oPropri:refreshall()
enddo
/**********
*
* SKIPWHIL ()
*
* Esta funcao 'e auxiliar dos browsers, e serve para fazer filtros...
* Dudu_Xbase : 23/05/1997 fununcionou... *:)
*
**********/
function SKIPWHIL (x,key_val)
local i := 0
if lastkey() == 0
return i
endif
if (x > 0 .and. recno() <> lastrec()+1)
do while (i < x)
skip 1
if eof() .or. !(eval(key_val))
skip -1
exit
endif
i++
enddo
elseif (x < 0)
do while (i > x)
skip -1
if bof()
exit
endif
if !(eval(key_val))
skip 1
exit
endif
i--
enddo
endif
return i
Esperto ter ajudado.
MarceloG
- Sergio_ASSilva
- Usuário Nível 2

- Mensagens: 92
- Registrado em: 09 Mar 2006 10:58
- Localização: Santo Estevão (Ba)
MARCELOG
Oi marcelo,
Tentei usar o dbedit com filtro duplo onde a concao seria m->cd_cleinte = cxa03000->cd_cliente e cxa0300->deb_atual <> 0.00 e nao funcionou, sera que posso usa esta funcao com esta condicao ?
Grato,
Sérgio
Tentei usar o dbedit com filtro duplo onde a concao seria m->cd_cleinte = cxa03000->cd_cliente e cxa0300->deb_atual <> 0.00 e nao funcionou, sera que posso usa esta funcao com esta condicao ?
Grato,
Sérgio
Clipper 5.3a/Blinker 7/DBFNTX