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这张报表,不是为什么?
[解决办法]
[解决办法]
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;
这种写法和你的写法,有时候差别很大的。
[解决办法]
不知道,我写进数据库却没有你所说的情况发生。
[解决办法]