Página 1 de 1

DBEval

Enviado: 03 Mai 2005 12:57
por leo
oi pessoal estou com uma duvida referente a esse comando tenho um codigo de bloco para avaliar a situacao eh a seguinte:
no dbf tem a data de vencimento venc. e o dia atual diapro

Eu quero q o dbeval verifique se o atrazo eh maior q 10 quando for passando os registro se encontrar o primeiro valor maior q 10 atualiza outro dbf tipo assim:

--------------------------------------------------
tatr:=0
BLOCO := {|| tatr := diapro - venc} //aqui ele faz ok da o dia de atrazo
TCOND := {|| tatr > 10} // quando chega aqui tatr eh sempre 0

DBEVAL (BLOCO, TCOND)

if tatr > 10
field->situacao:='I'
endif
esse nao deu certo entao fiz assim:
---------------------------------------------------
tok:=.F.
tatr:=0

BLOCO := {|| tatr := diapro - venc} //aqui ele faz ok da o dia de atrazo

TCOND := {|| tok:=iif(tatr>10,.t.,.f.)} // quando chega aqui tatr eh sempre 0

DBEVAL (BLOCO, TCOND)

if tok
field->situacao:='I'
endif

tambem nao deu certo
-------------------------------------------------
Onde estou errando?

Enviado: 03 Mai 2005 15:13
por Dudu_XBase
Boa Tarde Leo.
Montei um prg para exemplificar.
Criei um dbf com os seguintes campos.
CLI_DAT date
CLI_STAT Caracter 1

No exemplo abaixo eu faço diferença da data corrente menos a data do campo cli_dat.


Use clientes
ncont :=0
// Somo qtos registros atendem minha condição
dbeval({||ncont++ } ,{||DATE()-CLI_DAT>=10})
? str(nCont)

// Executo a procedure grava para os registros q estão na condição
DBGOTOP()
dbeval({||grava() } ,{||DATE()-CLI_DAT>=10})

// Somo os registros processados que estão com status "I"
ncont :=0
DBGOTOP()
dbeval({||ncont++ } ,{||CLI_STAT = "I"})
? str(nCont)

return

// Procedure que grava no campo cli_stat
Static procedure grava()
replace cli_stat with "I"
return .t.

Enviado: 03 Mai 2005 18:56
por leo
Ok muito obrigadu isso atende minha questao.