Diferenças Commit no Forms? help!

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

Olá Queridos Mestres Boa Noite
Por favor alguém sabe me explicar de uma forma clara qual a diferença entre os seguintes commit ''s no forms?

Selecionar tudo

do_key('commit_form');
FORMS_DDL ('COMMIT');
commit_form;
commit;
standard.commit;
:-o
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

Realizaei alguns testes e cheguei a seguinte conclusão:

Selecionar tudo

do_key('commit_form');        /*Commit Forms(S) Oracle(S)*/
FORMS_DDL ('COMMIT');         /*Commit Forms(N) Oracle(S)*/
commit_form;                  /*Commit Forms(S) Oracle(S)*/
commit;                       /*Commit Forms(S) Oracle(S)*/
standard.commit;              /*Commit Forms(N) Oracle(S)*/    
Por favor, comentem.....
Obrigado.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Vamos lá:

commit_form, do_key('commit_form'), commit
As 3 opções fazem a mesma coisa! Este commit, primeiro faz o POST das informações no banco e depois comita. Exemplo:
* Você altera uma informação num bloco base-table.
* Essa informação NÃO vai pro oracle de imediato. O forms apenas faz um select FOR UPDATE na linha, e "reserva" ela no banco. (não deixa ninguém alterar)
* quando você executa esse COMMIT, o forms:
(1) - Envia literalmente o UPDATE ou INSERT, etc para o banco!
(2) - Comita a informação. (liberando a linha pra outra pessoa tb)

FORMS_DDL ('COMMIT') e standard.commit
É o commit realizado apenas no banco de dados ORACLE.
Exemplo:
* Você roda uma procedure no banco que altera linhas na base.
* Após o standard.commit, apenas essas informações do banco serão comitadas, o POST não será feito como no exemplo acima. Ou seja, é como se fosse um COMMIT dentro da procedure e não do forms...

Normalmente se usa apenas o COMMIT. Em raros casos é necessário comitar apenas no banco.

Se o que eu falei acima está errado, corrijam-me :-D
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

Olá Thomas F. G. Bom Dia!
Obrigado pela resposta.
quanto ao comando POST; oque exatamente le faz?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

O post altera NO BANCO tudo que o cara está digitando/alterando nos blocos. Mas o POST não comita! Só faz os updates!

Se você altera algo no bloco, o forms não envia a informação no mesmo momento pro banco. Só vai no momento do COMMIT ou do POST ! :-o
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

quer dizer que se eu fizer um POST eu já posso fazer um Select nesses dados, porém, se não executar o COMMIT ao sair da tela, essa informações não comitadas são ignoradas???
SPECIALIZED
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 40
Registrado em: Ter, 02 Out 2007 4:09 pm
Localização: São Paulo - SP

Após dar o Post, você só enxerga o valor na própria sessão, isso normalmente é usado para reservar um valor(registro), da pra usar com efeito de sequence.
Deniskywalker
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Ter, 27 Out 2015 7:12 am

Olá, boa tarde.
Tive um problema em form e corrigi-o alterando o commit para standard.commit;
Acontecia o seguinte:

No forma havia checbox para o usuário marcar e clicar num botão imprimir. Beleza! O cara marcava mais de um checkbox e a coisa acontecia!!! "frm-40401 no changes to save".

Essa parte fazia insert direto numa tabela do banco...tirei o commit, coloquei o standard.commit e foi que é uma beleza.

Selecionar tudo

   IF :WIP_DEN_V.IDPRINT = 'S' THEN
           BEGIN         
             INSERT INTO WIP_002
                (IDREG
                ,ORGANIZATION_ID
                ,WIP_ENTITY_ID
                ,CREATION_DATE 
                ,CREATED_BY 
                ,LAST_UPDATE_DATE 
                ,LAST_UPDATED_BY
                )
             VALUES
                (V_IDREG
                ,:R_WIP_041_V.ORGANIZATION_ID
                ,:R_WIP_041_V.WIP_ENTITY_ID
                ,SYSDATE
                ,FND_GLOBAL.USER_ID
                ,SYSDATE
                ,FND_GLOBAL.USER_ID
                );
             standard.commit; 
            -- commit;
               
             IF V_TITULO IS NULL THEN
                V_TITULO := :WIP_041_V.NRORDPRO;
             END IF;
Responder
  • Informação
  • Quem está online

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