盐城海创机械有限公司:Rave报表不能刷新报表内容的问题。

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 10:40:54
我在一个程序中使用了很多FORM窗体,在一个DATAMODLE中放入了一个RvProject,里面设定了一个报表项目文件,这样其他子窗体打印报表时只调用这个数据模式里的RvProject就可以了。但是当一个子窗体调用打印后,如果将这个窗体关闭,打开其他子窗体获重新打开这个窗体打印时,报表里面的数据就不正确了,原来的窗体报表数据总是在上一次关闭时的数据,而其他报表根本无法显示数据。

RvProject.Open;

。。。数据库查询操作

RvProject.ExcutReport(‘Report1’);

RvProject.Close;

数据库查询结果使用了RvdataSetConnection连接到报表。

(部分单词可能书写有误!)

请帮帮忙吧,急。。。。

还有,我用Application1.terminat;结束程序时,程序无法结束,我知道就是RvProject的问题,但不知道如何解决,。。。

我在DELPHI版块RAVE报表上解决的问题较多,而且发现提出的问题都有很大的相似性(本来提交了几个FAQ,但不知何时才能通过审核),所以就先整理一下自己的一点经验,希望能带给大家一点帮助,如果你觉得没什么用大可不必看.:)
以下的程序在XP+D6+Rave5.1下调试通过,
问题1:动态的设置报表中的内容
uses
RVClass, RVProj, RVCsStd;
var
MyPage: TRavePage;
MyText: TRaveText;
begin
RaveProject1.Open;
With RaveProject1.ProjMan do begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage; //查找PAGE
MyText := FindRaveComponent('Text1',MyPage) as TRaveText; //查找TEXT
MyText.Text := 'Boland Delphi'; //设置报表中文本内容
MyText.Color := clGreen; //设置颜色
end; { with }
RaveProject1.ExecuteReport('Report1');
RaveProject1.Close;
end;

问题2:保存报表为HTML或PDF格式(对于PDF格式不支持中文)
rvproject1.projectfile :='E:\delphi\rave\files\test.rav';
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式 或RPRenderPDF1;
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;
except
ShowMessage('生成报表文件错误!');
end;
对于只有一页报表那是没有问题的,但对于多页在D6下和D7有所不同.D6下可以生成许多页,但D7下却
不行,不知为什么?D6下的RAVE版本是5.1,

问题3: IntraWeb和Rave的无缝连接
我的思路就是先把报表保存成HTML或PDF格式,然后再用IE调用
const
AIPOptions: string = 'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,directories=no,width=1000,height=700';
var
aipurl :string;
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;//生成报表
AIPURL := WebApplication.URLBase + '/files/' + 'test.html'; //IE打开第一页报表
AddToInitProc('NewWindow("' + AIPURL + '", "Agenda", "' + AIPOptions+'");');
except
webapplication.ShowMessage('生成报表文件错误!');
end;

问题4: 让最终用户动态的修改报表格式.
with RvProject1 do
begin
DLLFile :='D:\Rave5\Redist\RaveSolo.dll'; //如果不指定此文件则运行时会报出错
ProjectFile :='E:\delphi\rave\files\test.rav'; //指定RAV文件
LoadDesigner :=true;
If Design then begin
If MessageDlg(Trans('Save changes to project ') +
ProjectFile + '?',
mtConfirmation,
[mbYes,mbNo,mbCancel],0) = mrYes then
begin
Save;//保存
end; { if }
end; { if }
end;{with}
此程序在D6+Rave5.1下调试通过.在D7下就用Rave.dll
---------------------------------------------------------------

收藏
---------------------------------------------------------------

兄弟,,那个输出Html,,如果有表格线的话,,会生成两个.gif,在IntraWeb做的ISAPI里,,IIS解析后会要求写入系统目录,会报错的,我不知道你现在解决这个问题了没有
---------------------------------------------------------------

俺刚开始学报表,真是受益非浅,我想只要是想学RAVE做报表的一定很感谢你!!!
---------------------------------------------------------------

呵呵,俺来了

楼主是好人,刚给了我1000多的可用分

我又能拿来散了,哈哈

这个东东没做过,先收藏
---------------------------------------------------------------

来了,偶也没用过,收藏之
---------------------------------------------------------------

可以支持,为你的表中的中文字段取一个别名
例如:select 姓名 name,学号 number
这样就可以了
---------------------------------------------------------------

老大的帖子 沉了好久了

没作过RAVE
顶一下先
---------------------------------------------------------------

不错,辛苦啦
---------------------------------------------------------------

老大,为什要说要离去。。。。?
---------------------------------------------------------------

虽然 零值不打印设置: ##.## 是这样,但此时,小数位是不对齐的,例如其结果可能是

23.23
25
而不是
23.23
25.00

若 设置: ##.00 则 0 将被显示出来

在fastreport 等报表系统中有0值不显示的设置,所以此问题利用这个方法还不是很好!

我在DELPHI版块RAVE报表上解决的问题较多,而且发现提出的问题都有很大的相似性(本来提交了几个FAQ,但不知何时才能通过审核),所以就先整理一下自己的一点经验,希望能带给大家一点帮助,如果你觉得没什么用大可不必看.:)
以下的程序在XP+D6+Rave5.1下调试通过,
问题1:动态的设置报表中的内容
uses
RVClass, RVProj, RVCsStd;
var
MyPage: TRavePage;
MyText: TRaveText;
begin
RaveProject1.Open;
With RaveProject1.ProjMan do begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage; //查找PAGE
MyText := FindRaveComponent('Text1',MyPage) as TRaveText; //查找TEXT
MyText.Text := 'Boland Delphi'; //设置报表中文本内容
MyText.Color := clGreen; //设置颜色
end; { with }
RaveProject1.ExecuteReport('Report1');
RaveProject1.Close;
end;

问题2:保存报表为HTML或PDF格式(对于PDF格式不支持中文)
rvproject1.projectfile :='E:\delphi\rave\files\test.rav';
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式 或RPRenderPDF1;
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;
except
ShowMessage('生成报表文件错误!');
end;
对于只有一页报表那是没有问题的,但对于多页在D6下和D7有所不同.D6下可以生成许多页,但D7下却
不行,不知为什么?D6下的RAVE版本是5.1,

问题3: IntraWeb和Rave的无缝连接
我的思路就是先把报表保存成HTML或PDF格式,然后再用IE调用
const
AIPOptions: string = 'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,directories=no,width=1000,height=700';
var
aipurl :string;
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;//生成报表
AIPURL := WebApplication.URLBase + '/files/' + 'test.html'; //IE打开第一页报表
AddToInitProc('NewWindow("' + AIPURL + '", "Agenda", "' + AIPOptions+'");');
except
webapplication.ShowMessage('生成报表文件错误!');
end;

问题4: 让最终用户动态的修改报表格式.
with RvProject1 do
begin
DLLFile :='D:\Rave5\Redist\RaveSolo.dll'; //如果不指定此文件则运行时会报出错
ProjectFile :='E:\delphi\rave\files\test.rav'; //指定RAV文件
LoadDesigner :=true;
If Design then begin
If MessageDlg(Trans('Save changes to project ') +
ProjectFile + '?',
mtConfirmation,
[mbYes,mbNo,mbCancel],0) = mrYes then
begin
Save;//保存
end; { if }
end; { if }
end;{with}
此程序在D6+Rave5.1下调试通过.在D7下就用Rave.dll
---------------------------------------------------------------

收藏
---------------------------------------------------------------

兄弟,,那个输出Html,,如果有表格线的话,,会生成两个.gif,在IntraWeb做的ISAPI里,,IIS解析后会要求写入系统目录,会报错的,我不知道你现在解决这个问题了没有
---------------------------------------------------------------

俺刚开始学报表,真是受益非浅,我想只要是想学RAVE做报表的一定很感谢你!!!
---------------------------------------------------------------

呵呵,俺来了

楼主是好人,刚给了我1000多的可用分

我又能拿来散了,哈哈

这个东东没做过,先收藏
---------------------------------------------------------------

来了,偶也没用过,收藏之
---------------------------------------------------------------

可以支持,为你的表中的中文字段取一个别名
例如:select 姓名 name,学号 number
这样就可以了
---------------------------------------------------------------

老大的帖子 沉了好久了

没作过RAVE
顶一下先
---------------------------------------------------------------

不错,辛苦啦
---------------------------------------------------------------

老大,为什要说要离去。。。。?
---------------------------------------------------------------

虽然 零值不打印设置: ##.## 是这样,但此时,小数位是不对齐的,例如其结果可能是

23.23
25
而不是
23.23
25.00

若 设置: ##.00 则 0 将被显示出来

在fastreport 等报表系统中有0值不显示的设置,所以此问题利用这个方法还不是很好!