Descubra um jeito mais inteligente de criar um bloco no Forms com campos que não são de base

Ideia Criativa

Se você já precisou desenvolver uma tela customizada no Forms onde o bloco precisava mostrar informações de colunas que não eram de base, ou seja, colunas de uma tabela que não era a principal do bloco, vai adorar essa dica.

Nas tabelas geralmente temos informações de outras tabelas, mas não a informação completa, apenas uma chave para que possamos relacionar com a tabela original.

Essa chave pode ser um ID ou código de outra tabela.

Por exemplo, na tabela de pedidos do OM temos o ID do cliente, mas não faz sentido mostrar esse ID na tela, então precisamos ir até a tabela de clientes, buscar o nome dele e mostrar na tela, junto com as outras informações do pedido.

As maneiras mais comuns de fazer isso são utilizando a trigger POST-QUERY do bloco ou views.

Mas essas opções tem algumas desvantagens, como não ter a possibilidade de efetuar pesquisas por esses campos (no caso do POST-QUERY) ou não ser possível efetuar alterações (no caso da view).

Mas a boa notícia é que existe uma outra opção, bem mais simples e funcional. Estou utilizando há bastante tempo nos meus forms e até o momento tem atendido perfeitamente.

Inclusive quem me deu a dica foi o meu amigo Genilto Vanzin, que sabe tudo de Forms.

Se interessou? Então me acompanhe até o final aqui nesse artigo pois vou mostrar:

  • Problemas das soluções existentes
  • Uma nova opção: Como configurar um bloco totalmente funcional

Vamos lá?

Problemas das soluções existentes

Como mencionei anteriormente, as opções mais utilizadas (pelo menos é o que eu vejo por aí) tem alguns probleminhas.

Vamos a eles:

Trigger POST-QUERY

Talvez essa seja a mais utilizada.

A configuração é simples, é criada uma trigger POST-QUERY no bloco e nessa trigger é feita uma query para buscar as informações das outras tabelas.

Para cada registro que está sendo retornado no form, essa query é executada e os campos são preenchidos.

O problema…

Como esses campos serão populados pela query, eles não são de base, então não é possível efetuar pesquisar por eles. Serão apenas campos de DISPLAY.

Para contornar, é necessário implementar outras triggers, como a PRE-QUERY.

View

Para resolver o problema acima do POST-QUERY, podemos criar uma view que relacione todas as informações desejadas, assim o bloco terá como base essa view e todos os campos poderão ser utilizados para pesquisas.

O problema…

Apenas utilizando a view da maneira tradicional, o bloco não poderá sofrer alterações, ou seja, será apenas um bloco de consulta.

Para contornar, é necessário implementar triggers como: ON-INSERT, ON-UPDATE, ON-DELETE, ON-LOCK, etc.

Uma nova opção: Como configurar um bloco totalmente funcional

Agora quero mostrar a você a nova opção, ela também usa uma view como base mas não é necessário implementar triggers e o bloco fica totalmente funcional, permitindo consultas e alterações (na tabela base da view).

Vamos ao passo a passo:

#1. Configure a view normalmente no bloco:

Propriedades Bloco

#2. Agora que vem o segredo, nós vamos utilizar a propriedade do bloco chamada DML Data Target Name, na área Advanced Database:

Propriedades Bloco - Advanced Database

Nessa propriedade nós informamos qual a tabela base da view, ou seja, qual a tabela principal que vai receber as alterações.

#3. Pelo menos um campo do bloco deve estar configurado como chave primária:

#4. Os campos que não fazem parte da tabela principal, ou seja, os campos que são apenas para visualização, devem estar como QUERY ONLY = “Yes”:

Query OnlyE é isso, simples não?

Agora com esse bloco é possível realizar pesquisa por todos os campos e efetuar alterações nos campos da tabela base.

Conclusão

O Forms é uma ferramenta incrível, possui uma infinidade de recursos.

É muito difícil conhecer 100% da ferramenta.

Trabalho com ele há mais de 18 anos e vez outra ou outra acabo descobrindo uma coisa nova.

Estou utilizando essa solução há bastante tempo e não tenho do que reclamar, muito fácil de implementar e de dar manutenção.

Sem contar que o cliente adora, já que tem um bloco totalmente funcional.

O que achou desse artigo? Gostou? Tem outras sugestões para esse tipo de necessidade? Deixe nos comentários.

E se achou útil esse guia, não esqueça de compartilhar com a sua rede de contatos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *