Erro a realizar UPDATE

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

Criei um bloco onde mostrar todos os dados de uma tabela, como se fosse uma lista...EX:

------------------------------------------------------------------------------------
|cd_setor | ds_setor |ds_local | etc | etc |
------------------------------------------------------------------------------------
|1 | adm |grajau | etc | etc |
------------------------------------------------------------------------------------
|2 | almox |grajau | etc | etc |
------------------------------------------------------------------------------------

informei que nesse bloco é exibido 5 items. no final de cada linha tem um botão que ao clicar eu quero que atualize uma tabela..

o código do botão é o seguinte:

Selecionar tudo

 ALERT  NUMBER;

BEGIN
	
	--  UPDATE DBAMV.CARRINHO_PARADA SET SN_REABASTECEU = 'S' WHERE  CD_ITMVTO_ESTOQUE = :CARRINHO_PARADA.CD_ITMVTO_ESTOQUE;
	  UPDATE dbamv.carrinho_parada
    SET sn_reabasteceu = 'S' , 
        cd_usuario_reabasteceu = user ,
        dt_reabasteceu = sysdate
    WHERE cd_itmvto_estoque = :CARRINHO_PARADA.CD_ITMVTO_ESTOQUE;
   
    COMMIT;
	  
	  SET_ALERT_PROPERTY('ALERTA',alert_message_text,'O REGISTRO '|| :CARRINHO_PARADA.CD_ITMVTO_ESTOQUE || ' FOI ATUALIZADO COM SUCESSO!!!');
    ALERT := SHOW_ALERT('ALERTA');
    GO_BLOCK('CARRINHO_PARADA');
    CLEAR_BLOCK;
    FIRST_RECORD;	  
	  
	  FOR RECORD IN (	SELECT * FROM DBAMV.CARRINHO_PARADA WHERE SN_REABASTECEU = 'N') LOOP
                  :CARRINHO_PARADA.CD_ITMVTO_ESTOQUE      := RECORD.CD_ITMVTO_ESTOQUE;
                  :CARRINHO_PARADA.CD_MVTO_ESTOQUE        := RECORD.CD_MVTO_ESTOQUE ;
                  :CARRINHO_PARADA.CD_USUARIO_REABASTECEU := RECORD.CD_USUARIO_REABASTECEU;
                  :CARRINHO_PARADA.SN_REABASTECEU         := RECORD.SN_REABASTECEU;
                  :CARRINHO_PARADA.DT_REABASTECEU         := RECORD.DT_REABASTECEU;
                  :CARRINHO_PARADA.CD_SOLSAI_PRO          := RECORD.CD_SOLSAI_PRO;
                  :CARRINHO_PARADA.CD_ITSOLSAI_PRO        := RECORD.CD_ITSOLSAI_PRO;
                  CREATE_RECORD;
    END LOOP;
	

END;
o problema é que quando eu clico no botão para atualizar um erro informando que não pode ser inserido o registro...só que eu dei um UPDATE.

alguém tem ideia do que pode ser?

Thanks
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Douglas,

Não sou desenvolvedor FORMS e talvez não consiga ajudar muito você.

Mas você poderia fornecer a mensagem de erro quando executa seu comando? Por acaso é uma mensagem de erro do tipo "ORA-nnnn"? Isso ajudaria no diagnóstico do seu problema.

Um outro ponto. Pode verificar se não existe nenhuma trigger associada a operações de UPDATE em CARRINHO_PARADA? Talvez exista algum evento de forms ou trigger atualizando outras tabelas.

Abraços,

Sergio Coutinho
douglasmattos
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 19 Mar 2012 2:28 pm

então como falei anteriormente eu coloquei o seguinte código no botão de atualizar:

BEGIN

UPDATE DBAMV.CARRINHO_PARADA SET SN_REABASTECEU = 'S' WHERE CD_ITMVTO_ESTOQUE = :BLOCO8.CODIGO;

END;

só que quando eu clico nesse botão aparece o seguinte erro:

FRM-40508: erro do ORACLE: não é possivel inserir registro...

Ele não deixa por que é uma chave primaria...Mas eu não estou inserindo e sim ATUALIZANDO..

se alguém puder ajudar fico grato...
amarildoribeiro
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Qui, 04 Out 2012 9:31 pm

depende de como você criou o banco, essas PKs são utilizadas em mais alguma tabela? é do tipo cascata ?
tem que ver isso daí, mas mesmo sendo update não é muito comum fazer update em PKs
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

veja se no seu bloco, os campos estão como Não Base Table. Acho que quando você faz o commit no botão ele está tentando salvar o registro do bloco tambem.

att,
Marlon
Responder
  • Informação
  • Quem está online

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