易飞报表转化WEB报表过程剖析.docx
《易飞报表转化WEB报表过程剖析.docx》由会员分享,可在线阅读,更多相关《易飞报表转化WEB报表过程剖析.docx(16页珍藏版)》请在冰豆网上搜索。
易飞报表转化WEB报表过程剖析
易飞报表转化WEB报表过程剖析
(适用于:
程序员)整理人:
杜坤。
一、转化原理2
二、转化步骤2
2.1前端画面转化2
2.2网页上报表的测试6
2.3有问题报表的自定义开发9
一、转化原理
•
画面XML包括:
画面上所有控件的属性
开窗XML包括:
控件名称、开窗的编号
传入后端的XML包括:
传入报表后端的条件的控件名称(这些表存于数据库WEBReport)
二、转化步骤
(以INVR19为例,环境为服务器:
192.168.11.7)
2.1前端画面转化
(1)了解要转化的报表前端画面。
DELPHI打开报表前端SOURCE,并必须保证前端窗体FORM中基本选项卡显示在前面。
为了防止转换后的窗体界面上高级选项与基本选项错位。
前端SOURCE检查注意:
1、控件命名是否规范,如sp,ed,chk、cbo等。
2、SetRptOptStr函数中生成的条件顺序数组是否规范。
如xValue[1]:
=VarArrayOf([sp01.Caption,sp01.name]);。
sp01.name是否为传入报表后端的控件的名称。
这个数组是否为二维的。
如作业COPR61中xValue[14]:
=mMA001;,这个生成到XML中就会有问题。
3、SetRptOption函数中传入后端的值是否规范。
sp控件一般不会有问题。
EDIT控件传一个值到后端,如:
xValue[5]:
=ed06.Text;。
checkBox传一个值到后端,如:
xValue[3]:
=iif(chk04.checked,'Y','N');。
radiobox,combox传二个值到后端,如xValue[5]:
=VarArrayOf([cbo06.ItemIndex+1,cbo06.Text]);。
4、OpenF2Window中是否有树型开窗,如会计科目。
若有则需要自定义SQL。
5、查看是否有多格式。
如果一个控件控制格式,直接在表中修改。
两个以上的控件要通过修改程序。
强调一下多格式的实现代码必须放在SetRptOption函数中。
(2)用WEB报表专用O盘重新编译程序。
用192.168.11.7服务器上的O盘编译,将DLL放到DSchangeX前端程序搜寻路径。
具体环境如下图。
(3)通过工具BatTranWebRep将报表前端画面转化到WEBReport报表数据库。
首先,配置好config.ini文件,登录BatTranWebRep工具。
界面如下图。
[SQLSERVER]
AdoConnectStr=Provider=SQLOLEDB.1;Password=238173;PersistSecurityInfo=True;UserID=sa;InitialCatalog=WebReport90;DataSource=192.168.11.7
然后,在程序编号中输入:
INVR19后回车,
这时会先自动弹出INVR19作业的前端FORM界面,点击FORM中的
按钮;随即弹出OpenWinList窗口,点击
按钮;最后再一次弹出INVR19的前端界面,点
后如上图。
(3次弹出窗体)转换前端生成的3个XML文件见图右侧选项卡。
生成开窗时注意:
1、生成前端画面时如上图左边红框内所示,一般不会有问题,最多是字体被控件遮挡之类,这个可以在右侧选项XML中找到对应控件XML直接修改。
2、生成开窗时可能会出现报错,所以可能要手动修改开窗的XML档。
3、对于开窗时,是以别的控件的值做为参数的,例如分类方式控制类别,工厂控制仓库开窗等,要修改参数的来源。
如上图sp03的参数1肯定不对的,这个时候可以直接鼠标右击此行-修改参数为cbo02即可。
4、如果开窗是因为别的控件的值变化而不同的,要增加一个开窗项。
5、对有多格式报表来说,要点击格式按钮查看工具是否正确生成。
若有问题可直接在弹出窗体中修改。
(4)确认生成无误后,点击工具栏中的
按钮将三个XML保存到WEBReport报表数据库中。
XML相关知识可以参见XML基础知识.ppt.
2.2网页上报表的测试
(1)在系统中录入程序。
在YF中CALL起作业WRPI01录入。
注意是否有动态的标题或者栏位数目。
(2)打开程序,查看生成的画面、开窗等是否正常。
打开IE,在地址栏中键入http:
//192.168.11.7/webreport/User_Login.aspx登录。
然后在网页左边导航栏内输入报表作业编号INVR19,点击
按钮打开报表。
选择画面上的日期、类别等开窗打开查看是否成功,如下图。
开窗报错问题注意:
1、检查开窗的XML语法或者传入的参数是否有误。
建议如传入的参数有空格,不要使用BatTranWebRep修改,可以在DateView中修改XML,特别是中不要输入回车,可能导致开窗异常;
2、日期开窗:
无法找到该页面,这是正常情况。
解决方法:
服务器:
IIS-Web扩展服务-启用ActiveServerPages服务(XP2003之前系统会出现此问题)
(3)确认没问题后,点击画面右边的查询报表按钮
,由于此时报表后端DLL还没编译,会提示有问题。
报表后端需用最新标准O盘编译后放至服务器指定目录(S_modi)。
查询WEB报表时注意:
1、在Web中点击查询按钮,长时间没有响应
其处理状态STATES为,N:
等待中;X:
已锁定;P:
处理中;F:
有问题;D:
已完成,
若一直为N,说明服务器ReportCenter可能没有开启,尝试开启服务器的报表处理元件;
若一直为P,说明报表处理比较耗时,尝试重新登陆并选择条件以确定更小的查询范围;
若一直为F,说明报表条件有错误,这类现象最难解决,只能用排除法处理。
检查自定义代码或转换得到的条件XML或将JOBOPTION里的条件XML与易飞前端传给后端的Variant做对比。
没问题的话,就要跟踪报表后端了,通常要做后端个案喔。
报表后端跟踪方法已经整理到Web报表撰写经验.xls文档!
2.3有问题报表的自定义开发
简单类工厂介绍:
注:
餐店的例子,快餐店提供很多食物,比如面条,米饭,面包。
首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨他包办所有食物的制作工作。
类图:
继承类说明:
(1)对有问题的报表,确定要修改的功能,如控件的大小、位置、状态等。
如下图所示,分类方式管控类别开窗,工厂管控仓库开窗,这就要进行.NET开发。
打开VS,创建项目/解决方案INVR19,如下图。
具体撰写步骤:
1、继承类ReprotCustomBase,增加空间引用:
2、修改命名空间:
YFReportCustom.Reports.INV,其中INV为模块名称,也就是程序名称的前三位,对于不是程序名称前三位的作业做特殊处理。
3、增加要处理的三个常用事件函数,如:
BeforeControlCreate控件创建前,生成控件要处理的写在这个里面,返回处理是否错误,AfterControlCreate控件生成后,调整控件、增加控件等写在这个里面,返回处理是否错误,AfterOpenWin生成开窗的处理方法有问题的写在这个里面,返回是否存在处理的开窗。
publicoverrideboolBeforeControlCreate()
{
returnbase.BeforeControlCreate();
}
publicoverrideboolAfterControlCreate()
{
returnbase.AfterControlCreate();
}
publicoverrideboolAfterOpenWin()
{
returnbase.AfterOpenWin();
}
4、在对应的事件中增加功能,特殊报表特殊处理。
以分类方式管控类别开窗为例:
函数定义与实现过程如下:
publicoverrideboolAfterControlCreate()
{
if(base.AfterControlCreate())
{
DropDownListcbo02=ReportCustomUtil.FindControl(FtabContainer,"cbo02")asDropDownList;
Fill_ItemCategory(cbo02);
cbo02.AutoPostBack=true;
cbo02.TextChanged+=cbo02_TextChanged;
returntrue;
}
else
returnfalse;
}
publicvoidcbo02_TextChanged(objectsender,EventArgse)
{
wrSelectPanelsp03=ReportCustomUtil.FindControl(FtabContainer,"sp03")aswrSelectPanel;
sp03.TxtValueHide1.Value="";
sp03.TxtValueHide2.Value="";
}
控件对应关系:
注:
具体的.NET开发以及开发过程中遇到的特殊类报表和异常问题的解决等,涉及到C#语法以及VS的使用方法,这里就不做具体阐述了。
5、测试-画面测试、开窗测试、查询结果测试等。
(2)待.net开发完成,在调试确认无误后将DLL放入服务器指定目录ReportC_PKG。
然后查询生成报表。
(3)测试、制作报表格式。
WEB报表生成后,制作报表格式档RDL。
RDL生成在服务器指定目录ReportS_RDL中,使用工具ReportBuilder2进行修改与制作。
具体遇到问题见相关视频和Web报表撰写经验.xls。
Ps:
WEB报表的数据结构、目录结构、继承关系参见Web报表结构说明.xlsx。
易飞WEB报表的所有源代码以及工具基类都已经放在VSS172.16.1.202/tools/WebReport目录下。