Problema com Master Detail de Multiplos Leveis

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS

Estou desenvolvendo um Forms onde tenho 4 blocos, os quais possuem relação entre si, no entanto estou tendo problemas com o relacionamento entre os blocos, já que ao executar a query no ultimo bloco ele não filtra pelos relacionamentos existentes entre os blocos acima.

Minha duvida inicial é: Um bloco detail pode ser master de um outro detail e assim sucessivamente?

Se sim: existe alguma propriedade em particular que devo prestar atenção?

Obrigado.
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Os filtros são sempre de Pai - Filho e nunca de Filho - Pai

Respondendo sua Dúvida, Sim, você pode ter a seguinte estrutura

Pai
Filho / Pai
Filho / Pai
Filho ....

Para tornar isso o mais fácil possível de ser criado, faça uma boa modelagem da sua base, indicando as PK's e as FK's.

Depois disso faça a criação dos seus blocos e sempre deixe a opção de criar relation automaticamente, ele vai checar as pk's e fk's e criar o relacionamento...

O objeto criado chamado Relation, SEMPRE estará no filho, para que funcione corretamente.. Dentro do relation tem 2 opções que sempre deixo como NÃO, são elas Diferido e Consulta Automatica.

Espero ter ajudado!
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS

Valeu pela explicação.

Tendo certeza agora que essa estrutura é realmente possivel vou dar uma nova olhada em cima dos blocos.
Porém pelo que tu falou não existe nenhum problema no que eu tenha feito, e sim no banco, é provavel que a relação entre as tabelas esteja confusa, e não há nada que eu possa fazer quanto a isso :cry:
O que acontece no forms , é que eu tenho que criar todos relacionamentos na mão pois ele não encontra nenhum bloco master para criar as auto - join (o que confirma que o problema deve mesmo ser no banco).
Mas eu resolvi estes relacionamentos usando uma serie de procedures e cursores para atribuir os valores das tabelas manualmente, e passei a trabalhar com apenas dois blocos(ao invés de 4) sendo um deles base table(o que seria o master) e outro não( o que seria o ultimo detail) e os outros blocos intermediarios que seriam apenas para fazer as join eu cortei fora do programa.
Mas mesmo o programa estando funcional, existe uma possibiliadade de eu ter que refazelo usando os quatro blocos e as join entre eles. Portanto se alguém souber alguma trigger, ou propriedade que tenha de trabalhar de maneira diferenciada do que a que o forms gera automatico por favor poste no fórum.

[]s
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS

[b][color=blue][size=24]RESOLVIDO!!!![/size][/color][/b]

Bom, apesar de ter refeito o forms usando as estruturas que comentei na ultima mensagem me foi pedido que tentasse fazer usando as relações entre os blocos.
Então fui revisar todo forms, e o que acontece é o seguinte.
Eu tenho que trabalhar com 4 blocos, porém dois destes são usados apenas para fazer os relacionamentos entre o master e o detail de nivel mais baixo, logo conclui-se que não devo utiliza-los na tela. Porém :!: , a para popular os details de maneira automatica o Forms nescescita de pelo menos um campo, não apenas navegavel, [color=red]mas também visivel[/color] em algum canvas, do contrario ele retorna o erro [b]FRM-40106 : no navigable item in block[/b] que como podem ver não instrui o desenvolvedor da melhor maneira, já que eu possuia todos meus campos navegaveis, porém todos com a propriedade canvas = null.
Partindo deste ponto as soluções são variadas, cada um pode encotrar uma maneira adequada para sua aplicação. Eu preferi esconder estes itens atras de uma grade que tenho para os details. :-o

Espero ter sido claro.

[]s
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Tome cuidado apenas para não possibilitar que alguém click nele, então, ele será exibido.

Existem várias coisas desse tipo no forms.

:)
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS

Valeu pela dica, ainda vou verificar isto pois estou o desenvolvendo novamente, e ele é um tanto trabalhoso de modo que algumas coisas que funcionavam na versão com as procedures se perderam e parte do funcionamento parou, mas nada que não seja implementavel.
Mas creio que escondidos atras da grade, a qual possui seus campos com enabled = false eu não terei maiores problemas

:wink:

Novamente obrigado
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Outro alerta, enable = false também altera o navigable pra false, logo, você retornará a estaca zero.
Erro: FRM-40106 : no navigable item in block :)

é um campo minado! rsrsrs
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS

Sim , mas a grade não da problema, ela possui na verdade um campo que é navegavel, os demais são apenas para exibição.
Mas que este tipo de erro é de rachar a cara do programador é :!:
Espero que versões futuras do forms tratem melhor as suas restrições quanto a blocos. Enquanto isto não acontece temos que fazer essas gambiarras, improvisar como der e programar para um futuro melhor :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes