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 sero digitalizados, ocorre que muitos j esto digitalizados mas salvos como PDF no cliente.

A princpio 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 fcil algum 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 contrrio tenho que criar uma rotina para compactar os arquivos e fazer o backup dele tambm.

Como eu fao ento 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
  --      Programao Na Veia     --

Te ajudo , com o maior prazer , porem no espere que eu faa 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 gravao 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 no pode ser encontrado no coleo 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 no 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 no no funciona......
Set Qr.ActiveConnection = CN
Aonde CN. e sua conexo 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
  --      Programao Na Veia     --

Te ajudo , com o maior prazer , porem no espere que eu faa 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
  --      Programao Na Veia     --

Te ajudo , com o maior prazer , porem no espere que eu faa 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