- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda loop infinito
×
Linguagem de Programação ADVPL
Perguntas Ajuda loop infinito
- caio.hps
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 17
- Obrigados Recebidos: 0
10 anos 8 meses atrás #21482
por caio.hps
Ajuda loop infinito foi criado por caio.hps
Galera, to com um probleminha aqui, aparentemente simples. mas nao to entendendo o porque
minha rotina de repente entrou em loop infinito, antes funcionava.
alguem consegue me ajudar a entender?
segue a rotina
Obrigado
minha rotina de repente entrou em loop infinito, antes funcionava.
alguem consegue me ajudar a entender?
segue a rotina
Static Function calculo()
local nMedia := 0
local _aPgto1 := {}
DbSelectArea("SE4")
DbGoTop()
do While !EOF()
nMedia := 0
_aPgto1 := Condicao(100,SE4->E4_CODIGO,,dDatabase)
if len(_aPgto1) == 1
if _aPgto1[1][1] != dDatabase
nMedia += _aPgto1[1][1] - dDatabase + 1
endif
else
for i= 1 to len(_aPgto1)
nMedia += _aPgto1[i][1] - dDatabase
next
nMedia := nMedia / len(_aPgto1)
endif
RecLock("SE4", .F.)
Replace E4_MEDIA with nMedia
MsUnlock()
SE4->(dbskip())
enddo
Return()
Obrigado
Por favor Acessar ou Registrar para participar da conversa.
- RonaldoLopes
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
10 anos 8 meses atrás #21484
por RonaldoLopes
Respondido por RonaldoLopes no tópico Ajuda loop infinito
Boa tarde, aparentemente está correto. Faça umas pequenas mudanças para testar.
While !SE4->(EOF())//MUDEI AQUI
nMedia := 0
Local nI := 0//acrescentei
_aPgto1 := Condicao(100,SE4->E4_CODIGO,,dDatabase)
if len(_aPgto1) == 1
if _aPgto1[1][1] != dDatabase
nMedia += _aPgto1[1][1] - dDatabase + 1
endif
else
for nI := 1 to len(_aPgto1)//mudei aqui
nMedia += _aPgto1[1] - dDatabase
next nI//MUDEI aqui
nMedia := nMedia / len(_aPgto1)
endif
RecLock("SE4", .F.)
Replace E4_MEDIA with nMedia
MsUnlock()
SE4->(dbskip())
End
While !SE4->(EOF())//MUDEI AQUI
nMedia := 0
Local nI := 0//acrescentei
_aPgto1 := Condicao(100,SE4->E4_CODIGO,,dDatabase)
if len(_aPgto1) == 1
if _aPgto1[1][1] != dDatabase
nMedia += _aPgto1[1][1] - dDatabase + 1
endif
else
for nI := 1 to len(_aPgto1)//mudei aqui
nMedia += _aPgto1[1] - dDatabase
next nI//MUDEI aqui
nMedia := nMedia / len(_aPgto1)
endif
RecLock("SE4", .F.)
Replace E4_MEDIA with nMedia
MsUnlock()
SE4->(dbskip())
End
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda loop infinito
Tempo para a criação da página:0.069 segundos