× Linguagem de Programação ADVPL

Perguntas Loop para exibição de dados não imprime o ultimo registro.

Mais
10 anos 11 meses atrás #19277 por cintra_daniel
Pessoal Bom dia!

Fiz um loop para imprimir os registros de uma tabela virtual que eu criei, só que eu precisava imprimir o veiculo somente 1 vez e contar quantas registros existem desse veiculo na tabela. Consegui fazer com o loop abaixo, porém como eu sempre imprimo os valores do registro anterior, o ultimo registro ele desconsidera. Eu já fiquei sem idéias, sem alguém puder me ajudar... To com muita urgência de entregar isso e fiquei agarrado.. rs

While ("TRB1")->(!Eof())
If oReport:Cancel()
Exit
EndIf

If (cVeic == TRB1->CODBEB)
cTot++
("TRB1")->(DbSkip())
Else
If !Empty(cVeic)

oSection2:Cell("PLACA"):SetValue(cVeic)
oSection2:Cell("FAMILIA"):SetValue(cFam)
oSection2:Cell("MODELO"):SetValue(cMod)
oSection2:Cell("ANO"):SetValue(cAno)
oSection2:Cell("QTD2"):SetValue(cTot+1)

oSection2:PrintLine()

EndIf
cVeic := TRB1->CODBEB
cFam := TRB1->CODFAMI
cMod := TRB1->NOMEBE
cAno := TRB1->ANO

cTot := 0
("TRB1")->(DbSkip())
EndIf

EndDo

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás - 10 anos 11 meses atrás #19300 por THALESCOTR
Bom dia Daniel,

apenas coloque abaixo do seu endDo, a impressão novamente para que saia o ultimo registro.
Ajustei o seu loop tbm.
Tente assim:


While ("TRB1")->(!Eof())
If oReport:Cancel()
Exit
EndIf

If (cVeic == TRB1->CODBEB)
cTot++
Else
If !Empty(cVeic)

oSection2:Cell("PLACA"):SetValue(cVeic)
oSection2:Cell("FAMILIA"):SetValue(cFam)
oSection2:Cell("MODELO"):SetValue(cMod)
oSection2:Cell("ANO"):SetValue(cAno)
oSection2:Cell("QTD2"):SetValue(cTot+1)

oSection2:PrintLine()

cVeic := TRB1->CODBEB
cFam := TRB1->CODFAMI
cMod := TRB1->NOMEBE
cAno := TRB1->ANO

cTot := 0

EndIf

("TRB1")->(DbSkip())
EndDo

//---SOLUÇÃO
If !Empty(cVeic)

oSection2:Cell("PLACA"):SetValue(cVeic)
oSection2:Cell("FAMILIA"):SetValue(cFam)
oSection2:Cell("MODELO"):SetValue(cMod)
oSection2:Cell("ANO"):SetValue(cAno)
oSection2:Cell("QTD2"):SetValue(cTot+1)

oSection2:PrintLine()

EndIf


Att
Thales
Ultima edição: 10 anos 11 meses atrás por THALESCOTR.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #19304 por cintra_daniel
Bom dia Thales!

Muito Obrigado desde já meu amigo. Ótima a sua solução... porém eu resolvi de outra forma, segue abaixo como eu fiz.

Após o EndDo

("TRB1")->(dbSkip(-1))

oSection2:Cell("PLACA"):SetValue(TRB1->CODBEB)
oSection2:Cell("FAMILIA"):SetValue(TRB1->CODFAMI)
oSection2:Cell("MODELO"):SetValue(TRB1->NOMEBE)
oSection2:Cell("ANO"):SetValue(TRB1->ANO)
oSection2:Cell("QTD2"):SetValue(cTot+1)

oSection2:PrintLine()


Mas fica ai no post as duas formas de resolver esse problema.. ;D

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.068 segundos
Joomla templates by a4joomla