Selecionar dados de um determinado mes

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

mmaciel11
Usuário Nível 2
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

Mensagem por mmaciel11 »

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]
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

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
mmaciel11
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 23 Mar 2006 11:16
Localização: sao luis
Contato:

Mensagem por mmaciel11 »

vou testar e depois posto aqui.

abraços

marcos maciel
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
Avatar do usuário
Sergio_ASSilva
Usuário Nível 2
Usuário Nível 2
Mensagens: 92
Registrado em: 09 Mar 2006 10:58
Localização: Santo Estevão (Ba)

MARCELOG

Mensagem por Sergio_ASSilva »

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
Clipper 5.3a/Blinker 7/DBFNTX
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Tudo bem, vai funcionar.
Responder