Como saber a qtde de registros ao se abrir um cursor dinâmic

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
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

bom dia povo

dá pra saber a quantidade de registros ao se abrir um cursor dinâmico??


valeus
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

Brother, seguinte...

O DBMS_SQL.FETCH_ROWS(nome_cursor), retorna 0 ou 1, sendo 1 quanto se tem registros no retorno e, 0 não.

Alguma variedade do comando eu desconheço mas, se precisar da conta dos registros, poderia estar fazendo um contador dentro do teu loop.

Abaixo, o trecho do comando que retorna 0 ou 1:

Selecionar tudo

   IF DBMS_SQL.FETCH_ROWS(V_CURSOR) = 0
   THEN 
        -- FAÇA ALGO;
   ELSE
        -- FAÇA OUTRA COISA;
   END IF;
Qualquer coisa, manda ai.
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

é Paulão, estou ligado, já existe contador...

mas é que peguei um exemplo aqui duma tela que o cara implementou uma barra de progressão na unha, ficou bem bacana, mas nesse caso ele não usou cursor dinâmico como estou fazendo na minha tela


então eu precisaria saber o total de registros antes de entrar no loop pra já setar o valor máximo da 'barra de progressão' simulada. no caso desse exemplo, o cara utilizou Record Group, aí deu certo, mas beleza, era só pra saber mesmo ser era possível, eu ia tentar implementar só pra dar uma enfeitada mesmo.


trecho do exemplo:

Selecionar tudo

rg_id := Create_Group_From_Query( você_rg , você_Fil ); 

vn_aux := Populate_Group( rg_id ); 

vn_aux := get_group_row_count( rg_id );
 
message(vn_aux||' registros.', NO_ACKNOWLEDGE);
  
If vn_aux > 0 Then
  	
   Inicializa_Progressao;
  	
   vn_ubr := 334 / vn_aux;

...

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

Brother,

Não sabia que estava fazendo com Record_Group.
Realmente, na barra de progresso, tem que contar pra fazer a divisão da porcentagem...

Tenta este comando:

Selecionar tudo

 v_tot_registros := get_group_row_count(rg_id);
Outra coisa, tem um exemplo aqui no fórum de barra de progresso... dá uma procurada (por barra de progresso ou progress bar) e, pode se auxiliar nela pra montar a tua.

Qualquer coisa, manda ai.
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

não, não Paulão, eu que me expressei mal

esse exemplo que postei é da tela do outro cara, no caso dele, ele utilizou RG, mas no meu não, só coloquei mesmo o exemplo pra mostrar a idéia dele.

vou dar uma olhada nesses exemplos que você falou

valeu
Responder
  • Informação
  • Quem está online

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