Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ThaisN

[Resolvido] Campo Blob Oracle

Recommended Posts

Olá amigos!

 

Tenho uma aplicaçao em Visual Basic e preciso abrir um documento PDF que está armazenado em um campo do tipo BLOB no Oracle.

 

Agradeço muito a ajuda de vocês!

 

Saludos desde España!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá ThaisN.

 

Você precisa que seu programa leia o conteúdo e exiba num textbox por exemplo ou simplesmente que o arquivo abra com o Adobe Reader por exemplo?

 

Se for só para abrir, utilize a funcção shell. Exemplo:

 

shell ("calc")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá ThaisN.

 

Você precisa que seu programa leia o conteúdo e exiba num textbox por exemplo ou simplesmente que o arquivo abra com o Adobe Reader por exemplo?

 

Se for só para abrir, utilize a funcção shell. Exemplo:

 

shell ("calc")

Preciso abrir o PDF.

Náo entendi bem a soluçao. O que é calc? Eu crio uma variavel do tipo blob no Visual Basic que recebe o PDF? Como eu faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se executar a função que te passi no VB ele irá abrir a calculadora do windows.

 

Para abrir seu arquivo, substitua "calc" pelo endereço do arquivo.

Só me tire uma dúvida, disse que está armazenado em um campo blob, de início entendi que no banco você tivesse o caminho do arquivo, mas acho que esse blob armazena o arquivo em forma binária no banco né?

 

Se for isso, você precisa primeiro "desconverter" esse arquivo de sua forma binária e depois utilizar o shell.

Tente utilizar essa dica. Ela foi dada para trabalhar com imagem, mas ensina como transformar o código binário em arquivo. Talvez lhe sirva.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se executar a função que te passi no VB ele irá abrir a calculadora do windows.

 

Para abrir seu arquivo, substitua "calc" pelo endereço do arquivo.

Só me tire uma dúvida, disse que está armazenado em um campo blob, de início entendi que no banco você tivesse o caminho do arquivo, mas acho que esse blob armazena o arquivo em forma binária no banco né?

 

Se for isso, você precisa primeiro "desconverter" esse arquivo de sua forma binária e depois utilizar o shell.

Tente utilizar essa dica. Ela foi dada para trabalhar com imagem, mas ensina como transformar o código binário em arquivo. Talvez lhe sirva.

 

Abraços.

 

Pois e, o blob guarda o arquivo, nao a ruta.

Vou tentar essa solucao e depois te digo.

 

Brigadao.

 

Abracos,

 

Thais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela ajuda Cludio, mas o post náo me ajudou muito... :unsure:

Eu náo sei o que fazer com a minha variavel blob que leio do Oracle.

 

Meu código está assim:

 


Private Sub BuscaBlob()
     Dim pipe2 As OriginatingPipe
     Dim lista2 As GRecordset
     Dim archivo
     
     If IsNull(cbmultmedia.Text) Or Trim(cbmultmedia.Text) = "" Then
        MsgBox "El camp multimèdia no pot estar en blanc", vbCritical
     Else

         objConnORA.CreateOriginatingPipe pipe2
         
         pipe2.Table = "CMULTIMEDIAOBJ"
                  
         pipe2.Filter = "ipid =" & mmipid
                  
         Set lista2 = pipe2.OutputRecordset
                  
         Dim cont
         cont = lista2.RecordCount
                  
         If cont > 0 Then
                
            archivo = lista2.GFields("BOBJ")
           
        End If
     End If

End Sub

O que eu faço com a variável archivo para poder abrir o aquivo?

 

Uma luz, por fvor!

 

Muito obrigada a todos!

 

Thais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar essa segunda parte do código:

Dim byARQUIVO() As Byte
Dim sSQL As String
Dim strTEMP  As  String

  byARQUIVO()  =  MeuRecordset![ca_arquivo]

  strTEMP = App.Path & "\Arq_TMP.tmp"

  Open strTEMP For Binary As #1

  Put #1, , byARQUIVO()

  Form.Picturebox.Picture = LoadPicture(strTEMP)

  Close #1

O valor que está passando para a variável archivo, passe para byARQUIVO().

E troque

  Form.Picturebox.Picture = LoadPicture(strTEMP)
por

shell strTemp

Advertindo que nunca fiz isso, é um teste, e espero que funcione.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Claudio! Valeu pela dica.

O meu código funcionou assim:

 


Dim byARQUIVO() As Byte
            Dim sSQL As String
            Dim strTEMP  As String
            byARQUIVO() = archivo
            strTEMP = App.Path & "\Arq_TMP.tmp"
            Open strTEMP For Binary As #1
            Put #1, , byARQUIVO()
            Close #1
            Shell "C:\Archivos de programa\Adobe\Acrobat reader 9\AcroRd32.exe D:\Dades\thais\GeomediaCommandGestioPatri\bin\Arq_TMP.tmp"
                             
                 

Como você pode ver para que ele me abra el Acrobat Reader ( Shell strMEMP náo funciona no meu caso) eu tenho que passar o directório onde está o meu .exe. Tem alguma maneira de fazer isso mais dinâmica? Assim se o usuario muda o path do Acrobat o aplicativo para de funcionar.

 

Brigadáo mais uma vez!!!!

 

Abraços,

 

Thais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, fiquei até feliz agora que deu certo. Fiz tudo no chutômetro pra você... uhauhauhahu

 

Eita, fica difícil o que você quer, acho que não tem como ele descobrir sozinho onde está instalado o acrobat e usar o endereço.

Mas o que pode fazer é usar um arquivo .cfg que indica o endereço de instalação do acrobat. Assim pelo menos se alguém alterar, é mais fácil alterar o .cfg do que o código fonte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandou super bem Claudio!!!!

 

Tem como você colocar um exemplo de como usar esse arquivo .cfg?

Eu tenho que buscar ele de onde? Ler que linha?

 

BRIGADA!!!

 

Thais

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um arquivo texto normal, só utilizando a extensão cfg. Para escrevê-lo e lê-lo utilize o componente FileSytemObjct (FSO).

 

Escreva uma linha por exemplo assim:

end:"c:/arquivos de programas/acrobat/reader.exe"

 

Depois só ler o conteúdo e usar no programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.