Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - AScan() com vetor multidimensional

time.pngTempo aproximado para leitura: 00:03:00 min

Ocorrência
Ao utilizar o a função AScan() para encontrar um campo dentro de um vetor multidimensional de três níveis ou mais, o mesmo não está sendo encontrado:



Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80

Causa
A função AScan() avalia apenas o segundo nível do vetor, assim sendo, caso o campo avaliado esteja no terceiro nível, a função sempre retornará zero

Solução
Caso o vetor seja composto de apenas um item pode ser utilizado o exemplo abaixo:

ESTRUTURA

AVECTOR: VETOR
AVECTOR[1]: ITEM 1
AVECTOR[1][1]: DADO 1
AVECTOR[1][1][1]: CAMPO 1
AVECTOR[1][1][2]: VALOR 1
AVECTOR[1][1][2]: NIL 1
AVECTOR[1][2]: DADO 2
AVECTOR[1][2][1]: CAMPO 2
AVECTOR[1][2][2]: VALOR 2
AVECTOR[1][2][2]: NIL 2


CÓDIGO

// nPosField := AScan(aVector, {|x| AllTrim(x[1]) == "W2_COND_PA"})
nPosField := AScan(aVector[1], {|x| AllTrim(x[1]) == "W2_COND_PA"})

// EXIBIÇÃO DE MENSAGEM
ConOut(Repl("-", 80))
ConOut(PadC("Field: W2_COND_PA | Content: " + aVector[1][nFieldPos][2], 80))
ConOut(Repl("-", 80))


Contudo caso o vetor tenha mais de um item na estrutura, utilize o seguinte exemplo:

ESTRUTURA

AVECTOR: VETOR
AVECTOR[1]: ITEM 1
AVECTOR[1][1]: DADO 1
AVECTOR[1][1][1]: CAMPO 1
AVECTOR[1][1][2]: VALOR 1
AVECTOR[1][1][2]: NIL 1
AVECTOR[2]: ITEM 2
AVECTOR[2][1]: DADO 1
AVECTOR[2][1][1]: CAMPO 1
AVECTOR[2][1][2]: VALOR 1
AVECTOR[2][1][2]: NIL 1

CÓDIGO

// LAÇO DE REPETIÇÃO PARA A QUANTIDADE DE ITENS
For nX := 1 To Len(aVector)
// nPosField := AScan(aVector, {|x| AllTrim(x[1]) == "W2_COND_PA"})
nPosField := AScan(aVector[nX], {|x| AllTrim(x[1]) == "W2_COND_PA"})

// EXIBIÇÃO DE MENSAGEM
ConOut(Repl("-", 80))
ConOut(PadC("Field: W2_COND_PA | Content: " + aVector[nX][nFieldPos][2], 80))
ConOut(Repl("-", 80))
Next nX


Saiba mais
Função ASCAN

 

Esse artigo foi útil?
Usuários que acharam isso útil: 2 de 2

1 Comentários

  • Avatar
    Maicon Macedo

    Excelente. o aScan funcionou em uma array multidimensional com mais de 3 níveis.

    0
    Ações de comentário Permalink
Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _