×
Linguagem de Programação ADVPL
Perguntas Variáveis
- LMafra
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23343
por LMafra
Bom dia à todos, estou desenvolvendo uma rotina para importação de pedidos de venda ( EDI ) de um arquivo txt para o Protheus 11 utilizando a rotina MSExecAuto. Acontece que quando eu coloco os valores numéricos separando por ponto (.) a parte inteira da decimal, o sistema não aceita e reporta um erro de valor inválido, quando eu separo com vírgula (,) ele aceita normalmente. Até aí tudo bem, o problema é que eu gero uma tabela temporária que recebe os valores do arquivo texto e quando aponto os campos desta tabela, o mesmo erro ocorre como se os campos estivessem separados por ponto (.)
O campo em questão é o C_EDIPED->QTDADE, como demonstrado nas linhas de código abaixo, ele recebe o valor numérico de 720
Aadd(_aItemPV,{ { "C6_FILIAL" , XFILIAL("SC6") , Nil },; // Filial do pedido
{ "C6_ITEM" , StrZero(_nConta,2) , Nil },; // Número do Ítem
{ "C6_PRODUTO", SB1->B1_COD , Nil },; // Codigo do Produto
{ "C6_DESCRI" , SB1->B1_DESC , Nil },; // Descrição do Produto
{ "C6_UNSVEN" , 40,0000 , Nil },; // Quantidade Pedida
{ "C6_QTDVEN" , C_EDIPED->QTDADE , Nil },; // Quantidade Vendida _nQtdVen
{ "C6_PRCVEN" , 10,0000 , Nil },;
{ "C6_VALOR" , 7200,0000 , Nil },; // Preco de Lista
{ "C6_SEGUN" , SB1->B1_SEGUM , Nil },; // Unidade de Medida de venda
{ "C6_UM" , SB1->B1_UM , Nil },; // Unidade de Medida Primar
{ "C6_TES" , SB1->B1_TS , Nil },; // Tipo de Entrada/Saida do Item
{ "C6_CLI" , _cCliente , Nil },; // Cliente
Alguém poderia me esclarecer o que pode estar acontecendo e como proceder neste caso ?
Desde já agradeço pela ajuda.
O campo em questão é o C_EDIPED->QTDADE, como demonstrado nas linhas de código abaixo, ele recebe o valor numérico de 720
Aadd(_aItemPV,{ { "C6_FILIAL" , XFILIAL("SC6") , Nil },; // Filial do pedido
{ "C6_ITEM" , StrZero(_nConta,2) , Nil },; // Número do Ítem
{ "C6_PRODUTO", SB1->B1_COD , Nil },; // Codigo do Produto
{ "C6_DESCRI" , SB1->B1_DESC , Nil },; // Descrição do Produto
{ "C6_UNSVEN" , 40,0000 , Nil },; // Quantidade Pedida
{ "C6_QTDVEN" , C_EDIPED->QTDADE , Nil },; // Quantidade Vendida _nQtdVen
{ "C6_PRCVEN" , 10,0000 , Nil },;
{ "C6_VALOR" , 7200,0000 , Nil },; // Preco de Lista
{ "C6_SEGUN" , SB1->B1_SEGUM , Nil },; // Unidade de Medida de venda
{ "C6_UM" , SB1->B1_UM , Nil },; // Unidade de Medida Primar
{ "C6_TES" , SB1->B1_TS , Nil },; // Tipo de Entrada/Saida do Item
{ "C6_CLI" , _cCliente , Nil },; // Cliente
Alguém poderia me esclarecer o que pode estar acontecendo e como proceder neste caso ?
Desde já agradeço pela ajuda.
Por favor Acessar ou Registrar para participar da conversa.
- THALESCOTR
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 124
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23346
por THALESCOTR
Respondido por THALESCOTR no tópico Variáveis
Bom dia Luciano,
quando você adiciona o item no array _aItemPv, coloque o PesqPict, que ele irá converter o valor para o que o campo necessita.
Exemplo:
{ "C6_PRCVEN" , Transform(seuvalor,PesqPict("SC6","C6_PRCVEN")) , Nil }
Outra Obs:
Não passe no array o valor total do item, deixe que o sistema calcule sozinho, isso evita erros!
Remova a linha:
{ "C6_VALOR" , 7200,0000 , Nil },; // Preco de Lista
Att
Thales
quando você adiciona o item no array _aItemPv, coloque o PesqPict, que ele irá converter o valor para o que o campo necessita.
Exemplo:
{ "C6_PRCVEN" , Transform(seuvalor,PesqPict("SC6","C6_PRCVEN")) , Nil }
Outra Obs:
Não passe no array o valor total do item, deixe que o sistema calcule sozinho, isso evita erros!
Remova a linha:
{ "C6_VALOR" , 7200,0000 , Nil },; // Preco de Lista
Att
Thales
Por favor Acessar ou Registrar para participar da conversa.
- LMafra
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23348
por LMafra
Bom dia Thales, eu desconhecia este comando, porém o campo tem que ser numérico, com o transform o resultado vem como alfa, consequentemente o Protheus me retorna um erro de valor inválido. Se adiciono a função VAL, ela coloca como separador o ponto (.) que não é aceito também.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
- LMafra
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23350
por LMafra
Boa tarde Kanaãm e obrigado pela atenção, não sei o porque disto acontecer visto que o exemplo que vejo de outros desenvolvedores sem o separador de inteiro/decimal é o ponto (.) só com o meu Protheus é que é exigido a vírgula como separador de decimais. o arquivo denominado Primeiro Erro EDI é a tela do primeiro erro mostrado, porém este erro não impede a gravação do pedido, já o segundo impede a gravação.
Desde já agradeço pela ajuda.
Desde já agradeço pela ajuda.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
10 anos 4 meses atrás #23352
por kanaamlrr
O primeiro erro você consegue arrumar corrigindo o inicializador padrão do campo.
Deve ter alguma expressão errada.
Quanto ao problema da quantidade, quando você coloca o ponto como separador, qual a mensagem apresentada?
o 720 você está passando como numérico ou caracter?
Deve ter alguma expressão errada.
Quanto ao problema da quantidade, quando você coloca o ponto como separador, qual a mensagem apresentada?
o 720 você está passando como numérico ou caracter?
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.148 segundos