MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Inserir arquivo de imagem na tabela access 2000 via VBA em campo OLE

    Compartilhe

    PauloRBatista
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 15/05/2018

    Inserir arquivo de imagem na tabela access 2000 via VBA em campo OLE

    Mensagem  PauloRBatista em 16/5/2018, 19:33

    Boa tarde,

    Tenho uma tabela (TAB_IMAGENS) que possui 3 campos (CódigoProduto, URLImagem, Imagem), sendo que:
    - CódigoProduto é campo tipo texto
    - URLImagem é o endereço do arquivo, campo tipo texto (ex: F:\Imagens\foto1.gif)
    - Imagem é um campo de ObjetoOLE onde quero armazenar as imagens

    Tenho um formulário com vários registros e quero que quando clicar no OLE seja adicionado os dados na tabela TAB_IMAGENS

    'Meu código ficou assim
    Private Sub OLEAcopladoImagem_Click()
       Dim Db As Database
       Dim Rst As Recordset
       Dim vCodProd As String
       Dim vURLImagem As String
       Dim vSQL As String

       Set Db = CurrentDb
       Set Rst = Db.OpenRecordset("TAB_IMAGENS")
         
       vCodProd = Nz(Forms!FRM!CxtCodProd, "Não possui código")

       'Verifica se o arquivo de imagem já existe no diretório
       If Len(Dir("F:\Imagens\" & vCodProd & ".gif")) > 0 Then
           vURLImagem = "F:\Imagens\" & vCodProd & ".gif"
           vSQL = "INSERT INTO TAB_IMAGENS(CodProd, URLImagem, ImagemProd) VALUES ('" & vCodProd & "', '" & vURLImagem & "', '" & vURLImagem & "');"
       Else
           MsgBox "Não foi encontrado arquivo de imagem para serem inseridas e exibidas, ou a pasta/caminho foi removido/alterado."
       End If
       
       DoCmd.RunSQL (vSQL)
       Set Rst = Nothing: Close
    End Sub


    A questão é que a instrução INSERT não adiciona a imagem no campo OLE, aparece apenas escrito no campo "DADOS BINÁRIOS LONGOS" e deveria aparecer "Foto do Microsoft Photo Editor 3.0"

    Alguém tem um código para resolver isso?

    Paulo


    Última edição por PauloRBatista em 18/5/2018, 17:29, editado 3 vez(es)
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1141
    Registrado : 05/02/2010

    Insrir arquivo de imagem na tabela access 2000

    Mensagem  good guy em 16/5/2018, 21:08

    Olá Paulo,

    Primeiro, corrija o texto do seu tópico.

    Insrir = Inserir

    Segundo, vc repetiu na string SQL abaixo o nome da variável referente ao arquivo da imagem. Crie uma variável do tipo Variant ou Object para o arquivo de imagem diferente da variável referente ao caminho onde se encontra este arquivo de imagem.

    Código:
    vSQL = "INSERT INTO TAB_IMAGENS(CodProd, URLImagem, ImagemProd) VALUES ('" & vCodProd & "', '" & vURLImagem & "', '" & vURLImagem & "');"

    PauloRBatista
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 15/05/2018

    Re: Inserir arquivo de imagem na tabela access 2000 via VBA em campo OLE

    Mensagem  PauloRBatista em 17/5/2018, 14:32

    Alterei o código criando a variável object mas continua aparecendo a informação de binários longos no campo Imagem

    'Meu código ficou assim
    Private Sub OLEAcopladoImagem_Click()
      Dim Db As Database
      Dim Rst As Recordset
      Dim vCodProd As String
      Dim vURLImagem As String
      Dim vImagem as Object
      Dim vSQL As String

      Set Db = CurrentDb
      Set Rst = Db.OpenRecordset("TAB_IMAGENS")
       
      vCodProd = Nz(Forms!FRM!CxtCodProd, "Não possui código")

      'Verifica se o arquivo de imagem já existe no diretório
      If Len(Dir("F:\Imagens\" & vCodProd & ".gif")) > 0 Then
          vURLImagem = "F:\Imagens\" & vCodProd & ".gif"
          Set vImagem = LoadPicture("F:\Imagens\" & vCodProd & ".gif")
          vSQL = "INSERT INTO TAB_IMAGENS(CodProd, URLImagem, ImagemProd) VALUES ('" & vCodProd & "', '" & vURLImagem & "', " & vImagem & ");"
      Else
          MsgBox "Não foi encontrado arquivo de imagem para serem inseridas e exibidas, ou a pasta/caminho foi removido/alterado."
      End If
     
      DoCmd.RunSQL (vSQL)
      Set Rst = Nothing: Close
    End Sub
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Inserir arquivo de imagem na tabela access 2000 via VBA em campo OLE

    Mensagem  ahteixeira em 17/5/2018, 15:03

    Olá a todos,

    Paulo teste com a dica da mensagem n. 20
    [Você precisa estar registrado e conectado para ver este link.]

    Abraço
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1141
    Registrado : 05/02/2010

    Insrir arquivo de imagem na tabela access 2000

    Mensagem  good guy em 17/5/2018, 22:56

    Olá Paulo,

    Não sei se a dica do Álvaro, nosso moderador, vai funcionar, mas você não pode inserir um arquivo imagem do tipo .gif (formato para intercâmbio de gráficos, do inglês "Graphics Interchange Format") na tabela em campos do tipo objeto OLE, mas só arquivos imagens do tipo .bmp (bitmap), daí o problema de surgir DADOS BINÁRIOS LONGOS. Para imagens com extensão .gif, utilize um container com extensão (.ocx ) o objeto Microsoft Web Browser. Neste caso em especial, as imagens com extensão (.gif) devem ficar guardadas em uma pasta e serem exibidas conforme este código de nosso moderador João Paulo(JPaulo):

    Código:

        Dim objIE As SHDocVw.InternetExplorer
        Set objIE = Me.browser.Object     'browser é o nome do objeto arrastado Microsoft Web Browser
        objIE.Navigate "C:\GIFS\SeuGif.gif"    'Caminho de onde se exibe seu arquivo (.gif) 
        'objIE.Navigate CurrentProject.Path & "\GIFS\SeuGif.gif"    'Localiza seu arquivo em qualquer parte do computador 


    Última edição por good guy em 18/7/2018, 15:52, editado 1 vez(es)

    PauloRBatista
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 15/05/2018

    Re: Inserir arquivo de imagem na tabela access 2000 via VBA em campo OLE

    Mensagem  PauloRBatista em 18/5/2018, 17:28

    Estou usando um micro com Windows XP SP3 e access 2000 instalado, consigo inserir manualmente imagens gifs na TAB_IMAGENS no modo folha de dados e elas aparecem normalmente no formulário mas quero inseri-las no modo VBA usando SQL ou outro método. Talvez se fizer referência do objeto como Microsoft Photo Editor na declaração do objeto, mas não sei como fazê-lo.

    Esse último não funcionou apareceu uma janela escrito:
    - Erro de compilação: o tipo definido pelo usuário não foi definido.
    Selecionou na linha de declaração de variáveis.

      Data/hora atual: 20/7/2018, 15:40