|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Erro no FOR |
|
Versão: |
12.1.27 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
Oracle |
Complemento: |
|
|
|
|
|
Mensagem do
GUDEFENDI
em 10/05/2022, 08:46 h
Local: SP Registro: 10/07/2018 Postagens: 52 |
Bom dia a todos!
Tenho o fonte abaixo e ele esta dando um erro na parte do FOR (Erro - Variable is not local), mas não consigo encontrar o que pode ser. Podem me ajudar?
***** PARTE COM ERRO DO FOR *****
//Percorre todos os registros encontrados na SX5
For nAtual:= 1 To Len(aDados)
IF ALLTRIM(aDados[nAtual][3]) == "01" //DESENVOLVIMENTO/ARTES
LOOP
ENDIF
IF (ALLTRIM(aDados[nAtual][3]) == "08" .and. !lQualif) //QUALI DE FORNECEDOR
LOOP
ENDIF
IF (!(ALLTRIM(aDados[nAtual][3]) $ "03|05") .and. lEspec) .and. !(ALLTRIM(aDados[nAtual][3]) == "08")
LOOP
ENDIF
//Pega a chave e o conteúdo
_cAprov := aDados[nAtual][4]
RecLock("Z45", .T.)
Z45->Z45_FILIAL := xFilial("Z44")
Z45->Z45_IDSDD := Z44->Z44_IDSDD
Z45->Z45_STATUS := ‘1‘ // 1 - AGUARDANDO / 2 - APROVADO / 3 - REPROVADO
Z45->Z45_DEPTO := _cAprov
MsUnLock()
Next nAtual
*********************************
***** FONTE COMPLETO *****
#INCLUDE "RWMAKE.CH"
#INCLUDE "COLORS.CH"
#INCLUDE "FONT.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "PROTHEUS.CH"
#include "TOTVS.CH"
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ APRTP.PRW - Jose Antonio Defendi - 09/05/2022 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Rotina SDD TP º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Equipe de Comercial º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
User Function APRTP()
Local cIdSdd := Z44->Z44_IDSDD
Local cAlias := "Z45"
Local aCores := {}
Local aIndexZ45 := {}
Local cFiltro := "Z45_IDSDD==‘"+cValtoChar(cIdSdd)+"‘"
Private cCadastro := "Analise de Riscos da SDD"
PRIVATE aRotina := {{"Pesquisar" ,"AxPesqui" , 0, 1 },;
{"Visualizar" , "AxVisual" , 0, 2 },;
{"Avaliar" , "U_ALTZ45" , 0, 4 },;
{"Legenda" , "U_Legsdd" , 0, 7, 0, .F. }}
/*-- CORES DISPONIVEIS PARA LEGENDA --BR_AMARELO BR_AZUL BR_BRANCO BR_CINZA BR_LARANJA BR_MARRON BR_VERDE BR_VERMELHO BR_PINK BR_PRETO*/
Private bFiltraBrw:= { || FilBrowse(cAlias,@aIndexZ45,@cFiltro) }
AADD(aCores,{"Z45_STATUS = ‘1‘ ","BR_AZUL"})
AADD(aCores,{"Z45_STATUS = ‘2‘ ","BR_VERDE"})
AADD(aCores,{"Z45_STATUS = ‘3‘ ","BR_VERMELHO"})
Eval( bFiltraBrw ) //Efetiva o Filtro antes da Chamada a mBrowse
mBrowse( ,,,,cAlias,,,,,,aCores,,,,,,,,)
//mBrowse(6,1,22,75,cAlias,,,,,,aCores)
EndFilBrw( "Z45" , @aIndexZ45 ) //Finaliza o Filtro
Return NIL
//-----| Funcao: BLegenda - Rotina de Legenda |-----------------------------------------
User Function LEGSDD()
Local aLegenda := {}
AADD(aLegenda,{"BR_AZUL" ,"Pendente" })
AADD(aLegenda,{"BR_VERDE" ,"Aprovado" })
AADD(aLegenda,{"BR_VERMELHO","Reprovado"})
BrwLegenda(cCadastro, "Legenda", aLegenda)
Return Nil
//************************************************************************************
User Function ALTZ45(cAlias,nReg,nOpc)
AxAltera( cAlias , nReg , nOpc , , , , , "U_VLDSDD()" , , , , , , , .T. )
Return .T.
//************************************************************************************
User Function dadSdd()
Local cStat := M->Z45_STATUS
Local lRet := .T.
IF cStat > "1"
M->Z45_APROV := UPPER(ALLTRIM(USRFULLNAME(RETCODUSR())))
M->Z45_DTAPRV := dDatabase
ENDIF
Return lRet
//************************************************************************************
User Function VldSdd()
Local aArea := GetArea()
Local cQuery := " "
Local cQuery1 := " "
Local cQry := ""
// Local cStatus := " "
Local cStatus1 := " "
Local lQualif := .F.
Local lEspec := .F.
// Local For
//início inclusão em 18/01 Alessandra Costa CRM
//IF Z45->Z45_STATUS <> "1"
//IF M->Z45_STATUS == "1" .AND. Z45->Z45_STATUS <> "1" //alterado a linha, pois estava permitindo alterar
// ALERT("ESSA ANALISE DE RISCO JÁ FOI APROVADA/REPROVADA!")
// Return .F.
//ENDIF
//Verifica se o campo Observação foi preenchido.
IF M->Z45_STATUS <> "1"
IF EMPTY(M->Z45_OBSERV)
ALERT("OBSERVACAO NAO INFORMADA!")
Return .F.
ENDIF
//Verifica se é depto de Desenvolvimento / Artes
IF Z45->Z45_DEPTO == ‘DESENVOLVIMENTO / ARTES ‘
//verifica qtide de registros na Z45, se for maior que 1, já existe outros itens alem de desenvol/artes
cQry := "SELECT count(Z45_IDSDD) as qtdreg "
cQry += "FROM "+RetSQLName( "Z45" )+" "
cQry += "WHERE "
cQry += " Z45_IDSDD = ‘"+Z44->Z44_IDSDD+"‘ "
cQry += " AND D_E_L_E_T_ = ‘ ‘ "
DbUseArea(.T.,"TOPCONN",TcGenQRY(,,cQry),"ctnZ45",.T.,.F.)
IF !(ctnZ45->(EOF()))
IF ctnZ45->qtdreg > 1
ctnZ45->(DbCloseArea())
RETURN .T.
ENDIF
ENDIF
ctnZ45->(DbCloseArea())
//Se for desenvolvimento/artes precisa gerar outros registros da analise de risco
IF MsgYesNo("Deseja incluir qualificação de fornecedor na aprovação?", "Qualificação fornecedor")
lQualif:= .T.
ENDIF
IF Z44->Z44_NECEOP == "2" .and. Z44->Z44_AMOSTR == "2"
//Se campos acima igual a não, incluir somente QUALIDADE 05, INDUSTRIAL 03 e COMERCIAL 07
lEspec:= .T.
ENDIF
//Pega todos os registros da tabela ZX
aDados := FWGetSX5("ZX") //--> XX codigo da tabela criada na SX5
//Percorre todos os registros encontrados na SX5
For nAtual:= 1 To Len(aDados)
IF ALLTRIM(aDados[nAtual][3]) == "01" //DESENVOLVIMENTO/ARTES
LOOP
ENDIF
IF (ALLTRIM(aDados[nAtual][3]) == "08" .and. !lQualif) //QUALIFICAÇÃO DE FORNECEDOR
LOOP
ENDIF
IF (!(ALLTRIM(aDados[nAtual][3]) $ "03|05") .and. lEspec) .and. !(ALLTRIM(aDados[nAtual][3]) == "08")
LOOP
ENDIF
//Pega a chave e o conteúdo
_cAprov := aDados[nAtual][4]
//Alert(‘_cAprov: ‘+_cAprov , cTitle)
RecLock("Z45", .T.)
Z45->Z45_FILIAL := xFilial("Z44")
Z45->Z45_IDSDD := Z44->Z44_IDSDD
Z45->Z45_STATUS := ‘1‘ // 1 - AGUARDANDO / 2 - APROVADO / 3 - REPROVADO
Z45->Z45_DEPTO := _cAprov
MsUnLock()
Next nAtual
ELSE
cQuery := "SELECT Z45_STATUS "
cQuery += "FROM "+RetSQLName( "Z45" )+" "
cQuery += "WHERE "
cQuery += " Z45_IDSDD = ‘"+cValtoChar(M->Z45_IDSDD)+"‘ "
cQuery += " AND Z45_DEPTO <> ‘"+M->Z45_DEPTO+"‘ "
cQuery += " AND Z45_STATUS = ‘1‘ "
// cQuery += " AND ( Z45_STATUS <> ‘2‘ OR Z45_STATUS <> ‘3‘ ) "
cQuery += " AND D_E_L_E_T_ = ‘ ‘ "
DbUseArea(.T.,"TOPCONN",TcGenQRY(,,cQuery),"TMP",.T.,.F.)
if TMP->(EOF())
RecLock("Z44",.F.)
Z44->Z44_STATUS := ‘2‘
Z44->(MsUnlock())
EndIf
TMP->(DbCloseArea())
ENDIF
ENDIF
RestArea(aArea)
Return .T.
********************************* |
|
|
Mensagem do
ACG1574
em 10/05/2022, 09:24 h
Local: MG Registro: 28/03/2014 Postagens: 61 |
voce nao criou a variavel nAtual
Alexandre
Analista de Sistemas |
|
|
Mensagem do
CRISTIAM
em 10/05/2022, 09:26 h
Local: SP Registro: 10/05/2012 Postagens: 157 |
Bom dia!
Você precisa declarar a variável de controle do seu For...next
No seu caso, nAtual
recomento que você declare-a como local no início da rotina, seu problema estará resolvido.
Para você ter mais informações recomendo que você instale no seu VS Code a Extensão:
--> ProtheusDoc for VsCode (AdvPL)
Assim vc receberá mensagens de alerta e correções mais claras.
Boa sorte :-)
atenciosamente
Cristiam Rossi
ATRIA SOLUÇÕES |
|
|
Mensagem do
GUDEFENDI
em 10/05/2022, 09:45 h
Local: SP Registro: 10/07/2018 Postagens: 52 |
Muito obrigado pela ajuda. |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|