MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 08/09/2012

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  Maicon 14/4/2017, 09:52

    Senhores

    Estou tentando implementar uma rotina que extraia a imagem de um campo OLE e salve em diretório temporário, no exemplo que estou fazendo até extrai mas o arquivo corrompe e não consigo abri-lo.
    Uso ACCESS 2010 32 Bits

    copiei o código  do site : ammara.com/access_image_faq/read_write_blob.html

    O código do módulo é esse :

    Código:
    Option Compare Database

    'Function:  BlobToFile - Extracts the data in a binary field to a disk file.
    'Parameter: strFile - Full path and filename of the destination file.
    'Parameter: Field - The field containing the blob.
    'Return:    The length of the data extracted.
    Public Function BlobToFile(strFile As String, ByRef Field As Object) As Long
        On Error GoTo BlobToFileError

        Dim nFileNum As Integer
        Dim abytData() As Byte
        BlobToFile = 0
        nFileNum = FreeFile
        Open strFile For Binary Access Write As nFileNum
        abytData = Field
        Put #nFileNum, , abytData
        BlobToFile = LOF(nFileNum)

    BlobToFileExit:
        If nFileNum > 0 Then Close nFileNum
        Exit Function

    BlobToFileError:
        MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
               "Error writing file in BlobToFile"
        BlobToFile = 0
        Resume BlobToFileExit

    End Function


    'Function:  FileToBlob - Loads a file into a binary field.
    'Parameter: strFile - Full path and filename of the source file.
    'Parameter: Field - The binary field into which the file is to be loaded.
    Public Function FileToBlob(strFile As String, ByRef Field As Object)
        On Error GoTo FileToBlobError

        If Len(Dir(strFile)) > 0 Then
            Dim nFileNum As Integer
            Dim byteData() As Byte

            nFileNum = FreeFile()
            Open strFile For Binary Access Read As nFileNum
            If LOF(nFileNum) > 0 Then
                ReDim byteData(1 To LOF(nFileNum))
                Get #nFileNum, , byteData
                Field = byteData
            End If
        Else
            MsgBox "Error: File not found", vbCritical, _
                   "Error reading file in FileToBlob"
        End If

    FileToBlobExit:
        If nFileNum > 0 Then Close nFileNum
        Exit Function

    FileToBlobError:
        MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
               "Error reading file in FileToBlob"
        Resume FileToBlobExit

    End Function



    No botão de comando coloquei o código abaixo :

    Código:
    Private Sub SALVAR_OBJETO_Click()
    'Extraia o arquivo contido no campo denominado' Image 'para um arquivo referenciado ao campo ' [caminho] '.
    BlobToFile [caminho], [Image]
    End Sub

    Basicamente preciso salvar o conteúdo de um campo OLE em uma pasta temporária.
    Poderia ser outro código andei lendo sobre filestream, mas neste caso teria que usar ado eu este bicho é meio estranho pra mim. se alguém puder me ajudar agradeço.
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 08/09/2012

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty Re: [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  Maicon 15/4/2017, 07:05

    Localizei um Erro. Já consigo ler os arquivos baixados.
    Não estava funcionando porquê não havia entendido a dinâmica da função

    Funciona assim:

    Código:
    'Leia o arquivo' Image-In.jpg 'para o campo chamado' Image '.
    FileToBlob "C: \ Photos \ Image-In.jpg", [Image]

    Esta parte do código lê o arquivo de entrada de imagem e joga para o campo OLE [image] então quando salvamos o registro a função FileToBlob" já tratou o a imagem, que se fosse salva diretamente com botão direito do mouse o access , O arquivo ficaria truncando no hexadecimal da imagem já que o access salva junto informações do arquivo o que acaba corrompendo o arquivo.

    depois desse passo podemos executar a outra parte do código:

    Código:
    'Extraia o arquivo contido no campo chamado' Image 'para um arquivo chamado' Image-Out.jpg '.
    BlobToFile "C: \ Photos \ Image-Out.bmp", [Image]


    No caso aqui eu alterei a extensão do arquivo de saída para bmp, pois é o que eu preciso para
    exibir a imagem dinamicamente no meu formulário.

    Não vou fechar o tópico ainda, porque quero implementar melhorias no código e disponibilizar para todos no fórum.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7922
    Registrado : 15/03/2013

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty Re: [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  Alvaro Teixeira 3/7/2018, 09:58

    Olá Maicon Fernandes,  

    Obrigado pelo retorno, o fórum agradece.
    Também temos cá este exemplo, pode ajudar outros membros:
    https://www.maximoaccess.com/t23419-resolvido-gravar-upload-arquivos-pdf-jpg-docx-xlsx-zip-em-uma-tabela-vinculada-ao-sql-server

    Nota:
    O título do tópico deve-se colocar apenas na primeira mensagem, depois o fórum repete automaticamente.
    Já regularizei, vou proceder ao ajuste do título do tópico para ficar mais fácil para as "buscas" do fórum.

    Abraço
    avatar
    ismaelruperto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    Registrado : 25/09/2013

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty Re: [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  ismaelruperto 10/3/2023, 04:55

    Pode me ajudar?
    Vi que conseguiu resolver o problema de exportar a imagem de um campo Objeto OLE para uma pasta em formato .jpg ou .bmp.
    Estou precisando muito disso e não consegui fazer funcionar. Se eu postar aqui o banco vc consegue olhar o que eu fiz e me dar uma ajuda?

    Também tive o mesmo problema que vc teve no início: o arquivo de saída foi gerado porém corrompido. Não entendi como vc resolveu. Ficarei muito grato se puder me ajudar. Sem isso vou ter que extrair 3600 imagens na mão. Fora o trabalhão, vou correr o risco de errar os nomes dos arquivos na hora de salvar.

    Obrigado!
    Anexos
    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Attachmentbanco enviar.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 4 vez(es)
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 08/09/2012

    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty Re: [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  Maicon 15/3/2023, 02:10

    Boa noite amigo.
    Infelizmente não baixo mais arquivos no meu PC.
    Se você abrir os módulos VBA vai entender o exemplo, tiver dúvida pode perguntar na medida do possível te ajudo.
    Anexos
    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro AttachmentPhoto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (557 Kb) Baixado 20 vez(es)


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.

    Conteúdo patrocinado


    [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro Empty Re: [Resolvido]Arquivo OLE - BLOB - Extrair dados / Criar ficheiro

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 20/5/2024, 13:57