× Linguagem de Programação ADVPL

Perguntas Dúvida com código

Mais
11 anos 7 meses atrás #13471 por pcassio23
Bom dia,

Estou desenvolvendo um programa que gera um relatório em excel. O programa está entrando em loop infinito, eu já debuguei, alterei o código e nada, será que alguém pode verificar o trecho abaixo.

A função ProcMes(_dIni, _dFim, _cCod)... é apenas uma query que retorna os dados de venda no mês corrente.

DbSelectArea("SA1")
SA1->(DbGoTop())
Do While SA1->(!EOF())

_cCod := SA1->A1_COD
a := 1

For i:=1 to 12
If i=1
_cVend := ProcMes(_dIni, _dFim, _cCod)

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "001" + ";" + TMP->A1_COD+ ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "001" + ";" + _cLin + ";" + "001" + ";" + "C" + ";" + "C" + ";" + ";" +_cSheet + ";" )
aAdd( _aRet, "FormataTipoCelula" + ";" + _cLin + ";" + "01" + ";" + "Personalizado" + ";" + "000000" + ";" + "S" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "002" + ";" + TMP->A1_LOJA+ ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "002" + ";" + _cLin + ";" + "002" + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )
aAdd( _aRet, "FormataTipoCelula" + ";" + _cLin + ";" + "002" + ";" + "Personalizado" + ";" + "00" + ";" + "S" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "003" + ";" + TMP->A1_NOME + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "003" + ";" + _cLin + ";" + "003" + ";" + "C" + ";" + "E" + ";" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + _cCol + ";" + STR(&("TMP->"+Alltrim(&("_cVend")))) + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + _cCol + ";" + _cLin + ";" + _cCol + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )

Else
_cNdata := MonthSub(_dIni, a)
_dIni2 := FirstDate(_cNdata)
_dFim2 := LastDate(_cNdata)
_cVend := ProcMes(_dIni2, _dFim2, _cCod)

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + _cCol + ";" + STR(&("TMP->"+Alltrim(&("_cVend")))) + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + _cCol + ";" + _cLin + ";" + _cCol + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )

a++
EndIf

aAdd( _aRet, "FormataSelecao" + ";" + _cLin + ";" + "001" + ";" + _cLin + ";" + "016" + ";" + _cSheet + ";" + "Calibri" + ";" + "11" + ";" + "N" + ";" )

_cLin = soma1(_cLin)
_cCol = soma1(_cCol)

next i
SA1->( DbSkip() )
EndDo

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #13476 por mbrigagao
Respondido por mbrigagao no tópico Dúvida com código
Paulo,

Tente dar um dbselectArea("SA1") anes do SKIP, pode ser isso.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #13512 por lalberto
Respondido por lalberto no tópico Dúvida com código
DbSelectArea("SA1")
SA1->(DbGoTop())
Do While SA1->(!EOF())

nReg := SA1->(Recno())
_cCod := SA1->A1_COD
a := 1

For i:=1 to 12
If i=1
_cVend := ProcMes(_dIni, _dFim, _cCod)

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "001" + ";" + TMP->A1_COD+ ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "001" + ";" + _cLin + ";" + "001" + ";" + "C" + ";" + "C" + ";" + ";" +_cSheet + ";" )
aAdd( _aRet, "FormataTipoCelula" + ";" + _cLin + ";" + "01" + ";" + "Personalizado" + ";" + "000000" + ";" + "S" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "002" + ";" + TMP->A1_LOJA+ ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "002" + ";" + _cLin + ";" + "002" + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )
aAdd( _aRet, "FormataTipoCelula" + ";" + _cLin + ";" + "002" + ";" + "Personalizado" + ";" + "00" + ";" + "S" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + "003" + ";" + TMP->A1_NOME + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + "003" + ";" + _cLin + ";" + "003" + ";" + "C" + ";" + "E" + ";" + ";" + _cSheet + ";" )

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + _cCol + ";" + STR(&("TMP->"+Alltrim(&("_cVend")))) + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + _cCol + ";" + _cLin + ";" + _cCol + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )

Else
_cNdata := MonthSub(_dIni, a)
_dIni2 := FirstDate(_cNdata)
_dFim2 := LastDate(_cNdata)
_cVend := ProcMes(_dIni2, _dFim2, _cCod)

aAdd( _aRet, "Escreve" + ";" + _cLin + ";" + _cCol + ";" + STR(&("TMP->"+Alltrim(&("_cVend")))) + ";" + _cSheet + ";" )
aAdd( _aRet, "AlinhaCelulas" + ";" + _cLin + ";" + _cCol + ";" + _cLin + ";" + _cCol + ";" + "C" + ";" + "C" + ";" + ";" + _cSheet + ";" )

a++
EndIf

aAdd( _aRet, "FormataSelecao" + ";" + _cLin + ";" + "001" + ";" + _cLin + ";" + "016" + ";" + _cSheet + ";" + "Calibri" + ";" + "11" + ";" + "N" + ";" )

_cLin = soma1(_cLin)
_cCol = soma1(_cCol)

next i

SA1->(dbGoTo(nReg))
SA1->( DbSkip() )
EndDo

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

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