WTF Oracle Forms ?!?!?
Para alguns ele é engessado, arcaico e para outros ele é prático e produtivo. O Oracle Forms vem atravessando os anos mesmo após tantas intenções de se encerrar o seu ciclo de vida.
Não é incomum ver empresas rodando as versões 4.5, 5.0. e 6i da ferramenta. Isso sem contar as versões 9 e 10 que estão atuando ainda em larga escala.
Para desenvolvedores na plataforma Oracle Developer, é inegável o quanto o Forms é um monstro produtivo. Assim como também são conhecidos os seus bugs bizarros, que muitas vezes persistem por gerações. É sobre eles que falarei nesse artigo, dando algumas soluções e dicas para resolver esses problemas.
FORMS CORROMPIDO
Atire a primeira pedra aquele que nunca abriu um fmb e quando foi alterar alguma trigger ou canvas, se deparou com um erro fatal ou que impedia até a compilação. Já peguei casos como esses no 4.5,5.0, 6i e na última vez no 10g. Existem algumas abordagens que podem ser feitas para a recuperação do programa, e vou detalhá-las abaixo:
1) Converter o forms para arquivo texto
Muitos não conhecem essa funcionalidade, ou conhecem mas nunca a usaram para essa abordagem. É possível converter o fmb para texto e depois convertê-lo novamente para binário. Essa solução resolve 99% dos casos de programa corrompido no Forms. Para fazer isso acesse:
Forms 4.5, 5.0 e 6i – Menu File>Administration>Convert
Forms 10g – – Menu File > Convert
Tela de Conversão Forms 10g
Ocorrido nas versões: 4.5,5.0,6i e 10g
2) Cópia dos objetos
Esta é uma solução mais trabalhosa e extrema. Consiste em criar um novo fmb e copiar manualmente todos os objetos do fmb corrompido. Essa solução já me salvou algumas vezes e garanto que é válida.
Ocorrido nas versões: 6i e 10g
VALORES FANTASMAS NO LIST_ITEM
Um bug que sempre me incomodou são os famosos valores fantasmas que aparecem no list-item. Isso geralmente acontece ao se cria-lo manualmente, salvar e depois apagar algumas informações da lista.
Existe uma maneira simples para se acabar com essas simples assombrações. Vá até o último item fantasma e tecle CTRL+SHIFT+<. Essa combinação de teclas exorciza e acaba com eles.
Ocorrido nas versões: 4.5,5.0 e 6i
PROCEDURES E FUNCTIONS FANTASMAS
Outro caso de assombração típica são as procedures e functions fantasmas. Na versão 4.5 e 5.0 muitas vezes ao se compilar o fmb, apareciam erros em procedures e functions que não existiam ao se consultar na Program Unit.
Isso ocorria quando se deletava a procedure ou a function através da própria Program Unit, mas com o PL/SQL editor aberto. Eles simplesmente perdiam a referência mas não sumiam do código do programa.Outra maneira de ocorrer esse tipo de problema, era renomear a procedure e recompilar o PL/SQL através do PL/SQL Editor. Ele alterava o nome mas não sumia com a procedure anterior.
Tela do PL/SQL Editor no Forms 6i
A única maneira de acabar com esses objetos, era procurá-los através da lista Name no PL/SQL Editor e apagá-los manualmente.
Ocorrido nas versões: 4.5 e 5.0
CADÊ MINHAS PLLs ?
Esse caso eu só vi ocorrer no Forms 5.0. O Forms simplesmente não conseguia referenciar as PLLs e consequentemente não compilava devido as dependências.
A solução era simples. Criar no registro dentro da pasta Oracle uma chave chamada ORAPLSQLLOADPATH e colocar o caminho das PLLs.
Essa dica eu dei recentemente a um camarada que estava trabalhando com essa versão e teve problemas ao instalar o Forms 5.0 em uma máquina nova.
Ocorrido na versão: 5.0
FORMS INSTALADO EM PORTUGUÊS
Esse não é um bug, mas eu vou citar essa bela dica para resolver um pequeno “problema”. O Forms instalado em Português Brasil.
Se você não quiser reinstalar tudo novamente, ou ter que conviver com “gatilhos”, siga o seguinte procedimento no Forms 10g
Procure a chave NLS_LANG e altere para AMERICAN_AMERICA.WE8ISO8859P1. Saia do Forms e entre novamente para conferi-lo em inglês.
Aviso: Esse procedimento só pode ser feito uma vez, não há volta para outro idioma após essa alteração.
Então é isso pessoal ! Se você conhecer algum bug que não está citado nesse artigo, comente e contribua com seu conhecimento !
Abraço