2 zhaogan zhaogan 于 2016.05.11 09:36 提问

关于delphi intraweb+fastreport做WEB报表的问题

关于delphi intraweb+fastreport做WEB报表的问题
系统环境:win7旗版+IE8
编程环境:delphi xe10+intraweb14.0.52+FastReports 5.2.12
因近期在学习intraweb,在学习制作报表时完参考了高勇的资料,如下代码:
procedure TIWForm_YJB.IWButton5Click(Sender: TObject);
var
LFile: string;
LOptions: string;
LWindowName: string;
LURL: string;
begin
//导入报表模板文件3.fr3
frxReport1 .LoadFromFile(WebApplication.ApplicationPath+ 'files\YJB.fr3');
//定义临时保存在服务器上的报表文件名
LFile:= 'temp.htm';
//WebApplication.AppID是服务器为每一个用户生成的唯一的一个字符串, 这样就保证了用户只能调用自己生成的报表
frxHTML4DivExport1.FileName:= WebApplication.ApplicationPath+ 'files\' + WebApplication.AppID+ '\' + LFile;
//生成 files目录下的唯一文件夹
ForceDirectories(ExtractFileDir(frxHTML4DivExport1.FileName));
//准备报表数据
frxReport1.PrepareReport;
//将报表数据以 HTML格式导出到文件 frxHTMLExport1 .FileName中
frxReport1.Export(frxHTML4DivExport1) ;
//以下为将报表发送到客户端//窗口名称
LWindowName:= 'HTML报表示例';
//是否有滚动条,IE窗口的长和宽 ,可以为空字符串,如果为空则窗口这完整的 IE窗口。
//LOptions:= 'scrollbars=yes' ;
LOptions:= 'scrollbars=yes,width=800,height=600';
//给出在服务器上生成的报表的URL地址
LURL:= WebApplication.AppURLBase+'/FilesNC/'+WebApplication.AppID+'/' +LFile;
//LURL:=WebApplication.AppURLBase+'/Files/'+WebApplication.AppID+'/'+LFile;
WebApplication.NewWindow(LURL);
//打开一个新 IE窗口,将报表展现出来
AddToInitProc('NewWindow('''+ LURL+''',''' + LWindowName+''',''' + LOptions+''');');
//AddToInitProc('NewWindow("'+ LURL+ '", "' + LWindowName+ '","' + LOptions+'");'); }
end;
在实际运行中临时文件Temp.html能在服务器端生成,在浏览器打开报表时无法打开
报表URL:http://filesnc/84AC8IGxxug~tPRCo5AlWq/temp.htm

在高勇的代码中为什么
LURL:= WebApplication.AppURLBase+'/FilesNC/'+WebApplication.AppID+'/' +LFile;会是FilesNC,明明文件放在Files里呀,我把他改成Files也是不对的,请问下是什么原因?万分感谢!

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.11 10:00

调试输出 LURL 下是什么,看下路径拼接对不对。

zhaogan
zhaogan   2016.05.11 11:21

LURL的路径是对的,好像是相对路径,就是浏览器访问不到,我用的是intraweb EXE的形式,是不是一定要用DLL形式用IIS发布后才行?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!