como faço para importar um arquivo pdf para um forms?

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

como faço para importar um arquivo pdf para um forms?
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

Maristela, tudo bem?

Você gostaria de exibir um arquivo pdf, do forms?
Tipo, o usuário clica no pdf e ele abre via forms?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

na verdade preciso imprimir esse arquivo PDF pelo forms ou pelo reports, tenho que abrir o PDF e imprimir, ele já vem com os dados e principalmente no formato certo.
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

Então Maristela,

Eu tenho um exemplo aqui, para te mostrar na tela (daí você pode imprimir etc), caso o pdf (ou qualquer outro tipo DE) esteja salvo num BLOB, no banco.

Você deve criar um Item no teu Forms, do tipo OLE Container, com as seguintes características:

Selecionar tudo

Item Type               = OLE Container
OLE In-place Activation = No
OLE Tenant Types        = Embedded
Show OLE Tenant Types   = No
OLE Tenant Aspect       = Thumbnail Preview
Database Item           = Yes
Column Name             = Nome_da_Coluna_Blob
Agora, provavelmente você tenha este arquivo no sistema operacional, e não no banco, correto?

Caso positivo, terei que dar uma olhada, pois não tenho nada pronto.

qualquer coisa, manda ai.
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

É UMA NOTA FISCAL, NA VERDADE UM DANFE (NOTA FISCAL ELETRONICA), O ARQUIVO PDF ESTARÁ ARMAZENADO NO CAMPO NF_PDF_BBL.

SQL> DESC CNFE_NFEPDF
Name Null? Type
------------------------------ ----------- -------- -------------------
CD_EMP NOT NULL NUMBER(3)
CD_FIL NOT NULL NUMBER(2)
TP_ESPECIE NOT NULL VARCHAR2(3)
SR_FISC NOT NULL VARCHAR2(3)
NR_FISC NOT NULL NUMBER(10)
NF_PDF_BBL BLOB <-----

ESTÁ FORMATADA COMO DEVE DEVE SER E JÁ COM DADOS, SE CONSEGUISSE IMPRIMIR DO FORMS SERIA UMA MARAVILHA, MUITA GENTE POR AÍ NÃO CONSEGUIU.
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

Então Maristela,

Coloca esse campo na tela, conforme lhe orientei no tópico anterior, criando um OLE_Container.

É pra dar certo sim.

qualquer coisa, dá um alô, ok?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

O BLOCO DESTE CAMPO BLOB DEVE PERTENCER A TABELA? E TRAGO ELE ATRAVES DE UMA CONSULTA NORMAL?
QUAL A MELHOR MANEIRA DE ENVIAR ESTE ARQUIVO PARA A IMPRESSORA?
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

Este item deve pertencer à tabela sim.
Aquele campo que você mencionou acima, ser Blob.
A melhor forma, quando der duplo-clique no item, ele irá abrir a opção de imprimir, do próprio Adobe.
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

CRIEI O BLOCO COM BASE NA TABELA QUE CONTEM O CAMPO BLOB, E CRIEI NO CANVAS UM CAMPO BASE TABLE,NOME DO BLOB NA BASE,TIPO OLE. (QUE TAMANHO DEVO DEIXÁ-LO ?)
EXECUTEI O FORMS , O CAMPO APARECE EM BRANCO, SE DER DOUBLE-CLICK NELE NADA ACONTECE, SE DER F8 DÁ UMA MENSAGEM QUE NÃO TEM ITENS QUERYABLE. COMO PROCEDO NESTA ESTAPA?
FALTOU ALGUMA CONFIGURAÇÃO OU UMA TRIGGER ESPEFICA QUE DEVO ESCREVER PARA O CAMPO OLE?
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

Maristela,

Teu campo Blob está como Database Item = Yes e Column Name = nome da coluna da Base?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

sim esta.
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

Maristela,

Esse bloco possui doctos Blob inseridos na base?
você dá duplo-clique e nada?
Caso não consiga, dá um alô que posto um exemplo que tenho aqui na máquina ok?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

SIM ESTA ...
O QUE DEVERIA APARECER NO CAMPO?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

AQUI APARECE EM BRANCO ...
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

No caso, se você tem um PDF guardado neste campo Blob, era pra ele abrir, automaticamente no Adobe.

Vou procurar um exemplo que eu tinha e, posto aqui ok?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

ok, obrigado.
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

Maristela,

Este exemplo em anexo, trabalha com a tabela EMP e, uma filha dela que criei aqui, senão me engano, EMP_DOCTO.

Crie esta segunda tabela, deve ter uma sequencia, o código do empregado e, o docto (blob).

Aqui funciona perfeitamente, você pode anexar qualquer tipo de arquivo no Banco e, recuperá-lo através do forms.

Download FMB

Caso não consiga montar, dá um alo que vejo se tenho os scripts de criação, tudo bem?
MARISTELAFALCO
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Seg, 17 Mar 2008 2:31 pm
Localização: MARINGA-PR

Olá Trevisolli,

Obrigado pelo exemplo, funciona certinho.
Ele pega um arquivo do sistema operacional e joga no campo blob do forms , o campo aparece populado e o double click funciona abrindo um editor para impressão, e se salvar grava na base certinho.
O que não estou conseguindo fazer é resgatar da base, quando consulto o registro o campo do bloco não aparece com os dados, apesar de ter sido gravado na base.
Eu preciso pegar o conteúdo da coluna blob na base e jogar no bloco forms, executo a consulta mas a coluna não aparece com os "riscos" como quando pego do sistema operacional, mesmo no seu exemplo da emp.
Tem alguma instrução específica para pegar da base e jogar no bloco ??? (tipo essas forms_ole )

Att.

Maristela
rsjahnke
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Ter, 11 Set 2007 10:16 am
Localização: Cachoeirinha/RS
Contato:
Rogerio Jahnke

Maristela, boa tarde, conseguiu resolver o problema de recuperar as imagens gravadas trazendo na query para o forms? estou com mesmo problema que você, se tu conseguiu resolver coloca ai a solução,se tem alguma trigger ou algo assim que tenha que fazer no pre-query para trazer a imagem.


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:

Acho que pdf você só vai conseguir baixar em algum diretório...
Segue um script que faz isso... talvez te ajude...

Selecionar tudo


DECLARE
  --  
  vBlob     BLOB;
  vTamanho  INTEGER;
  vFile     utl_file.file_type;
  vAmount   BINARY_INTEGER := 32767;
  vPosicao  INTEGER := 1;
  vBuffer   RAW(32767);
  vArquivo  VARCHAR2(30);
  --
BEGIN
  --
  SELECT documento
    INTO vBlob
    FROM doc_ass_dig
   WHERE id_doc_ass = 589
     AND status     = 'L'
     AND id_tp_doc  = 2;
  --
  vTamanho := dbms_lob.getlength(vBlob);
  vArquivo := 'teste.pdf';
  vFile := utl_file.fopen( 'coloque aqui o diretório destino', 
                           vArquivo, 
                           'w', 
                           32767 );
  --
  WHILE vPosicao < vTamanho LOOP
    --
    IF vPosicao + vAmount > vTamanho THEN
      vAmount := (vTamanho + 1) - vPosicao;
    END IF;
    --
    dbms_lob.read(vBlob, vAmount, vPosicao, vBuffer);
    utl_file.put_raw(vFile, vBuffer, TRUE);
    vPosicao := vPosicao + vAmount;
    --
  END LOOP;
  --
  utl_file.fclose(vFile);
  --
END;
andreavila
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 25 Jun 2008 2:16 pm
Localização: Porto Alegre

Estou tentando baixar o pdf mas dá um erro "ERROR: Abnormal termination, Error Code: C0000005 ACCESS_VIOLATION" quando vai executar o "dbms_lob".
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Desculpe desenterrar este tópico, porem minha dúvida tem a ver com o assunto.

Quero abrir o PDF via forms.

Não tenho ele em um campo Blob, porem tenho ele em disco, tenho o caminho e nome dele em uma tabela. Consigo atraves desse OLE Container abri-lo.

Consegui de outra forma, sem usar o OLE e passando o caminho do executavel do reader... porem gostaria de uma forma onde só passasse o nome do PDF e o "windows" se virasse, até porque o "danado" sabe que o que abre PDF é o acrobat reader.

Obrigado desde já.
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Tinha conseguido de outra forma(DDE.app_begin), agora lembrei do famoso HOST ¬¬

Consegui, porem ao usar o HOST com o atributo no_screen, ao fechar o pdf, trava o runtime que o chamou....

Se chamo sem este atributo, tenho q fechar o prompt para voltar a minha aplicação(runtime).. funciona, porem não queria mostrar o prompt.

alguém sabe o que acontece?

Obrigado desde já.
e_muniz
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 19
Registrado em: Qua, 01 Jul 2009 10:35 am
Localização: Belo Horizonte / MG

Pessoal, me desculpem por reabrir um tópico antigo, mas a necessidade fala mais alto.

O exemplo gentilmente fornecido pelo colega "Trevisolli" funcionou que é uma beleza, fiz um módulo de importação de diversos aquivos para minha base. (de todo o tipo). Porém, agora, eu preciso fazer o sentido inverso do exemplo fornecido. (ou seja) pegar um arquivo que está num campo tipo blob, e gravá-lo em um determinada pasta. O utl_file grava certinho, mas no servidor, e eu preciso gravar na máquina "cliente" onde o forms estará rodando...

Alguém (por favor) consegue me ajudar:? :?

At.

Ernandes
Avatar do usuário
ecio
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 31 Jul 2012 1:00 am
Localização: Salvador-BA
"É o grau de comprometimento que determina o sucesso e não a quantidade de seguidores."

Olá pessoal,

e então, alguém conseguiu gravar na máquina "cliente" onde o forms estará rodando...
Responder
  • Informação
  • Quem está online

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