我将用Fastreport生产的报表模板文件(.fr3)保存到Access数据库中,在保存完毕后(未到数据库中重新检索)直接预览报表是没有问题的,如下面的程序:
procedure TF_Xjd.SaveClick(Sender: TObject);
var
bs:TStream;
begin
inherited;
cdsReport.Close;
cdsReport.CommandText:= 'select * from ad_Report where rptName =''frXjd.fr3''';
cdsReport.Open;
if cdsReport.RecordCount<1 then
begin
cdsReport.Append;
cdsReport.FieldByName('rptName').AsString:= 'frXjd.fr3';
cdsReport.FieldByName('rptDescript').AsString:= '询价单';
TBlobField(cdsReport.FieldByName('Content')).LoadFromFile('report\frXjd.fr3');
end
else
begin
cdsReport.Edit;
TBlobField(cdsReport.FieldByName('Content')).LoadFromFile('report\frXjd.fr3');
end;
cdsReport.ApplyUpdates(0);
{//在此显示报表没有问题,显示报表方法如下
bs:= cdsReport.CreateBlobStream(cdsReport.FieldByName('Content'),bmRead);
try
frxreport1.Clear;
frxreport1.LoadFromStream(bs);
frxreport1.ShowReport;
finally
bs.Free;
end; }
end;但当重新从数据库中检索数据后再预览报表,报表就显示不完整了,缺少了一些东西,具体程序如下:
procedure TF_Xjd.readClick(Sender: TObject);
var
bs:TStream;
begin
inherited;
cdsReport.Close;
cdsReport.CommandText:= 'select * from ad_Report where rptName =''frXjd.fr3''';
cdsReport.Open;
if cdsReport.RecordCount>0 then
begin
bs:= cdsReport.CreateBlobStream(cdsReport.FieldByName('Content'),bmRead);
try
frxreport1.Clear;
frxreport1.LoadFromStream(bs);
frxreport1.ShowReport;
finally
bs.Free;
end;
end;
end;研究了很久也没有解决问题,还请各位高手给予指点,在此深表感谢!
procedure TF_Xjd.SaveClick(Sender: TObject);
var
bs:TStream;
begin
inherited;
cdsReport.Close;
cdsReport.CommandText:= 'select * from ad_Report where rptName =''frXjd.fr3''';
cdsReport.Open;
if cdsReport.RecordCount<1 then
begin
cdsReport.Append;
cdsReport.FieldByName('rptName').AsString:= 'frXjd.fr3';
cdsReport.FieldByName('rptDescript').AsString:= '询价单';
TBlobField(cdsReport.FieldByName('Content')).LoadFromFile('report\frXjd.fr3');
end
else
begin
cdsReport.Edit;
TBlobField(cdsReport.FieldByName('Content')).LoadFromFile('report\frXjd.fr3');
end;
cdsReport.ApplyUpdates(0);
{//在此显示报表没有问题,显示报表方法如下
bs:= cdsReport.CreateBlobStream(cdsReport.FieldByName('Content'),bmRead);
try
frxreport1.Clear;
frxreport1.LoadFromStream(bs);
frxreport1.ShowReport;
finally
bs.Free;
end; }
end;但当重新从数据库中检索数据后再预览报表,报表就显示不完整了,缺少了一些东西,具体程序如下:
procedure TF_Xjd.readClick(Sender: TObject);
var
bs:TStream;
begin
inherited;
cdsReport.Close;
cdsReport.CommandText:= 'select * from ad_Report where rptName =''frXjd.fr3''';
cdsReport.Open;
if cdsReport.RecordCount>0 then
begin
bs:= cdsReport.CreateBlobStream(cdsReport.FieldByName('Content'),bmRead);
try
frxreport1.Clear;
frxreport1.LoadFromStream(bs);
frxreport1.ShowReport;
finally
bs.Free;
end;
end;
end;研究了很久也没有解决问题,还请各位高手给予指点,在此深表感谢!
这个窗体是继承其它窗体的,但Read和Save这两个按钮是新添加的,即inherited;之前没有其他内容。
bs.Position := 0; // < ----------- 加这句
try
frxreport1.Clear;
frxreport1.LoadFromStream(bs);
frxreport1.ShowReport;
finally
bs.Free;
end;
bs.Position := 0; // < ----------- 加这句
之后也不行,与原来结果相同