Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema para Visualizar Imagem do Bco de Dados


Fabiano Furquim

Pergunta

Bom dia a todos.

Estou com um problema o qual não consegui chegar a uma solução, Utilizo o Delphi 7 e bco de dados Firebird 2.

Estou carregando imagens no minha tabela de dados chamada TBLFOTO, q é composto de 2 campos(Codigo tipo integer e FOTO do tipo Blob), uso essa tabela apenas para as imagens já q são poucas, elas são carregadas sem nenhum problema, mas quando tento visualiza-las, consigo apenas visualizar a última imagem q inclui no baco.

Não sei onde posso estar errando, se alguém puder me auxiliar, fico agradecido.

OBS.: Estou carregando imagens do tipo JPEG.

Segue abaixo os Códigos pra Gravar e Visualizar as Imagens

Codigo Para Carregar

procedure TForm1.BitBtn2Click(Sender: TObject);  //Utilizo esse procedimento para carregar uma imagem no Timage
begin                                                 
OpenPictureDialog1.Execute;
    If OpenPictureDialog1.FileName <> '' Then
    begin
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);  // Aki carrego as imagens no Bco, na verdade faço um update na tabela
var
m: TIBQuery;
begin
  m:= TIBQuery.Create(Self);
  m.DataBase :=  DM.IBDatabase1;
  m.Transaction := DM.IBDatabase1.DefaultTransaction;
  //Inicio Brincadeira
  m.SQL.Clear;
  m.SQL.Add('UPDATE TBLFOTO');
  m.SQL.Add('SET CODIGO= :COD,');
  m.SQL.Add('FOTO= :FOTO');
  m.SQL.Add('WHERE CODIGO=:COD');
  try
    M.ParamByName('COD').AsInteger := STRTOINT(EDIT1.Text);
    b:=TMemoryStream.Create;
    image1.Picture.Graphic.SaveToStream(b);
    m.ParamByName('FOTO').LoadFromStream(b,ftBlob);
    m.ExecSQL;
    Application.MessageBox('Foto Carregada com Sucesso!','Sucesso :');
  except
    on e:exception do
      begin
        Application.MessageBox(Pchar(e.Message), 'Erro ao Atualizar dados :');
        b.Destroy;
        m.Free;
        Exit;
      end;
  end;
  b.Destroy;
  m.Free;
end;
Codigo para recuperar a imagem da Tabela
procedure TForm2.Button1Click(Sender: TObject);
var
m : TIBQuery;
b : TStream;
J : TJPEGImage;
begin
  J := Nil;
  m:= TIBQuery.Create(Self);
  m.Database := DM.IBDatabase1;
  m.Transaction := DM.IBDatabase1.DefaultTransaction;
  m.SQL.Clear;
  m.SQL.Add('SELECT foto FROM TBLFOTO');
  m.SQL.Add('WHERE codigo= :cod');
  try
    m.ParamByName('cod').AsInteger := strtoint(edit1.Text);
    m.Open;
  except
  on e:exception do
  begin
    Application.MessageBox(Pchar(e.Message),'Erro ao Buscar foto');
    exit;
  end;
  end;
  b:= m.CreateBlobStream(m.FieldByName('FOTO'),bmRead);
  if b.Size > 0 then
  begin
    try
      J := TJPEGImage.Create;
      J.LoadFromStream(b);
      Image1.Picture.Assign(J);
    except
    end;
  end
  else
  begin
    Image1.Picture.Assign(nil);
  end;
  j.Free;
  b.Destroy;
  m.Free;
end;

Não esquecendo q declarei nas clausula use a unit JPEG

Desde já agradeço pela atenção e ajuda de Todos

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Fala Galera ....

Consegui resolver o problema....

O problema estava na hora da Atualização... eu esta atualizando o código também, o que eu não preciso fazer, já que no caso eu queria apenas acrescentar a imagem...

Segue o Código corrigido, caso alguém precise...

procedure TForm1.BitBtn1Click(Sender: TObject);
var
m: TIBQuery;
begin
  m:= TIBQuery.Create(Self);
  m.DataBase :=  DM.IBDatabase1;
  m.Transaction := DM.IBDatabase1.DefaultTransaction;
  //Inicio Brincadeira
  m.SQL.Clear;
  m.SQL.Add('UPDATE TBLFOTO');    
  m.SQL.Add('SET FOTO= :FOTO');  // aqui foi retirado a atualização do código
  m.SQL.Add('WHERE CODIGO=:COD'); // e foi mantida a atualização da Foto
  try
    M.ParamByName('COD').AsInteger := STRTOINT(EDIT1.Text);
    b:=TMemoryStream.Create;
    image1.Picture.Graphic.SaveToStream(b);
    m.ParamByName('FOTO').LoadFromStream(b,ftBlob);
    m.ExecSQL;
    Application.MessageBox('Foto Carregada com Sucesso!','Sucesso :');
  except
    on e:exception do
      begin
        Application.MessageBox(Pchar(e.Message), 'Erro ao Atualizar dados :');
        b.Destroy;
        m.Free;
        Exit;
      end;
  end;
  b.Destroy;
  m.Free;
end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...