[firebase-br] ClientDataSet + Blob + Jpeg

Fabrício Fadel Kammer ffkammer em conchalnet.com.br
Sex Nov 21 16:15:08 -03 2008


Boa tarde à todos!

Terminando a migração para o ClientDataSet encontrei mais um problema e 
não consigo achar a solução em lugar nenhum. O problema agora é eu 
conseguir armazenar uma imagem JPEG em um campo Blob do clientdataset 
(enquanto usava TIBDataSet funiconava perfeitamente).

Uso o código abaixo para gravar a imagem no banco:

var
  MemStream: TStream;
  Jpg: TJpegImage;
begin
  if dlgAbrir.Execute then
  begin
    MemStream := 
dmTabPrincipal.cdsDadosProprio.CreateBlobStream((dmTabPrincipal.cdsDadosProprioLogotipo 
as TBlobField),bmWrite);
    Jpg := TJPEGImage.Create;
    Jpg.LoadFromFile(dlgAbrir.FileName);
    Jpg.SaveToStream(MemStream);
    MemStream.Free;
    Jpg.Free;
  end;
end;

E para recuperar a imagem:

MemStream := dmTabPrincipal.cdsDadosProprio.CreateBlobStream( ( 
cdsDadosProprioLogotipo as TBlobField ) , bmRead );
Jpg := TJpegImage.Create;
try
  Jpg.LoadFromStream(MemStream);
  imgLogotipo.Picture.Assign( Jpg );
finally
  Jpg.Free;
  MemStream.Free;
end;


Logo em seguida ao gravar o Logo no banco de dados através do 
ClientDataSet se eu carregar a imagem usando o método acima funciona 
corretamente, porém após fechar o ClientDataset e abrí-lo novamente não 
consigo mais carregar a imagem, recebo o erro: "JPEG error #50".

Alguém saberia como solucionar esse problema?

Obrigado

Fabrício




Mais detalhes sobre a lista de discussão lista