Foto Firebird FastReport
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.
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
Curtidas 0
Respostas
Henrytpc
12/02/2008
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???
outra pergunta cm vc esta inserindo estas imagens no banco???
GOSTEI 0
Leandro.schmitk
12/02/2008
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.
GOSTEI 0
Henrytpc
12/02/2008
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
GOSTEI 0
Leandro.schmitk
12/02/2008
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;
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;
GOSTEI 0
Leandro.schmitk
12/02/2008
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.
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.
GOSTEI 0
Henrytpc
12/02/2008
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
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
GOSTEI 0