读书人

fastreport保存到数据库有关问题

发布时间: 2012-04-09 13:41:24 作者: rapoo

fastreport保存到数据库问题?
var
template:TStream;
--加入数据库
template:=TMemoryStream.Create;
template.Position:=0;
if OpenDialog1.Execute then OpenDialog1.Files.SaveToStream(template);
DM.frxReport1.SaveToStream(template);
DM.RptData.Append;
try
DM.RptData.Edit;
DM.RptData.FieldByName('id').AsString:=Trim(DM.Report.FieldByName('id').AsString);
DM.RptData.FieldByName('report').AsString:=ExtractFileName(OpenDialog1.FileName);
(DM.RptData.FieldByName('rptmemo') as TBlobField).LoadFromStream(template);
DM.RptData.Post;
finally
template.Free;
end;
DM.RptData.Close;
DM.RptData.Open;
--读取报表
try
template:=DM.RptData.CreateBlobStream(DM.RptData.FieldByName('rptmemo'),bmRead);
template.Position:=0;
DM.frxReport1.LoadFromStream(template);
DM.frxReport1.FileName :=Trim(DM.RptData.FieldByName('Report').AsString);
DM.frxReport1.DesignReport;
finally
template.Free;
end;
问题:读出来的报表并不是加入的的报表,还是加入的报表本来就有问题,如:加入的1.fr3,2.fr3等报表,读出来的都是10.fr3报表,可并没加入10.fr3这张报表,不是为什么?

[解决办法]

探讨
应该是报表文件太大了,修改Blob的大小即可

[解决办法]
if OpenDialog1.Execute then OpenDialog1.Files.SaveToStream(template);
DM.frxReport1.SaveToStream(template);

这里template中有2份资料了

DM.RptData.Append;
try
DM.RptData.Edit;

是添加还是修改?
[解决办法]
DM.RptData.FieldByName('id').AsString:=Trim(DM.Report.FieldByName('id').AsString);
有无可能是这句代码的问题
DM.Report.FieldByName('id').AsString并不是你想的那个值。
设个中间变量,断句进去看看。
比如:
a:=Trim(DM.Report.FieldByName('id').AsString);
……
做了N个操作后
DM.RptData.FieldByName('id').AsString := a;

这种写法和你的写法,有时候差别很大的。

[解决办法]
不知道,我写进数据库却没有你所说的情况发生。
[解决办法]
探讨
DM.RptData.FieldByName('id').AsString:=Trim(DM.Report.FieldByName('id').AsString);
有无可能是这句代码的问题
DM.Report.FieldByName('id').AsString并不是你想的那个值。
设个中间变量,断句进去看看。
比如:
a:=Trim(DM.Report.FieldByName('id……

读书人网 >.NET

热点推荐