Árvore de páginas

Converte uma matriz de dados (Array) em um tHashMap, podendo combinar as colunas para a chave de busca.

Sintaxe

oHash := AToHM( < aMatriz >, [ nColuna_1 ], [ nTrim_1 ], [ nColuna_N ], [ nTrim_N ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

aMatriz

vetor

Matriz com os elementos a serem convertidos

X

 

nColuna_1

numérico

Indica o número da coluna que contem o valor da chave (pesquisa)

 

 

nTrim_1

numérico

Tipo de Trim para as colunas do tipo caractere.

 

 

nColuna_N

numérico

Informar mais de uma coluna se necessário

 

 

nTrim_N

numérico

Tipo de Trim para as colunas do tipo caractere.

 

 

Retorno

Nome

Tipo

Descrição

oHash

objeto

Objeto da classe HashMap (tHashMap)

Observações

  • O valor de “N” varia de 0 (zero) até 8 colunas para serem combinadas na chave de busca.
  • Se nenhuma coluna for adicionada (“N” = 0), usa por padrão a primeira coluna (“nColuna” = 1) e sem trim (“nTrim” = 0).
  • Os valores de “nTrim” podem ser: 0 – não altera a palavra, 1 – Elimina espaços a esquerda, 2 – Elimina espaços a direita, 3 – Elimina espaços a esquerda e a direita. Se o valor de ”nTrim” não for fornecido, considera que não deve eliminar espaços da palavra (“nTrim” = 0).
  • Importante: Se após a conversão do Array em um HashMap este array não for ser mais usado, lembresse de liberar a memória do Array passando ele para Nulo (Nil).

Exemplos

Exemplo 1
User Function ex_AToHM()
  Local cKey := ""
  Local oVal := Nil
  Local oHash1 := Nil
  Local oHash2 := Nil
  Local oHash3 := Nil
  Local oHash4 := Nil  
  Local aLista := {}
  
  // Cria a Lista com os elementos
  AAdd(aLista, {"item1",    23, " col3 a ", 1})
  AAdd(aLista, {" item2 ", 104, " col3 b ", 2})
  AAdd(aLista, {"item3",    41, " col3 c ", 3})
  AAdd(aLista, {" item4",    1, " col3 d ", 4})
  AAdd(aLista, {"item5",    18, " col3 e ", 5})
  
  // Por default usa a primeira coluna sem remover os espacos em branco
  oHash1 := AToHM(aLista)
  
  cKey := " item2 "
  lRet := HMGet(oHash1, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash1)
  // Libera o objeto de HashMap
  FreeObj(oHash1)
  oHash1 := Nil
  // Chave composta de Hash - converte a 1 coluna sem trim e a coluna 3 com RTrim (trim a diretira)
  oHash2 := AToHM(aLista, 1, 0, 3, 2)
  // Gera uma chave composta de hash converte a 1 coluna sem trim e a coluna 2 com RTrim (trim a diretira)
  cKey := HMKey({" item2 ", " col3 b "}, 1, 0, 2, 2)
  lRet := HMGet(oHash2, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash2)
  // Libera o objeto de HashMap
  FreeObj(oHash2)
  oHash2 := Nil
  
  // Chave composta de Hash - converte a 1 coluna com LTrim (a esquerda) e a coluna 3 com RTrim (trim a diretira)
  oHash3 := AToHM(aLista, 1, 1, 3, 3)
  // Gera uma chave composta de hash converte a 1 coluna com LTrim (a esquerda) e a coluna 2 com LTrim e RTrim (trim a diretira e a esquereda)
  cKey := HMKey({" item2 ", " col3 b "}, 1, 1, 2, 3)
  lRet := HMGet(oHash3, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash3)
  // Libera o objeto de HashMap
  FreeObj(oHash3)
  oHash3 := Nil
  
  // Chave composta de Hash - converte a 1 coluna sem Trim e a coluna 2 (numerica)
  oHash4 := AToHM(aLista, 1, 0, 2, 0)
 
  // Limpando o Array que nao sera mais usado
  aLista := Nil

  // Gera uma chave composta de hash converte a 1 coluna sem Trim e a coluna 2 (numerica)
  cKey := HMKey({" item2 ", 104}, 1, 0, 2, 0)
  lRet := HMGet(oHash4, cKey, oVal)
  If lRet == .T.
    VarInfo("Achou '" + cKey + "' ", oVal)
  Else
    ConOut("Nao achou '" + cKey + "'")
  EndIf
  
  // Limpa os dados do HashMap
  HMClean(oHash4)
  // Libera o objeto de HashMap
  FreeObj(oHash4)
  oHash4 := Nil
  
Return

Abrangência

Totvs Application Server com versão igual ou superior a 7.00.131227A

Veja também

  • Sem rótulos