Somar somente os registros que estão visíveis no bloco

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
vindalencio
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 140
Registrado em: Qui, 16 Fev 2006 9:42 am
Localização: Curitiba
Vanderlei Indalencio

Ai pessoal,

Tenho um bloco com 1000 registros e mostro apenas 10 na tela, necessito fazer um campo que some todos os registros, Beleza consegui.

Agora necessito de um campo que some somente os registros que estão na tela, quando mudo os registros é necessário refazer a conta, pois deverá mostrar a soma somente do que está mostrando.

Se alguém puder me ajudar agradeço. :o
aoliveira
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Seg, 24 Out 2005 11:46 am
Localização: Blumenau-SC
[ Alex ]

Tenta setar a propriedade Query all recosds do bloco para "NO".
Aí ele só vai somar os que estão aparecendo.
Espero que ajude. :wink:
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

Acho que não é tão simples... Digamos que tenha 100 registros ao todo e na tela está sendo mostrado os registro de 20 a 30...

Pelo que eu entendi, ele quer a soma desses que estão aparecendo. (ou seja, de 20 a 30).

:roll:
schnu
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 110
Registrado em: Ter, 24 Mai 2005 9:16 pm
Localização: Dongguan - Guangdong - China

se é para calcular o que esta na tela, faca algo parecido com isso

Selecionar tudo

procedure calcula_valor is
 --
 v_valor number := 0;
begin
  --
  go_block ('nome do bloco');
  first_record;
  --
  loop
    --
    v_valor := v_valor + :bloco.nome_do_campo_que_tem_o_valor;
    --
    exit when :system.last_record = 'TRUE';
    next_record;
    --
  end loop;
  --
  :bloco.campo_resultado := v_valor;
   --
end;
se te entendi isso de resolver
vindalencio
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 140
Registrado em: Qui, 16 Fev 2006 9:42 am
Localização: Curitiba
Vanderlei Indalencio

Dr_Guri está com razão, pois não é simples assim...

Nenhuma das soluções funcionaram, pois a primeira não faz nada e a ultima solução soma tudo do bloco.....

Depois de muita Kebra-Cabeça fiz algo assim:

Selecionar tudo

DECLARE
  
  v_registro_topo number;
  W_RECORD number;
  total number := 0;

BEGIN
v_registro_topo := get_block_property('sat5_verba_processo',top_record);
W_RECORD := get_block_property('sat5_verba_processo',top_record);

while W_RECORD <= (v_registro_topo+7) loop
    go_record(W_RECORD);
    total := total + :sat5_verba_processo.sat5_vl_atualizado; 
    W_RECORD := W_RECORD+1;
    
end loop;
message(to_char(total,'999G999G990D00'));
	
END;
Funcionou
Responder
  • Informação
  • Quem está online

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