Fórum Foto Firebird FastReport #353491
12/02/2008
0
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
Curtir tópico
+ 0Posts
13/02/2008
Henrytpc
outra pergunta cm vc esta inserindo estas imagens no banco???
Gostei + 0
13/02/2008
Leandro.schmitk
Gostei + 0
13/02/2008
Henrytpc
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
14/02/2008
Leandro.schmitk
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
14/02/2008
Leandro.schmitk
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
14/02/2008
Henrytpc
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
Clique aqui para fazer login e interagir na Comunidade :)