Página 1 de 1

Não mostra valor do campo

Enviado: 17 Nov 2014 16:30
por Paulo_CPV
Boa Tarde!

Estou com mais uma dúvida que está me dando uma dor de cabeça, ou eu não estou vendo o erro que estou cometendo. Estou tentando fazer a somatória de valores, tem os valores no campo mas está dando somente zero, o que eu devo mudar para resolver este problema. Segue trecho do código:

Código: Selecionar todos

   LOCAL Soma01 , cMes , aValor , i , j , cCompetemcia

   ::AbrirArquivo( "Db0004" , "IndValor" , 4 , "Fluxo" )
// ::AbrirArquivo( "Db0006" , "IndGrf" , 6 , "Grafico")
   
   Soma01 := 0
   cMes   := "01/2009"

   Fluxo->( DBSetOrder(2) )
   Fluxo->( DBGOTOP() )

   cCompetemcia := Fluxo->C_000 <- Competência 

   Fluxo->( DBSetOrder(3) )
   
   COUNT TO nRegistro FOR cCompetemcia == cMes

   aValor := ARRAY(nRegistro)
   
   FOR i = 1 TO nRegistro
   
      aValor[i] := Fluxo->C_003 <- Campo com os valores

   NEXT i
   
   FOR j = 1 TO nRegistro
   
      Soma01 := Soma01 + aValor[j] <- Aqui só está dando zero
      
   NEXT j

_MSG(Transform(Soma01,"@R 999.999.999.99"),"Teste") <- Mostra resultado
RETURN NIL

Não mostra valor do campo

Enviado: 17 Nov 2014 18:14
por Toledo
Paulo_CPV escreveu:uma dúvida que está me dando uma dor de cabeça, ou eu não estou vendo o erro que estou cometendo
Amigo, o melhor nestes casos é analisar o código linha-a-linha.

Código: Selecionar todos

COUNT TO nRegistro FOR cCompetemcia == cMes
Este comando acima vai passar registro por registro do banco de dados para fazer a contagem e no final, além de retornar o número de registros que satisfaz a condição, o ponteiro do registro vai para o último registro mais um. Então EOF() vai retornar verdadeiro e como o ponteiro vai estar em um registro em branco (último registro+1), o campo Fluxo->C_003 vai estar zerado.

Abraços,