Exibir um BLOB no Forms

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

Pessoal, bom dia.
Tudo bem?

Não sei se já passaram por isso...
Preciso que, ao clicar em um botão, por exemplo, um usuário veja um PDF gravado na base como Blob.

Nota: Neste procedimento de inserção, utilizo BFILES.

Preciso trazer, como no exemplo, este pdf aberto ao usuário, quando clicar no botão.

Agradeço,
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Fala trevisolli,
Boa tarde amigo,

A dúvida que você está tendo é :
1 - Mostrar para o usuário que as informações estão sendo gravadas?
2 - Abrir o PDF?
3 - Que versão de oracle você utilizar?

É isso ?

Informações complementares:
O BLOB é dado binário de até 4 Gb
O BFILE é dado binário armazenado em um arquivo externo até 4 Gb

Qualquer coisas posta aqui no forum?

Abs Hahu
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

Seguinte brother, tenho uma tela, onde o usuário "guarda" um documento dele no banco de dados.
-> Guarda em um Blob, até ai beleza...

NEste Blob são guardados: Som, Imagem, arquivo texto, pdf, pps, doc etc ...

Eu fiz um bloco listando estes documentos e, quando der duplo clique, eu tenho q abrir em seu respectivo programa (Doc no word, pps no powerpoint) e assim por diante.

A primeira parte (de inserção no banco) está ok, mas, a segunda está pegando e, n ão conheço ninguém que já fez isso.

Utilizo a versão 8i do Banco e Forms 6i.

Agradeço.
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Fala trevisolli,
Segue as informações!!

Selecionar tudo


BEGIN
DECLARE 
PathArq BFILE;
ArqCLOB CLOB;
BEGIN
PathArq:=BFILENAME('IMG','BOMBOM.JPG');
DBMS_LOB.FILEOPEN(PathArq,DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(ArqCLOB,PathArq,dbms_lob.getlength(PathArq)); 
---- CODIGO ONDE MANIPULO O BLOB E FAÓ O QUE TENHO QUE FAZER
dbms_lob.fileclose(PathArq);
END;
END;

Ah...você pode colocar no when_mouse_doubleclick!
Para quando o duas vezes ele chamas..verifque ai :wink:
Qualquer coisas post no forum!
Abs Hahu
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

beleza Hahu, vou tentar e coloco um retorno aqui no fórum pra vocÊs.
Só uma coisa, você utilizou CLOB, no caso de um PDF ou PPS, abre normal?
Grato.
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Boa tarde trevisolli,

Desculpe a gaff :oops: !!
Eu coloquei apenas uma idéia de como resolver :cry:
Acredito que seja por este caminho :wink:

Abs Hahu
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Segue outra maneira:

Selecionar tudo

create or replace procedure insert_arq_lob ( Diretorio varchar2, arquivo varchar2) is 
V_ARQUIVO bfile; 
V_CAMPO_LOB blob; 
V_TAM_ARQUIVO integer; 
begin 
V_ARQUIVO:=bfilename(Diretorio,Arquivo); 
dbms_lob.fileopen ( V_ARQUIVO, dbms_lob.file_readonly ); 
V_TAM_ARQUIVO:=dbms_lob.getlength(V_ARQUIVO); 
insert into docs values (arquivo,empty_blob) 
returning doc into V_CAMPO_LOB; 
dbms_lob.loadfromfile(V_CAMPO_LOB,V_ARQUIVO,V_TAM_ARQUIVO); 
dbms_lob.fileclose(V_ARQUIVO); 

commit; 
end; 
Abs Hahu
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Ah...você pode colocar uns if para verficar se é pdf, xls...word e tal!!

Selecionar tudo


declare         
l_blob    blob; 
l_bfile    bfile;  

begin  

insert into t values ( empty_blob() )  
returning x into l_blob;         

l_bfile := bfilename( 'MY_FILES', 'teste.pdf' );  

dbms_lob.fileopen( l_bfile );  
dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) );      dbms_lob.fileclose( l_bfile ); 
  
end;
Abs Hahu
Responder
  • Informação
  • Quem está online

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