Fórum Foto Firebird FastReport #353491

12/02/2008

0

Olá comunidade...

Estou tentando montar um relatório em FastReport que exibirá as fotos dos clientes cadastrados.

As fotos estão em um campo do tipo Blob, banco Firebird. Porém quando chamo o relatório no FastReport aparece o erro: ´JPEG Error #51´. Procurei esse erro na net, mas não encontrei o que é.

Quando eu apago o objeto Picture do relatório ele aparece corretamento, porém sem as fotos, somente com os dados em texto.

Se alguém souber o que posso fazer, agradeço.


Leandro.schmitk

Leandro.schmitk

Responder

Posts

13/02/2008

Henrytpc

Qual versão do fast vc está usando??? trabalho com fast a + ou- 2 anos e nunca tive problema com imgs


outra pergunta cm vc esta inserindo estas imagens no banco???


Responder

Gostei + 0

13/02/2008

Leandro.schmitk

Estou usando o Fast Report 4.3, e campo do tipo Blob do Firebird para armazenar as imagens. Utilizo uma função do Delphi pra gravar as imagens.


Responder

Gostei + 0

13/02/2008

Henrytpc

Estou usando o Fast Report 4.3, e campo do tipo Blob do Firebird para armazenar as imagens. Utilizo uma função do Delphi pra gravar as imagens.


Leandro,

sua versão é nova, não acredito q seja ela o problema.
poste a sua funcão de inserção para mim dar uma olhada


Responder

Gostei + 0

14/02/2008

Leandro.schmitk

Utilizo a procedure abaixo:

procedure FtGrava(DataSet: TDataSet; BlobFieldName, FileName : PChar);
var
ext : string;
begin
if (DataSet.State in [dsEdit,dsInsert]) then
begin
ext := UpperCase(ExtractFileExt(FileName));
if (ext <> ´.BMP´) and (ext <> ´.JPG´) and (ext <> ´.JPEG´) then
begin
raise EAccessViolation.Create(´Formado de imagem não suportado! Formato suportado: Jpeg ou Bitmap´);
Abort;
end;
try
Jpg := TJpegImage.Create;
MemoryStream := TMemoryStream.Create;
Bitmap := TBitmap.Create;
if (ext = ´.BMP´) then
begin
Bitmap.LoadFromFile(FileName);
Jpg.Assign(Bitmap);
Jpg.Compress;
end
else
Jpg.LoadFromFile(FileName);
Jpg.SaveToStream(MemoryStream);
MemoryStream.Position := OffsetMemoryStream;
(DataSet.FieldByName(BlobFieldName) as TBlobField).BlobType := ftTypedBinary;
(DataSet.FieldByName(BlobFieldName) as TBlobField).LoadFromStream(MemoryStream);
finally
MemoryStream.Free;
Bitmap.Free;
Jpg.Free;
end;
end;
end;


Responder

Gostei + 0

14/02/2008

Leandro.schmitk

Mais uma observação.

Estou desconfiado que seja alguma falha no Banco de Dados, pois tentei montar um relatório no Crystal Report e ao inserir o campo foto, ocorre um erro no editor do Crystal.


Responder

Gostei + 0

14/02/2008

Henrytpc

eu insiro de forma mais simples e nunca tive problema com os bds que utilizo (SqlServer,Access,MSDE);
tenta implementar uma procedimento parecido com este

se for atualizar a tabela é so vc mudar a instrução SQL

procedure InserirFoto(Caminho:string);
var qry:TadoQuery;
begin
if caminho<>´´ then
begin
Qry:=TADOQuery.Create(Self);
Qry.Connection:=AdoConnection1;
Qry.SQL.Clear;
Qry.SQL.Text:=´Insert into tabela(img) values (:img)´;
QrySQL.Parameters.ParamByName(´img´).LoadFromFile(img1,ftBlob);
Qry.execSql;
qry.Free;
end;
end;

o exemplo é bem simples mas é assim que insiro imagens, espero que te ajude pq se for problema no Firebird não irei poder te ajudar pois não conheço

qualquer duvida poste ai


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar