Já ouviu falar de Query By Example (QBE)?
A possibilidade de fazer pesquisas para encontrar os registros que estamos precisando é uma mão na roda, não é mesmo?
Mas será que você está aproveitando todos os recursos disponibilizados pelo Oracle EBS?
O Query By Example permite consultas mais sofisticadas dentro do aplicativo.
Se você utiliza apenas o wildcard “%” nas suas pesquisas, então vai achar interessante.
Ele não é exclusividade do Oracle EBS, veja a definição de Query By Example no Wikipedia:
Query by Example (QBE) is a database query language for relational databases. It was devised by Moshé M. Zloof at IBM Research during the mid-1970s, in parallel to the development of SQL. It is the first graphical query language, using visual tables where the user would enter commands, example elements and conditions. Many graphical front-ends for databases use the ideas from QBE today. Originally limited only for the purpose of retrieving data, QBE was later extended to allow other operations, such as inserts, deletes and updates, as well as creation of temporary tables.
E em um documento da Oracle dentro do contexto de Oracle e-Business Suite:
If you want to retrieve a group of records based on more sophisticated search criteria than what Query Find allows, you can use a feature called query-by-example. As an expert user you can use query-by-example to specify complex search criteria in any of the fields of your current block. The search criteria can include specific values, phrases containing wildcard characters, and/or phrases containing query operators to help you pinpoint the data of interest.
Então, resumindo pra ficar mais fácil, ele permite fazer consultas mais inteligentes.
Nesse artigo vou abordar as possibilidades de pesquisa nas telas desenvolvidas em Forms.
Esses comandos devem ser informados normalmente em modo pesquisa (pressionando F11) e depois pressionando <CTRL> + F11 para executar a pesquisa.
Vamos lá?
Wildcards
Wildcard, que podemos chamar de “curinga” (Com “u” mesmo, Coringa é só o de Gotham), é o mais comum e utilizado por profissionais Oracle EBS.
Pode ser utilizando o “%” ou “_”, veja na tabela abaixo:
Query By Example: Query Operators
Aqui que a brincadeira fica interessante, podemos utilizar alguns operadores para deixar nossas consultas mais espertas.
Confira a tabela abaixo:
Para os operadores mais simples (marcados em cinza), basta informar o operador desejado.
Para os outros, precisamos acrescentar o “#” na frente do operador.
Vou mostrar alguns exemplos pra ficar mais fácil:
Exemplo #1:
No cenário acima, eu uso o operador “>=” para retornar apenas registros onde o campo “Relative Amount” é maior ou igual a 20.
Exemplo #2:
No cenário acima, eu uso o operador “!=” para retornar todos os registros que são diferentes de 10.
Exemplo #3:
No cenário acima, eu uso o BETWEEN para retornar apenas registros onde o campo “Relative Amount” está entre 5 e 10.
Exemplo #4:
No cenário acima, eu combino dois operadores: Uso o BETWEEN para retornar apenas registros onde o campo “Relative Amount” está entre 5 e 10 e também que tenham o campo “Date” preenchido.
Como todos os registros estão com o campo “Date” nulo, a minha consulta não retornou registros.
Query Count
Quando o form está em modo pesquisa, se você pressionar a tecla F12, você saberá quantos registros a sua consulta retornará:
Query Repeat
Depois de informar seus filtros e efetuar a pesquisa, caso queira repetir o filtro, basta entrar em modo pesquisa (F11) e depois pressionar F11 novamente.
Conclusão
Esse foi um artigo básico e simples, mas muitas pessoas ainda não conhecem essas funcionalidades do Query By Example.
Eu lembro que antigamente, era possível realizar consultas ainda mais poderosas, utilizando SQL Injection. Era possível usar até queries nos campos do Forms, bastava digitar “:” e a condição em modo pesquisa.
Lembro que na época fiquei doido quando vi isso, realmente era muito útil (Só não fiquei mais doido que o dia em que descobri o Form Personalization).
Mas por questões de segurança, lembro que tinha sido desabilitado por padrão.
Pesquisando aqui no meu Evernote (se ainda não usa, recomendo), achei um note falando sobre isso, a variável de ambiente “FORMS_RESTRICT_ENTER_QUERY” tinha que estar “FALSE” pra funcionar. Mas não sei dizer se ainda é possível habilitar. Também não acho que hoje em dia algum ATG permitiria. Se você que está lendo este artigo for ATG e quiser deixar a sua opinião nos comentários, fique à vontade.
E se você gostou e quer ver mais artigos nessa linha, deixe um comentário, ok?
Também não acharei ruim se você compartilhar com seus amigos 🙂
Link permanente
Essa dica é excelente! Uso muito o “>” na tela de notas do AR nos campos de data, mas não conhecia alguns dos wildcards. Parabéns pelo blog!
Link permanente
E aí Danilo, blz?
Que legal que descobriu algo novo.
Muito obrigado pelo feedback 😉
Abração
Link permanente
Muito bom! Já conhecia esses recursos e realmente são uma mão na roda.
Lembro de ter passado umas dicas para uns usuários para que pudessem utilizar isso, eles nunca fazem idéia de que isso existe, e ficam super felizes ao descobrirem, haha
Grande abraço!!!
Link permanente
Grande Genilto…
Isso mesmo, tem muita gente que não sabe… Dá uma grande agilidade mesmo poder filtrar com esses operadores!
Chegou a brincar com o SQL Injection ou não é do “seu tempo”? hehe
Abs
Link permanente
Brinquei sim, porém somente em páginas web, na época todos os sites com PHP eram vulneráveis. Dava pra fazer login quase que em qualquer coisa, hahaha
Mas no Oracle nunca havia tentado. Dava também? Hoje sei que não dá!
Link permanente
Dava sim… A gente usava queries dentro dos campos das telas, era show!
Link permanente
Muito bom.
Link permanente
Opa, obrigado Edu.
Abs
Link permanente
Du, ficou show. Simples e básico, mas nem sempre conhecidos. São super úteis 😉
Link permanente
Olha quem apareceu…mas que honra 🙂
Muito obrigado pelo comentário.
Abs
Link permanente
Sensacional.
Link permanente
Oi Carla, tudo bem?
Bom ver você por aqui 😉
Obrigado pelo comentário!
Abs
Link permanente
Parabéns pelo post.
Link permanente
Olá Rodrigo, tudo bem?
Muito obrigado! Abs
Link permanente
Muito bom exemplo!
Caiu perfeitamente para uns testes amanhã com alguns usuários!
Link permanente
Boa Denis.
Abs e boa sorte nos testes!