aScan

Função que faz a busca de um elementro dentro de um Array.

Exemplo da Rotina:

aScan(aArray, {|x| x == "SUA_BUSCA"})

Exemplo 1- Buscando um elemento no Array:

aScan - Exemplo 1

aScan – Exemplo 1

//Bibliotecas
#Include "Protheus.ch"
 
/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/
 
User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	
	//Adicionando elementos no Array
	aAdd(aDados, "Daniel")
	aAdd(aDados, "Atilio")
	aAdd(aDados, "Hudson")
	aAdd(aDados, "Terminal")
	aAdd(aDados, "Teste")
	
	//Procurando pelo nome Atilio
	nPos := aScan(aDados, {|x| AllTrim(Upper(x)) == "ATILIO"})
	If nPos > 0
		MsgInfo("Atilio encontrado, na linha "+cValToChar(nPos)+".", "Atenção")
	Else
		MsgAlert("Atilio não foi encontrado!", "Atenção")
	EndIf
	
	RestArea(aArea)
Return

Exemplo 2- Buscando um elemento no Array, a partir de uma posição:

aScan - Exemplo 2

aScan – Exemplo 2

//Bibliotecas
#Include "Protheus.ch"
 
/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/
 
User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	
	//Adicionando elementos no Array
	aAdd(aDados, "Daniel")
	aAdd(aDados, "Atilio")
	aAdd(aDados, "Hudson")
	aAdd(aDados, "Terminal")
	aAdd(aDados, "Teste")
	
	//Procurando pelo nome Atilio a partir da linha 3
	nPos := aScan(aDados, {|x| AllTrim(Upper(x)) == "ATILIO"}, 3)
	If nPos > 0
		MsgInfo("Atilio encontrado, na linha "+cValToChar(nPos)+".", "Atenção")
	Else
		MsgAlert("Atilio não foi encontrado (após a linha 3)!", "Atenção")
	EndIf
	
	RestArea(aArea)
Return

Exemplo 3- Buscando um elemento no Array Multidimensional:

aScan - Exemplo 3

aScan – Exemplo 3

//Bibliotecas
#Include "Protheus.ch"
 
/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/
 
User Function zTeste()
	Local aArea   := GetArea()
	Local aDados  := {}
	Local nPos    := 0
	
	//Adicionando elementos no Array (código, nome e idade)
	aAdd(aDados, {"0001", "Daniel",   23})
	aAdd(aDados, {"0002", "Atilio",   33})
	aAdd(aDados, {"0003", "Hudson",   43})
	aAdd(aDados, {"0004", "Terminal", 53})
	aAdd(aDados, {"0005", "Teste",    63})
	
	//Procurando pelo nome Hudson
	nPos := aScan(aDados, {|x| AllTrim(Upper(x[2])) == "HUDSON"})
	If nPos > 0
		MsgInfo("Hudson encontrado, na linha "+cValToChar(nPos)+".", "Atenção")
	Else
		MsgAlert("Hudson não foi encontrado!", "Atenção")
	EndIf
	
	RestArea(aArea)
Return

Observações:

– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;

Referências:

TDN
Universo AdvPL