A Importância do @ e # em um Filtro de uma Consulta Padrão (SXB)

Você sabia da importância dos caracteres @ e # (arroba e sustenido respectivamente) no filtro de uma consulta padrão? Veja para que servem no artigo de hoje.

No cadastro de consulta padrão (tabela SXB), existe um recurso interessante que é aplicar um filtro nos dados da tabela, abaixo mesmo, segue um print do cadastro da consulta da tabela SU7 (Operadores do TMK):

Exemplo de Filtro na SXB

O que acontece, é que no filtro da Consulta Padrão (XB_TIPO igual a 6), ele vem fazendo a validação linha a linha da tabela. Ai se tiverem poucos registros, quase não sentimos queda de performance.

Mas e se a tabela tiver milhares de registros? Como poderíamos melhorar a filtragem, meio que já deixando ela na memória?

Tomamos como exemplo, o print que vimos acima, num cenário sem o @# , o que o sistema faz é:

  1. A cada linha, ele aciona a FWxFilial
  2. Vem e compara com o campo de Filial da tabela SU7
  3. Então se tiver 2 mil registros, ele vai acionar a FWxFilial 2 mil vezes para realizar as comparações

Agora com o @#, o que ele faz é o seguinte:

  1. Aciona uma única vez a FWxFilial, e armazena o conteúdo dela
  2. Vem e compara com o capmo de Filial da tabela SU7
  3. Então se tiver 2 mil registros, ele vai acionar a FWxFilial UMA ÚNICA VEZ para depois realizar as comparações

Ai da importância e da utilidade desses caracteres. Agora apenas explicando o que é cada um deles:

# (Sustenido): A expressão passará por uma macro execução, dessa forma você pode usar funções ou variáveis no filtro

@# (Arroba e Sustenido): Faz com que a expressão seja executada apenas uma única vez, ganhando tempo para não precisar ficar executando toda vez a cada linha de registro

@ (Arroba): Só com o @ também é possível filtrar com sintaxe direta em SQL, por exemplo, supondo que eu queira que na consulta padrão traga apenas clientes que sejam da região SUL, eu poderia fazer o filtro assim na Consulta Padrão:

@A1_COD IN ('PR', 'SC', 'RS')

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Boa noite, tudo bem?

    Estou enfrentando um problema em um cliente onde estou tentando realizar uma consulta padrão, mas nenhuma tabela aparece na consulta. Você saberia me informar o que pode estar causando esse erro?

    Desde já, agradeço pela ajuda!

    • Bom dia Marcos, tudo joia graças a Deus e você?

      Você diz que, ao acessar o SIGACFG, ir em Base de Dados, ir em Consulta Padrão, e clicar em Incluir, ele não mostra a lista de tabelas?

      Ou é alguma outra opção do sistema (tipo consultas específicas, consultas genéricas, entre outras)? Se for alguma outra, se possível, detalhe o processo que você está fazendo.

      Tenha uma ótima e abençoada terça feira.

      Um grande abraço.

  2. Olá Atilio,

    Na primeira opção, SIGACFG ao tentar incluir uma consulta padrão, não aparece nenhuma tabela no grid da segunda tela.

    • Bom dia Marcos, tudo joia?

      Mas ele mostra uma lista que você consegue navegar usando as setas do teclado? Se sim, tente apertar por exemplo -end- ou -page down-, pois eu já vi cenários onde tinham empresas que tinham vários registros na SX2 “vazios”.

      Agora se ele não te dar a opção de usar as setas do teclado, e realmente trazer uma grid vazia, ai é algum cenário envolvendo a lib, talvez tentando atualizar o sistema.

      Depois me dá o feedback sobre esse assunto.

      Tenha uma ótima e abençoada quinta feira.

      Um grande abraço.

Deixe uma resposta

Terminal de Informação