× Linguagem de Programação ADVPL

Perguntas [RESOLVIDO] ERRO EM MsExecAuto MATA410

Mais
10 anos 3 meses atrás - 10 anos 3 meses atrás #24205 por themrl16
Boa tarde a todos! Sou novo no fórum e também na programação em ADVPL.

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.
Ultima edição: 10 anos 3 meses atrás por themrl16.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24207 por admin
Respondido por admin no tópico ERRO EM MsExecAuto MATA410
Murilo tenta preencher o campo C6_VALOR também.

AAdd(xItemAlt,{"C6_VALOR" , qSC6->Qtd * 10 , Nil})

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás - 10 anos 3 meses atrás #24208 por themrl16
Respondido por themrl16 no tópico ERRO EM MsExecAuto MATA410
Bom dia!

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.
Ultima edição: 10 anos 3 meses atrás por themrl16.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás - 10 anos 3 meses atrás #24258 por dexter
Respondido por dexter no tópico ERRO EM MsExecAuto MATA410
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. :woohoo:
C6_PRCVEN    := 10.00  // pontinho e zerinhos


:whistle: :whistle:
Ultima edição: 10 anos 3 meses atrás por dexter.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24287 por themrl16
Respondido por themrl16 no tópico ERRO EM MsExecAuto MATA410
Bom dia Dexter!


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. :woohoo:

C6_PRCVEN    := 10.00  // pontinho e zerinhos


:whistle: :whistle:

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24310 por themrl16
Respondido por themrl16 no tópico ERRO EM MsExecAuto MATA410
Boa tarde a todos.

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.

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