读书人

做过FastReport打印图片的请进解决方法

发布时间: 2012-08-26 16:48:05 作者: rapoo

做过FastReport打印图片的请进
图片存在数据库中,BMP和JPG格式都有,但是数据集中有些记录是空的,没有图图,打印时却显示了别人的照片,我写的代码如下:
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
var MS1,MS2:TMemoryStream;
i:integer;
C:byte;
ImageType,sFileName:String;
begin
try
MS1:=TMemoryStream.Create;
MS2:=TMemoryStream.Create;
TBlobField(self.Qry_Data.FieldByName('C1101')).SaveToStream(MS1);
MS1.Position:=0;
MS1.Seek(0,0);

if MS1.Size<=0 then exit;
ImageType := '';
for i := 0 to 3 do
begin
MS1.Read(C, 1);
ImageType := ImageType + Char(C);
end;

ImageType := Trim(ImageType);
if pos('JJJ',ImageType)>0 then ImageType:='JPG';

MS2.Clear;
for I := 0 to MS1.Size - 3 do
begin
MS1.Read(C, 1);
MS2.Write(C, 1);
end;
//将图片流保存到临时文件中
MS2.Seek(0, 0);
sFileName:=sFileName+'.'+ImageType;
MS2.SaveToFile(sFileName);

if (Sender is TfrxPictureView) then
(Sender as TfrxPictureView).Picture.LoadFromFile(sFileName); //这里总是会载入,

finally
if Assigned(MS1) then
MS1.Free;
if Assigned(MS2) then
MS2.Free;
end;
end;

[解决办法]
每一笔数据都要设置,不然后面的值会和前面的一样

加上判断,值为空的时候,图片也清空

[解决办法]
我用fastreport直接连接数据库显示图片的,不写代码的没问题
[解决办法]
直接连接数据库就行了!
要不就在预览报表时就刷新一下!
[解决办法]
直接边数据库,什么混合的格式都能显示啊,包括空的,也自动不显示的,我用的是4.9版

读书人网 >.NET

热点推荐