Enviar dados para o forms no meio da execução de uma package

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
fabivelosa
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 17 Set 2008 3:25 pm
Localização: Araraquara - SP

Ola!
Preciso enviar parametros para o forms (para atualizar uma barra de progresso) durante a execução de uma procedure de bnco.
Tem como?

Obrigadinha
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Tem sim Fabi... (tudo jóia? rs.. quanto tempo...)

Eu devo ter um exemplo aqui de barra de progresso, utilizando SET_ITEM_PROPERTY, vou ver se localizo aqui pra te enviar.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Ah, à propósito, aqui mesmo no fórum tem um exemplo.

Dá uma olhadinha neste link:
http://www.glufke.net/oracle/viewtopic. ... t=progress

Qualquer coisa, manda pra gente.
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

não sei se dá para postar aqui mesmo.
é que eu fiquei com uma dúvida
essa barra de progresso é usada quando se costuma fazer uma consulta ou procedimento demorado e para que o usuário não pense que o sistema travou você fica exibindo o registro que está sendo executado, é isso?

e para usar no meu forms seria só colocar para o meu forms e selecionar o canvas?
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

Mas tem uma coisa:
* essa barra é usada baseado em informações de um bloco. (exemplo, vai popular cada linha de um bloco)... alguma coisa que o FORMS tenha controle de contar e executar linha a linha.

Não é disparar uma procedure no BANCO e ela fica atualizando a barra no forms. Isso porque o forms funciona da seguinte forma:
* quando algo é disparado no banco, o forms PARA, CONGELA, TRANCA até que a "execução" volte pra ele... Não tem o que fazer...

Uma forma de se fazer isso é assim:
* disparar a procedure em uma outra sessão. (exemplo, disparar ela via um JOB, daí a execução passa pra outra sessão e "libera" instantaneamente o controle ao forms. Enquanto a procedure executa no banco).
* fazer com que essa procedure fique gravando numa tabela em que pé anda a execução.
* o forms fica fazendo refresh dessa informação para o usuário.

É bem diferente do exemplo passado de progress-bar...
fabivelosa
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 17 Set 2008 3:25 pm
Localização: Araraquara - SP

Mas o processo não esta no forms, esta no banco...
O botao chama o processo, ai vai mudando a barrinha de progresso, so que quando ele começa executar o processo, (q esta no banco, e q demora +/- 20 minutos) ele não atualiza mais a barrinha, so quando acaba a execucao.... Mas eu preciso que atualize durante o processo do banco... ai surge a pergunta, como eu atualizo o forms não meio do processo do banco?
:shock:

Ps: Trevis!!!! hauahuaha
saudades de você tb!
bjus
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

É exatamente o que eu respondi acima.
A ***única**** forma é executar paralelo !!! (exemplo: via job)

Pois o forms PARA a execução enquanto está rodando coisas no banco!!!
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

O banco não consegue enviar informações para o forms, só o retorno final do procedimento!

O ideal é manter algum controle pelo forms, como por exemplo:

Selecionar tudo

...
  FOR registro IN cursor LOOP
    procedure_banco(parametro1, parametro2);
    :bloco.item := total + anamento; -- Cálculo do percentual
    SYNCHRONIZE;
  END LOOP;
...
Responder
  • Informação
  • Quem está online

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