ERRO AO CARREGAR CAMPO BLOB - MYSQL

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

ERRO AO CARREGAR CAMPO BLOB - MYSQL

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#482067 - 02/06/2018 11:56:33

CYBERMAC
RIBEIRAO PRETO
Cadast. em:Dezembro/2008


Pessoal, bom dia!

Mais uma vez peço ajuda de vocês para verificação do erro em meu fonte.
Vamos lá:

1-) Possuo uma tabela de Produtos(pai) onde gravo informações pertinentes ao mesmo, e, uma tabela Foto_Produto(filha) onde nesta contém apenas os campos IdProduto e Imagem(Blob) do MySql.
2-) Quando tenho apenas uma foto, o carregamento é normal, porém, quando há mais de uma foto a mensagem de erro é apresentada conforme descrita:
  2.1-) Invalid Picture.
3-) Anexo Código do projeto onde trato a imagem.
Private Sub btnsair_Click()
   Dim lngImageSize As Long
   Dim lngOffset As Long
   Dim bytChunk() As Byte
   Dim intFile As Integer
   Dim strtemppic As String
   Const conChunkSize = 100
   Dim contador As Integer
  
   'cria variavel para contar registros
   contador = 0

   Select Case mformulario
      Case Is = "ITENSPEDIDO"
         FrmItensPedido.txtproduto = gridprod.Columns(1).Text
         FrmItensPedido.Label6 = gridprod.Columns(2).Text
         FrmItensPedido.txtvalorcompra = Format(gridprod.Columns(4).Text, "#0.00")
      Case Is = "IMPNOTA"
         FrmImpNota.txtproduto = gridprod.Columns(1).Text
         FrmImpNota.Label9 = gridprod.Columns(2).Text
      Case Is = "PRODUTOS"
         FrmProdutos.txtcodbar = gridprod.Columns(9).Text
         FrmProdutos.txtcodigo = gridprod.Columns(1).Text
         FrmProdutos.txtdescricao = gridprod.Columns(2).Text
         FrmProdutos.txtestoque = gridprod.Columns(8).Text
         FrmProdutos.txtrefere = gridprod.Columns(3).Text
         FrmProdutos.txtvalorcusto = Format(gridprod.Columns(4).Text, "currency")
         FrmProdutos.txtvalorvenda = Format(gridprod.Columns(5).Text, "currency")
        
         'pesquisa se há foto do produto
         CnxFoto = "Select * From Produto_Foto Where IdProduto =" & gridprod.Columns(1).Text
         Conexao_Servidor (CnxFoto)
         TFoto.Open CnxFoto, cn, adOpenDynamic, adLockOptimistic
          
         If TFoto.EOF Then
            TFoto.Close
         Else
            While (Not TFoto.EOF)
               contador = contador + 1
               TFoto.MoveNext
            Wend
            
            TFoto.MoveFirst
            For i = 0 To contador - 1
               'Make sure the temporary file does not already exist
               strtemppic = App.Path & "\TempPic.jpg"
               If Len(Dir(strtemppic)) > 0 Then
                  Kill strtemppic
               End If

              'Open the temporary file to save the BLOB to
              intFile = FreeFile
              Open strtemppic For Binary As #intFile

              'Read the binary data into the byte variable array
              lngImageSize = TFoto("ImageBLOB").ActualSize
              Do While lngOffset < lngImageSize
                 bytChunk() = TFoto("ImageBLOB").GetChunk(conChunkSize)
                 Put #intFile, , bytChunk()
                 lngOffset = lngOffset + conChunkSize
              Loop

              Close #intFile

              'After loading the image, get rid of the temporary file
              FrmProdutos.Imagem(i).Tag = TFoto("IdProduto")
              FrmProdutos.Imagem(i).Picture = LoadPicture(strtemppic)
              Kill strtemppic
            Next i
            TFoto.Close
         End If
   End Select
   Unload Me
End Sub

Agradeço mais uma vez a ajuda.



#482083 - 03/06/2018 08:58:30

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Pelo que percebi (me corrija se estiver errado) você corre todos os registros para pegar a ultima foto, se for isso, use apenas move.last e transfira essa foto

If TFoto.EOF Then
              TFoto.Close
         Else
              TFoto.MoveLast
            

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#482131 - 05/06/2018 20:41:21

CYBERMAC
RIBEIRAO PRETO
Cadast. em:Dezembro/2008


Damasceno, boa noite!

Desculpe a demora na resposta, porém, estava afastado das minhas atividades por motivos de saúde.

Na verdade não, o que faço é ler a quantidade de fotos existentes do produto para jogá-las nas picturesbox criadas no formulário.
O que ocorre é que quando o item tem apenas 1 foto, o sistema coloca ela corretamente na picturebox, porém, a partir da segunda, já acontece a mensagem de erro.

Grato




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


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário