GRAVAR PDF DENTRO DO SQLSERVER

 Tópico anterior Próximo tópico Novo tópico

GRAVAR PDF DENTRO DO SQLSERVER

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#337960 - 26/03/2010 10:29:01

RODEOLIVEIRA
DESCALVADO
Cadast. em:Maio/2009


Bom dia a todos....


Estou desenvolvendo um sistema que vai gerenciar "Arquivo Morto", só que todos os documentos do arquivo morto serão digitalizados, ocorre que muitos já estão digitalizados mas salvos como PDF no cliente.

A princípio eu iria salvar no banco somente o Path do arquivo e o arquivo em si em uma pasta da rede, mas estou seriamente preocupado em fazer dessa forma, pois assim ficaria muito fácil alguém acessa a pasta e apagar alguns arquivos e comprometer o sistema, outro problema que estou preocupado é quando ao backup, pois se estiver tudo dentro do banco eu mando ele rodar um backup e pronto, tudo salvado, caso contrário tenho que criar uma rotina para compactar os arquivos e fazer o backup dele também.

Como eu faço então para salvar um pdf dentro de um banco sqlserver 2000


Rodrigo

Rodrigo Alexandre de Oliveira

Resposta escolhida #337962 - 26/03/2010 10:57:28

MADMAX
S.B.CAMPO
Cadast. em:Outubro/2004


Tem que gravar em um campo do tipo binario , segue abaixo um codigo de Exemplo .... de como Abrir e Gravar Binario no banco de Dados, espero que te ajude .. o tipo de dados e o tipo e BLOB ..
Aqui um link sobre este tipo.
http://www.macoratti.net/08/11/asp_blobs.htm

Gravando dados no banco .

Dim buffer() As Byte
Dim FileLenght As Long
Dim FileId As Long
Dim Qr As New ADODB.Command
FileId = FreeFile
Open sCaminhoDoArquivo For Binary Access Read As FileId
FileLenght = LOF(FileId)
ReDim buffer(FileLenght)
Get FileId, , buffer()

Qr.CommandText = "insert into TBPDF (TBPDF_ARQUIVO) VALUES (?)"
Qr.Parameters(0).AppendChunk buffer()
Qr.Execute


Para Pegar os dados  do Banco e tranformar novamente em arquivo
Dim AuxV As Variant
Dim AuxV2 As Variant
Dim buffer() As Byte
Dim FileId As Long
    FileId = FreeFile
    Open sCaminhoTemp For Binary Access Write As FileId
    AuxV = Null
    AuxV2 = Null
    AuxV = Re("TBPDF_ARQUIVO").GetChunk(1024)
    Do While Not IsNull(AuxV)
        AuxV2 = AuxV2 & AuxV
        AuxV = Re("TBPDF_ARQUIVO").GetChunk(1024)
    Loop
    If Not IsNull(AuxV2) Then
        ReDim buffer(Len(AuxV2))
        buffer = AuxV2
        Put FileId, , buffer
        Close FileId
    End If
    Close FileId
    Screen.MousePointer = vbDefault
    MDIMain.Status.Panels(1).Text = ""

MARCO - Lenda Urbana - MADMAX
  --      Programação Na Veia     --

Te ajudo , com o maior prazer , porem não espere que eu faça para você . Pois se eu fizer nada você ira aprender !

#337971 - 26/03/2010 11:58:09

FABIO.PIZA
JUNDIAI
Cadast. em:Janeiro/2004


Uma ideia seria gravar o arquivo pdf em um diretorio especifico, e na base sql somente onde esta o arquivo e o que se trata, pois a gravação binaria dentro de uma base de dados tem a comprometer o tamanho e performance, fora o risco que se corromper a base voce perder todos os registros importados do pdf.

Fabio




#338127 - 29/03/2010 14:40:21

RODEOLIVEIRA
DESCALVADO
Cadast. em:Maio/2009


MADMAX

Estou usando o SQLServer 2000.

No tipo de campo estou colocando Image, se entendi bem na linha Qr.CommandText = "insert into TBPDF (TBPDF_ARQUIVO) VALUES (?)"
eu tenho que trocar TBPDF pelo nome de minha tabela e em TBPDL_Arquivo pelo nome de meu campo, mas ele me reporta um erro na linhda Qr.Parameters(0).AppendChunk buffer() dizendo que "O intem não pode ser encontrado no coleção correspondente ou ao ordinal solicitado.



Rodrigo Alexandre de Oliveira

#338151 - 29/03/2010 17:29:27

MADMAX
S.B.CAMPO
Cadast. em:Outubro/2004


RODEOLIVEIRA não sei pode ser Tipo Image ... como citei e o Tipo "Blob" ... ou acho que pode ate ser o Tipo "Text"  que e o que uso aqui ,E Isso mesmo TBPDF  e o nome da tabela e o TBPDF_ARQUIVO .Lembrando que se voce colocar mais campos no insert o indice muda por exemplo... Agora que vi ops desculpa falta um comando mesmo se não não funciona......
Set Qr.ActiveConnection = CN
Aonde CN. e sua conexão com o banco .Isso tem que ficar antes do insert ou update  so para complementar vou passar um exemplo de update


insert into TBPDF (TBPDF_ID,TBPDF_ARQUIVO) VALUES (?,?)"
Qr.Parameters(0).Value = 1
Qr.Parameters(1).AppendChunk buffer()
Qr.execute

Update
Qr.SQL = "update TBPDF Set TBPDF_ID = ? ,TBPDF_ARQUIVO = ? WHERE  CONDICAO"
Qr.Parameters(0).Value = 1
Qr.Parameters(1).AppendChunk buffer()
Qr.execute


Qualquer coisa estamos ai..

MARCO - Lenda Urbana - MADMAX
  --      Programação Na Veia     --

Te ajudo , com o maior prazer , porem não espere que eu faça para você . Pois se eu fizer nada você ira aprender !

#338335 - 31/03/2010 16:12:15

MADMAX
S.B.CAMPO
Cadast. em:Outubro/2004


Deu certo ?

MARCO - Lenda Urbana - MADMAX
  --      Programação Na Veia     --

Te ajudo , com o maior prazer , porem não espere que eu faça para você . Pois se eu fizer nada você ira aprender !

#338350 - 31/03/2010 22:24:19

RODEOLIVEIRA
DESCALVADO
Cadast. em:Maio/2009


Deu sim... valeu...

Rodrigo Alexandre de Oliveira

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por RODEOLIVEIRA em 31/03/2010 22:24:50