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
Pergunta
Fabiano Furquim
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
Codigo para recuperar a imagem da TabelaNã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
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.