Pular para o conteúdo principal

Postagem em destaque

BlackTDN NEWS :: 2025.02.13 :: 21:42:18

_Créditos das imagens: ChatGPT # Robótica Avançada: o que é, como funciona e quais os benefícios? **Fonte:** Tecmundo.com.br **Autor:** Maura Martins **Publicado em:** 2025-02-13T14:30:00Z ![Imagem](https://tm.ibxk.com.br/2025/01/02/02114816778102.jpg?ims=1200xorig) > Hoje as empresas vivenciam uma nova fase na tecnologia voltada à produção. A chamada fase da Indústria 4.0 também é apontada pelos especialistas como uma "Quarta Revolução Industrial". Nesse momento histórico, entre os destaques, está o desenvolvimento da rob… [Leia mais](https://www.tecmundo.com.br/mercado/401252-robotica-avancada-o-que-e-como-funciona-e-quais-os-beneficios.htm) --- # Ex-chefe da Activision Blizzard minimiza acusações de assédio e sugere que são conspirações de sindicatos **Fonte:** Tecmundo.com.br **Autor:** Gabriel Morais Silva de Oliveira **Publicado em:** 2025-02-13T17:30:00Z ![Imagem](https://tm.ibxk.com.br/2025/02/13/13142625239056.jpg?ims=1200xorig) > Durante uma entrevist...

Protheus :: Advpl :: Dicas do Robson :: Usando UniqueKey() para filtrar registros

Função: UniqueKey( <uFields> , <cAlias>, <lResetKeys>, <nMaxRec> )

Objetivo: Verificar se a chave passada é única de acordo com o campo ou campos passados nos parâmetros. Esta função ajuda a apresentar um único registro quando houver vários semelhantes, por exemplo: Fazer consulta SXB na tabela SC7, porém apresentando um registro por pedido de compra independente de quantos itens existam.

Parâmetros:

uFields – String contendo o campo ou Array  unidimensional com as strings dos campos que que serão considerados para pesquisa da chave única.

cAlias – Alias do arquivo para pesquisa.

lResetKeys – Reinicializa as chaves.

nMaxRec – Número máximo de elementos.

Essa mesma dica poderá, por extensão, servir ao fitro do MPSDU/APSDU como abaixo:

!Deleted().and.C7_EMISSAO>=FirstDate(Date()).and.C7_EMISSAO<=LastDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})

Irá retornar todos os primeiros n registros da tabela SC7, não deletados, com a data de emissão dentro do mês corrente.

Dada a característica da Função UniqueKey() o intervalo de dados não poderá ser muito grande por dois motivos

  • Performance;
  • Tamanho máximo da “Pilha” de armazenamento;

Logo, para tabela com muitos registros, uma condição complementar deverá ser utilizada como filtro “primário” e excludente.

Exemplo:

image

Filtrando com:

!Deleted().and.C7_EMISSAO>=FirstDate(Date()).and.C7_EMISSAO<=LastDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})

teremos:

image

image 

Uma outra dica, para melhorar a performance do filtro usando UniqueKey() é selecionar uma Chave de índice que corresponda ao filtro desejado. No nosso caso C7_FILIAL+C7_NUM…

E, como bem dito pelo Robson, além de podermos utilizar UniqueKey() para Filtrar informações via MPSDU/APSDU podemos utilizá-la para filtrar uma Consulta Padrão.
 
Observe:
 
Sem o Filtro
 
image
 
image
 
 
Aplicando o Filtro:
 
C7_EMISSAO>=FirstYDate(Date()).and.C7_EMISSAO<=LastYDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})
 
 
image
 
image
 
Obteremos apenas os n Primeiros registros que atendam a condição.
 
p/ Robson Luiz (feat иαldσ dj)
 
[]s

Comentários

Postar um comentário

Postagens mais visitadas