O que pode ser o erro array out of bounds (3 of 2) em um MsExecAuto

No artigo de hoje, vou mostrar como resolver o erro Array out of bounds (3 of 2) em um MsExecAuto.

Recentemente eu estava conversando com meu amigo Rodrigo dos Santos – BlackTDN ( GitHub ), e ele comentou comigo uma dica interessante para publicar que às vezes o pessoal pode bater a cabeça.

Quando se é feito um ExecAuto (no modelo tradicional, sem ser em MVC), geralmente passamos os campos em um Array, porém e se acontecer o erro de Array out of bounds 3 de 2, o que devemos fazer?

Calma jovens, não precisa se desesperar, a solução é mais simples do que parece, acontece que grande parte das rotinas automáticas em AdvPL, antigamente usavam um terceiro parâmetro na informação e campos em rotinas automatizadas.

Com o tempo esse parâmetro entrou em desuso. Então o que devemos fazer, é informar Nil como terceiro parâmetro dos campos.

Abaixo um exemplo, na parte de cima com o erro, e na parte abaixo sem o erro:

//Sem passar o Nil, vai ocasionar o erro - Array out of bounds (3 of 2)
aAdd(aLinha, {'C7_PRODUTO',  '000004' })
aAdd(aLinha, {'C7_QUANT',    3        })
aAdd(aLinha, {'C7_PRECO',    20.50    })

// -----------------------

//Passando o valor nulo na terceira posição
aAdd(aLinha, {'C7_PRODUTO',  '000004', Nil})
aAdd(aLinha, {'C7_QUANT',    3,        Nil})
aAdd(aLinha, {'C7_PRECO',    20.50,    Nil})

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação