ORA 0001

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
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Estou com um problema um tanto charope para resolver.

Possuo um forms, com dois blocos, onde um é o bloco mãe onde o usuario pode apenas consultar, e no filho ele pode inserir movimentos baseado na consulta.

Na key-commit do forms chamo uma package de banco para fazer a insreção do movimento no banco, no entanto ele me acusa ORA 0001, porém este movimento não existe no banco. Logo concluo, que ou ele esta tentando commitar duas vezes o mesmo registro (mesma chave primaria, herdada do relacionamento) ou ele esta tentando inserir um outro registro já existente no banco (improvável).

Se eu retiro a chamada da package de inserção funciona legal, insere tudo certinho, mas por questões de padronização (colocar o maximo possíbel de validações funcionamentos no banco) preciso chamala.

Outro ponto, se eu faço um teste no inicio da key-commit :
IF :SYSTEM.FORMS_STATUS = 'NEW' THEN ....

Funciona legal, logo concluo que ele possui um registro com form_status = 'NEW', o qual esta ok, e possui um com outro status que esta conflitando com este.

Outros pontos que provavelmente serão citados, mas que já testei.

- o bloco filho não permite atualização (UPDATE ALLOWED = 'NO');
- não estou atualizando nenhum campo antes do commit;
- não é premitido no bloco filho a criação de mais de um registro em branco.


Aguardo sugestões do que pode estar disparando este problema
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Não consegui resolver o meu problema mudando alguma propriedade do meu forms.

Tive de forçar o forms para não fazer sua inserção normal, pois ele tentava inserir uma vez o registro pela pakcage e uma vez por si mesmo ( já que ele é base table e possui o insert-allowed setado como YES).

A solução que foi adotada foi passar null para as trigger ON-INSERT e ON-UPDATE, não permitindo que ele mude, ou insira um registro de modo indesejável.

Poderia ter sido resolvido de varias maneiras, inclusive da forma que passei na descrição do problema, mas por questões de padronização esta foi a forma adotada.

Se alguém souber uma forma de proibir que o forms tente inserir na tabela, apenas trocando alguma propriedade , por favor poste aew
Responder
  • Informação
  • Quem está online

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