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):
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 é:
- A cada linha, ele aciona a FWxFilial
- Vem e compara com o campo de Filial da tabela SU7
- 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:
- Aciona uma única vez a FWxFilial, e armazena o conteúdo dela
- Vem e compara com o capmo de Filial da tabela SU7
- 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.
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.
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.