Manipulando cursores e text items

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
balancin
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Qui, 04 Set 2008 11:24 am
Localização: são Paulo - SP

Boa noite

Estou manipulando um cursor e quero ir jogando conteudo dentro de um text item num bloco, estou fazendo assim:

PROCEDURE CONSULTA_TABELA_BLOCO IS
CURSOR cur IS
SELECT ID, ERRO
FROM TABELA;
reg cur%ROWTYPE;
begin
OPEN cur_rejei;

GO_BLOCK('TABELA_BLOCO');

first_record;

LOOP

do_key('create_record');
FETCH cur INTO reg;

:CORRIGIDOS.ID:= reg.ID;

dbms_output.put_line(reg.ID);

EXIT WHEN cur%NOTFOUND;

NEXT_RECORD;

END LOOP;



close cur;

end;

Mas não da certo =(
Ele sempre só escreve as coisas na primeira linha da minha text item, o que estou fazendo de errado !?

Obrigado
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Vê ai se funciona...

Selecionar tudo

PROCEDURE CONSULTA_TABELA_BLOCO IS
	CURSOR cur IS SELECT ID, ERRO
					FROM TABELA;
	reg cur%ROWTYPE;
begin
	OPEN cur_rejei;
	GO_BLOCK('TABELA_BLOCO');
	LOOP
	last_record;
	do_key('create_record');
	FETCH cur INTO reg;
	:CORRIGIDOS.ID:= reg.ID;
	dbms_output.put_line(reg.ID);
	EXIT WHEN cur%NOTFOUND;
	--NEXT_RECORD;
	END LOOP;
	close cur;
end; 
balancin
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Qui, 04 Set 2008 11:24 am
Localização: são Paulo - SP

não =(
Ele ta ficando sempre na primeira linha
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

Olha esse código que coloquei em um botão, em um bloco não base-table:

Selecionar tudo

DECLARE
	CURSOR cur IS
	  SELECT *
	    FROM org_organization_definitions;
	reg cur%ROWTYPE;
BEGIN
	go_block('org_organization_definitions');
	FOR reg IN cur LOOP
		last_record;
	  do_key('create_record');
	  last_record;
	  :org_organization_definitions.organization_code := reg.organization_code;
	  :org_organization_definitions.organization_name := reg.organization_name;
	END LOOP;
	first_record;
END;
balancin
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Qui, 04 Set 2008 11:24 am
Localização: são Paulo - SP

não da certo, ele não sai da primeira linha, dei uma olhada no forum e parece ser o create_record que faz ir pra outra linha certinho, mas não rola, sera que estou errando algo nas propriedades do bloco ?!

Abs
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

Você estava colocando uns comandos desnecessários, tenta assim

begin
OPEN cur_rejei;
GO_BLOCK('TABELA_BLOCO');
LOOP
do_key('create_record');
FETCH cur INTO reg;
:CORRIGIDOS.ID:= reg.ID;
dbms_output.put_line(reg.ID);
EXIT WHEN cur%NOTFOUND;
END LOOP;
close cur;
end;

Esse cursor que você fez retorna mais de um valor??
balancin
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Qui, 04 Set 2008 11:24 am
Localização: são Paulo - SP

ainda volta apenas no primeiro campo do meu text item (multi record) =(
Sim, ele retorna mais de um resultado, tanto que meu teste ele vai retornando varias messages e vai mudando o primeiro campo até chegar o final e ficar com o valor final apenas.
jucruzjc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 11 Jan 2007 10:26 am
Localização: Santa Bárbaba d'Oeste
--
Juliana Cr. Cruz
Analista Desenvolvedor Oracle

Oi!!!

Tente concatenar os valores...


:CORRIGIDOS.ID:= :CORRIGIDOS.ID || chr(10) || reg.ID;

Não dá certo?


Até mais!
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

ola...
veja se a propriedade "single record" do seu bloco esta como "não"... estranho não esta conseguindo almentar os registros do seu bloco...

verifique se neste carregamento não esta dando nenhuma mensagem no forms, tipo quando você não informa valor para algum dos itens, esse tipo de mensagem fica na barra de status do form, no canto inferior esquerdo

abrçs...
t+
Responder
  • Informação