Páginas filhas
  • ArraySearch


Ordena dados de uma variável 4GL do tipo ARRAY OF RECORD conforme o atributo informado.

Sintaxe

_ADVPL_arraySearch( < aRec > , < uSearch > , < cAttr > , < nStart > , < lPartialSearch > , < lCaseSensitive >  ) => INTEGER

Parâmetros

Nome

Tipo

Obrigatório?

Descrição

aRec

ARRAY OF RECORD

Sim

Variável 4GL do tipo ARRAY ou ARRAY OF RECORD onde será feita pesquisa.

uSearch

CHAR

DATE

NUMBER

Sim

Conteúdo do valor a ser pesquisado, podendo ser número, data ou texto (tipo simples).

cAttr

CHAR

Não

Nome do elemento do RECORD 4GL a ser utilizado para pesquisa ou índice/linha em caso de array multi-dimensional.

Em caso de ARRAY do tipo simples, este parâmetro deve ser NULL ou apenas não informá-lo caso não informe os próximos parâmetros.

nStart

INTEGER

Não

Linha inicial a partir de onde deve ser realizada a pesquisa.

Quando for pesquisa em todo ARRAY, basta não informar este parâmetro.

lPartialSearch

SMALLINT 

Não

Indica quando deseja pesquisar o conteúdo de forma parcial utilizando a instruçao "ESTÁ CONTIDO".  Quando não informado o valor padrão adotado é FALSE.

lCaseSensitive

SMALLINT 

Não

Indica se deve considerar a diferença entre CAIXA ALTA ou baixa de conteúdos do tipo texto. Quando não informado o valor padrão adotado é TRUE.

Retorno

Tipo

Descrição

INTEGER

Posição do ARRAY onde a informação foi encontrada. Retornará 0 (zero) caso não encontre.

Exemplo

DEFINE ma_dados ARRAY[3] OF RECORD
                            codigo SMALLINT,
                            texto  CHAR(10)
                            END RECORD

#----------------------------#
 FUNCTION arraySearch_test()
#----------------------------#
  DEFINE l_index SMALLINT

  LET ma_dados[1].codigo = 49
  LET ma_dados[1].texto  = 'linha 01'

  LET ma_dados[2].codigo = 27
  LET ma_dados[2].texto  = 'linha 03'

  LET ma_dados[3].codigo = 5
  LET ma_dados[3].texto  = 'linha 02'

  LET l_index = _ADVPL_arraySearch(ma_dados,27,'codigo')
  CALL conout("Linha do array onde foi encontrado código 27 = "||l_index)

  LET l_index = _ADVPL_arraySearch(ma_dados,"LINHA 03",'texto',1,FALSE,FALSE)
  CALL conout("Linha do array onde foi encontrado o texto LINHA 03 independente ignorando maiusculas e minúsculas = "||l_index)
END FUNCTION

Informações

Fontes: array.prw


Observações

Disponível a partir do pacote Logix 12.1.31.