- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- [RESOLVIDO] ERRO EM MsExecAuto MATA410
Perguntas [RESOLVIDO] ERRO EM MsExecAuto MATA410
- themrl16
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 8
- Obrigados Recebidos: 0
Gostaria da ajuda de vocês para analisar o que pode estar ocasionando um erro na função que eu criei.
Através do MsExecAuto, gostaria de alterar o campo C6_PRCVEN (no momento, estou fazendo isso diretamente no código fonte, apenas para testes).
Porém, na execução desse MsExecAuto, o seguinte erro é apresentado:
Tabela SC5 05/08/14 16:40:27
Filial - C5_FILIAL := 01
Numero - C5_NUM := 923705
--------------------------------------------------------------------------------
Tabela SC6 05/08/14 16:40:27
Erro no Item 1
--------------------------------------------------------------------------------
Item - C6_ITEM := 01
Produto - C6_PRODUTO := 10042761
Quantidade - C6_QTDVEN := 50
Prc Unitario - C6_PRCVEN := 10 < -- Invalido
Tipo Saida - C6_TES := 510
Erro --> Ocorreu um erro durante a validacao:
type mismatch on .AND. on EVALVALID line : 1103
Called from MSGETDAUTO line : 626
Called from A410ALTERA line : 1041
Called from MBROWSEAUTO line : 86
Called from MATA410 line : 174
Called from {|X,Y,Z| MATA410(X,Y,Z)} line : 100
Called from eval line : 4630
Called from MSEXECAUTO line : 4630
Called from PVATUALIZA line : 100
Called from {|| PVATUALIZA()} line : 55
Called from eval line : 112
Called from PROCESSA line : 112
Called from ATLPVPREV line : 55
Called from {|| ATLPVPREV()} line : 45
Called from ACTIVATE line : 0
Called from U_ATLPVPREV line : 48
Called from SIGAIXB line : 228
Called from __EXECUTE line : 502
Called from MDIEXECUTE line : 724
--------------------------------------------------------------------------------
Segue o link com as telas do campo no Dicionário de Dados: uploaddeimagens.com.br/images/000/329/16...iginal/C6_PRCVEN.png
O campo não possui gatilhos. Já realizei até mesmo um teste removendo a Validação de Sistema através da SX3010, porém o erro continua... o estranho é que o campo C6_PRUNIT não apresenta erro quando eu altero o valor dessa forma (mesmo deixando a configuração do campo C6_PRCVEN exatamente igual).
Por favor, vocês poderiam me ajudar a identificar o que está acontecendo? Segue abaixo o código da função de alteração:
//*****************************************************************************
Static Function PVAtualiza()
//*****************************************************************************
Private lMsErroAuto := .F.
Private xItensAlt := {}
Private xCabAlt := {}
Private xItemAlt := {}
//Selecionar registros a serem modificados:
cQuery := "SELECT SC6.C6_FILIAL Filial, SC6.C6_NUM Num, SC6.C6_ITEM Item, SC6.C6_PRODUTO Produto, SC6.C6_PRCVEN PrecoPV, "
cQuery += " SC6.C6_CLI Cliente, SC6.C6_LOJA Loja, SC6.C6_PRUNIT PrecoUnit, SC6.C6_TES Tes, SC6.C6_QTDVEN Qtd, SC6.C6_QTDENT QtdEntr, "
cQuery += "SA1.A1_TABELA Tabela, "
cQuery += "DA1.DA1_PRCVEN PrecoTabela "
cQuery += "FROM " + RetSqlName("SC6") + " SC6 "
cQuery += "JOIN " + RetSqlName("SA1") + " SA1 ON SA1.D_E_L_E_T_ = '' AND SC6.C6_CLI = SA1.A1_COD AND SC6.C6_LOJA = SA1.A1_LOJA "
cQuery += "LEFT JOIN " + RetSqlName("DA1") + " DA1 ON DA1.D_E_L_E_T_ = '' AND SA1.A1_TABELA = DA1.DA1_CODTAB AND SC6.C6_PRODUTO = DA1.DA1_CODPRO "
cQuery += "WHERE C6_FILIAL = 01 AND C6_NUM = 923705 ORDER BY C6_ITEM ASC"
TCQUERY cQuery Alias qSC6 New
DbSelectArea("qSC6")
qSC6->( DbGoTop() )
AAdd(xCabAlt,{"C5_FILIAL" , qSC6->Filial , Nil})
AAdd(xCabAlt,{"C5_NUM" , qSC6->Num , Nil})
Do While qSC6->( !Eof() )
xItemAlt := {}
AAdd(xItemAlt,{"C6_ITEM" , qSC6->Item , Nil})
AAdd(xItemAlt,{"C6_PRODUTO" , qSC6->Produto , Nil})
AAdd(xItemAlt,{"C6_QTDVEN" , qSC6->Qtd , Nil})
AAdd(xItemAlt,{"C6_PRCVEN" , 10 , Nil})
//AAdd(xItemAlt,{"C6_PRUNIT" , 10 , Nil})
AAdd(xItemAlt,{"C6_TES" , qSC6->Tes , Nil})
AAdd(xItensAlt, xItemAlt)
qSC6->( DbSkip() )
End Do
Begin Transaction
MsExecAuto({|x,y,z| MATA410(x,y,z)}, xCabAlt, xItensAlt, 4)
If ( lMsErroAuto )
DisarmTransaction()
End If
End Transaction
If ( lMsErroAuto )
MostraErro()
EndIf
qSC6->(DbCloseArea())
Return (.T.)
Obrigado!
Abraços,
Murilo L.
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
- Postagens: 216
- Obrigados Recebidos: 0
- themrl16
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 8
- Obrigados Recebidos: 0
Realizei o teste adicionando o campo C6_VALOR, porém o programa retornou o mesmo erro, ainda no campo C6_PRCVEN.
Alguém possui uma outra sugestão?
Abraços,
Murilo.
Por favor Acessar ou Registrar para participar da conversa.
- dexter
- Desconectado
- Membro Sénior
- Postagens: 78
- Obrigados Recebidos: 0
pelo pouco que sei o advpl não é um linguagem TIPADA, mas vc tem que fazer TYPECAST
com variáveis eu vejo isto como uma deficiência!
Esse erro é comum e até mesmo em atualizações da própria TOTVS eu já vi este erro,
também estou tentando criar uma função que ELIMINE este tipo de erro.
Veja se lhe ajuda ae, o problema é o tipo de dado no campo do preço venda.
tenta ai.
C6_PRCVEN := 10.00 // pontinho e zerinhos
Por favor Acessar ou Registrar para participar da conversa.
- themrl16
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 8
- Obrigados Recebidos: 0
Eu havia realizado esse teste também. Coloquei o ponto e casas decimais, porém ele continua com o erro de type mismatch. Acho muito esquisito dar um erro de type mismatch, sendo que estou passando o valor numérico da forma correta, e o erro não acontece em outros campos numéricos.
Continuo na busca de uma solução para esse problema. Agradeço muito se vocês tiverem mais sugestões do que eu posso testar.
Abraços e bom fds,
Murilo.
dexter escreveu: Eu também conheço o advpl a pouco tempo e sinceramente não entendo porque disto ai,
pelo pouco que sei o advpl não é um linguagem TIPADA, mas vc tem que fazer TYPECAST
com variáveis eu vejo isto como uma deficiência!
Esse erro é comum e até mesmo em atualizações da própria TOTVS eu já vi este erro,
também estou tentando criar uma função que ELIMINE este tipo de erro.
Veja se lhe ajuda ae, o problema é o tipo de dado no campo do preço venda.
tenta ai.
C6_PRCVEN := 10.00 // pontinho e zerinhos
Por favor Acessar ou Registrar para participar da conversa.
- themrl16
- Autor do Tópico
- Desconectado
- Membro Iniciado
- Postagens: 8
- Obrigados Recebidos: 0
Apenas para atualizar vocês sobre esse caso: Eu consegui resolver o problema adicionando mais campos ao ExecAuto. Não consegui entender o pq isso estava influenciando mas deu certo kkk... se eu remover qualquer um desses campos que constam no array, o erro volta a aparecer:
AAdd(xItemAlt,{"C6_ITEM" , qSC6->Item , Nil})
AAdd(xItemAlt,{"C6_PRODUTO" , qSC6->Produto , Nil})
AAdd(xItemAlt,{"C6_QTDVEN" , qSC6->QtdEntr , Nil})
AAdd(xItemAlt,{"C6_QTDLIB" , 0 , Nil})
AAdd(xItemAlt,{"C6_QTDENT" , qSC6->QtdEntr , Nil})
AAdd(xItemAlt,{"C6_PRCVEN" , qSC6->PrecoPV , Nil})
AAdd(xItemAlt,{"C6_TES" , qSC6->Tes , Nil})
AAdd(xItemAlt,{"C6_PEDCLI" , qSC6->PedCli , Nil})
AAdd(xItemAlt,{"D_E_L_E_T_" , qSC6->Del , Nil})
Agradeço a ajuda e atenção de todos.
Murilo.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- [RESOLVIDO] ERRO EM MsExecAuto MATA410