报表制作过程 - 图文

更新时间:2024-01-13 16:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

报表编辑过程

报表的部署过程

1.首先,如果是第一次部署报表,首先拷贝报表引擎所需的文件:

? 从%安装路径%\\Deployment\\JSP下拷贝Ming.tld到Web应用程序的WEB-INF目录下

? 从%安装路径%\\Deployment\\JSP下拷贝mr.jar(文件名可能不同,可能如mr_Trial.jar等)到

Web应用程序的WEB-INF/lib目录下,如果lib目录不存在则创建。

? 选择一个目录作为报表根目录(RootPath),如/YourApp/Reports/,从%安装路

径%\\Deployment\\JSP\\下拷贝ReportCenter.jsp到报表根目录/YourApp/Reports/。

? 从%安装路径%\\Deployment\\JSP\\下拷贝文件MREngine.prop到目录/YourApp/WEB-INF/下。

MREngine.prop文件中包含一个MRViewerVersion参数,类似MRViewerVersion=2,1,1,0 ,

“2,1,1,0”描述的是报表浏览器的版本号码,浏览器升级之后,需要在此指定新版本的版本号,这样客户端才可以自动下载新版本的浏览器插件。关于配置文件MREngine.prop中参数的详细说明请参考配置文件里面注释。

? 从%安装路径%\\Deployment下拷贝Viewer文件夹到报表根目录/YourApp/Reports/下,Viewer

文件夹中有MRViewer.cab文件,这就是报表浏览器插件。 2.拷贝已经用报表设计器设计好的报表模板到报表根目录或者根目录下的子文件夹下面

注意:如果你的应用程序是YourApp,那么你可以指定这个应用程序YourApp下的目录“/Reports/”作为你的报表的根目录。即:“/Reports/”。 3. 创建JSP页面,嵌入报表浏览器、为报表准备数据:

新建一个JSP文件,用于显示报表,如FirstReport.jsp,加入下面代码: ? 引用Tag Library

<%@ taglib uri=\ ? 引用需要的包

<%@ page import=\ ? 创建MREngine对象

MREngine engine = new MREngine(pageContext); ? 设置报表根路径

engine.setRootPath(\

注意此处不应该包含应用程序的虚拟目录“YourApp”,而是从虚拟目录的根开始,应该是“/Reports/”。

? 添加数据集

在数据组件中添加一个数据集,其中\用来指定数据集名称,这个名称与用报表设计器设计报表模板时指定的数据集名称对应;rs可以是一个com.ming.webReport.DataRecord和com.ming.webReport.MRDataSet,或者java.sql.ResultSet,包含了报表所需数据:

engine.addMRDataSet(\

1. 可以将其他类型的数据转换成MRDataSet对象,然后使用addMRDataSet添加数据集,下面的代码展示如何将一个java.sql.ResultSet转换为com.ming.webReport.MRDataSet(addMRDataSet方法可以直接使用ResultSet,以下代码仅作为演示): ArrayList ary = new ArrayList();

while(rs.next()) //rs为一个现有非空的ResultSet对象 {

DataRecord rec = new DataRecord();

for(int i=1;i<=rs.getMetaData().getColumnCount();i++){ Object val = rs.getObject(i);

rec.setValue(rs.getMetaData().getColumnName(i),val); }

ary.add(rec); }

MRDataSet mrds =new MRDataSet(); mrds.addRows(mrds);

engine.addMRDataSet(\

如果报表用到的数据集超过一个,则可以继续加入这些数据集: engine.addMRDataSet(\

如果数据集之间存在关联,用下面代码设置数据集之间的关联,其中\是主数据集的名称,\是子数据集的名称,而\是两个数据集之间的关联表达式,表示使用各自表中的title_id字段对应关联。如果关联字段超过一组时用分号(;)分隔:

engine.addRelation(\

2. 如果从数据库从数据库查询出来的数据被封装成了一个对象,并返回。报表并不支持对象显示数据,以下方法可以将对象转换成DataRecord数据集: //o为需要转换成DataRecord数据集的对象 //c为o对象运行时类

public MRDataSet objcetToDataRecord(HttpServletRequest request, Object o,Class c) throws Exception { DataRecord rec = new DataRecord(); MRDataSet mrds = new MRDataSet(); BeanInfo beanInfo = Introspector.getBeanInfo(c); PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor descriptor : descriptors) { Method method = descriptor.getReadMethod(); Object obj = method.invoke(o, new Object[] {});

rec.setValue(descriptor.getName().toUpperCase(), obj); } mrds.addRow(rec); return mrds; }

3. 如果从数据库从数据库查询出来的数据被封装成了一个对象集合,并返回。报表并不支持集合

显示数据,以下方法可以将该集合转换成含有DataRecord数据集的集合:

//list为需要转换的集合 // 为o对象运行时类

public List buildDataRecord(List list,Class c) throws Exception { List ary = new ArrayList(); BeanInfo beanInfo = Introspector.getBeanInfo(c); PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors(); for (Object o : list) { DataRecord rec = new DataRecord(); for (PropertyDescriptor descriptor : descriptors) { Method method = descriptor.getReadMethod();

obj); }

Object obj = method.invoke(o, new Object[] {}); rec.setValue(descriptor.getName().toUpperCase(),

} ary.add(rec); }

return ary;

4. 有时候我们需要一些空记录,以下方法是创建一个包含n条空记录的数据集: public ArrayList createEmptyDataRecord(int n){ ArrayList ary = new ArrayList();

try{ DataRecord recs = new DataRecord(); for(int j=0;j

} ary.add(recs); } }catch(Exception e){ e.printStackTrace(); } return ary;

}

5. 如果从数据库取出来的记录中包含图片,那么我们需要将该图片转换成MRDataSet然后

才能在表报中显示出来,以下方法可以转换:

public MRDataSet getBlobDataFromFiles(XMLGraph xmlGraph) throws Exception { MRDataSet mrds = new MRDataSet(); DataRecord[] recs = new DataRecord[1]; recs[0] = new DataRecord(); recs[0].setValue(\, xmlGraph.getGraph()); return mrds;

}

注:在编辑报表的时候要使用图片控件

报表设计器的使用

数据源操作

新增数据源

添加一个数据源。执行该操作后,左侧树列表中会增加一个数据源节点,并在该节点下增加一个“数据集”节点。数据源包括两个属性:数据源名称和连接串。添加数据源后,数据源的名称缺省为空,必须为该数据源命名后才能正确保存。连接串的设置参见设置连接串。 ? 菜单项【数据?新建数据源】;

? 【项目树中数据节点上按右键快捷菜单?新建数据源】;

连接数据源

按定义的连接串连接到数据库。可视化控制:未指定连接串时不可用;已连接后不可用;其他可用。

? 菜单项【数据?连接数据源】;

? 【项目树中对应数据源节点上按右键快捷菜单?连接数据源】;

断开数据源连接。

断开数据源连接。 属于该数据源的所有数据集都会被关闭。可视化控制:已连接后可用;其他不可用。

? 菜单项【数据?断开数据源】;

? 【项目树中对应数据源节点上按右键快捷菜单?断开数据源】;

数据集操作

新建数据集

添加新的数据集。执行该操作后,左侧项目树列表中会在当前数据源下增加一个数据集节点。数据集包括以下属性:

数据源名称:指示数据集所属数据源,只读;

数据集名称:名称缺省为空,必须为该数据集命名后才能正确保存; 类型:可选择表、SQL、存储过程、XML ①“表”:从单个数据库表中获取数据,参见选择数据表; ②“SQL”:使用SQL查询语句获取数据,参见设置SQL语句; ③“存储过程”:使用存储过程以及参数来获取数据,参见设置存储过程; ④“XML”:从XML文件获取数据,参见设置XML文件。

注意:数据集的名称只能包含字符(A-z,0-9),且必须以英文字母开头,长度不超过255。 ? 菜单项【数据?新建数据集】;

? 【项目树中数据(集)节点上按右键快捷菜单?新建数据集】

打开数据集

打开数据集,从数据源获取数据;如果数据源未连接会自动连接。执行此操作会自动切换到数据标签,用来查看数据。数据是只读的,不能被修改。 ? 菜单项【数据?打开数据集】;

? 【项目树中数据集节点上按右键快捷菜单?打开数据集】 刷新数据集

当前数据集打开时,刷新当前数据集的数据。

菜单【项目树中数据集节点上按右键快捷菜单?刷新数据集】 关闭数据集

当前数据集打开时,关闭当前数据集。 ? 菜单项【数据?关闭数据集】

? 【项目树中数据集节点上按右键快捷菜单?关闭数据集】

选择数据集

当数据集类型是“表”时,数据集的属性列表中会出现“表”属性,可使用鼠标或Alt+↓打开下拉列表,该列表中会显示当前数据源所连数据库中可访问的表和视图,选择其中一个作为当前数据集所对应的数据表,数据集的名称会自动改为所选择的数据表或视图的名称。

设置SQL语句

当数据集类型是“SQL”时,数据集的属性列表中会出现“SQL”属性,可使用鼠标双击或点击…按钮打开“SQL编辑器”,在SQL编辑器中可以输入或者粘贴SQL查询脚本。 “语法检查”按钮可用来对当前的SQL脚本进行语法检查;点击“确认”按钮,返回主界面。

设置存储过程

当数据集类型是“存储过程”时,数据集的属性列表中会出现“存储过程”属性,可使用鼠标双击或点击…按钮打开“存储过程参数”对话框,在该对话框左侧的列表中列出了当前数据源连接的数据库中所有可访问的存储过程,在列表中选择一个存储过程时,右侧列表会列出这个存储过程的所有输入参数,在这里必须为每个参数填写适当的值,该存储过程才能够被正确打开。点击“确定”保存当前设置并返回主界面;“取消”放弃并返回主界面。

设置XML文件

当数据集类型是“XML”时,数据集的属性列表中会出现“XML”属性,可使用鼠标双击或点击

“…”按钮打开“打开”文件对话框,在该对话框选择一个XML文件作为当前数据集的数据。 注意:这个XML文件必须是使用设计器的导出XML文件数据功能导出的XML文件,其他格式的XML文件将不能被识别。

选择关系主表

选择与当前数据集有主/从关系的主表。当数据之间存在主/从关系时,如类似“单据”和“明细”这样数据,可以通过选择关联主表和设置关联字段来在数据集之间建立主/从关联关系。主从关系建立好后,从表中就只显示和主表当前记录相关的数据。在数据集“主表”编辑区使用鼠标或Alt+↓可以打开下拉列表,在该列表中列出了可以作为当前数据集的主表的数据集名称,选择其中一个作为当前数据集的关联主表。设置好主表后,必须同时设置关联字段,主从关联关系才能被正确建立。

设置关键字段

设置主/从关系的对应字段。如果为当前数据集指定了关联主表,可使用鼠标双击或点击…按钮打开“关联”对话框,在该对话框的“主表字段”列表中,列出了主表的所有字段;“从表字段”列这中列出了当前数据集的所有字段。分别系从这两个列表中选择适当的字段,然后点击“联接”按钮,在这两个字段之间建立联接关系,这个关系将会已FieldA=FieldB的形式被添加到对话框下方的“连接字段”列表中;如果多于一对字段需要建立联结,再次选择字段,并点击“联接”按钮,直到所有关联字段均已处理。点击“重置”会清除已经定义的联接;点击“确认”保存当前设置并返回主界面;点击“取消”放弃设置并返回主界面。

设置索引字段

设置当前数据集的索引排序字段。可以使用分号“;”分隔的字段名称来指定当前数据集的排序字段。排序优先顺序按字段名称在当前设置中的出现的位置先后为准。排序缺省为升序排序,设置降序排序需要在排序字段后面加\和字段间用空格隔开。

注意:当设置了主从关联后,对这个属性将使用关联设置的结果,对该属性的修改都将无效。 导入XML数据集

从磁盘上的XML数据文件创建数据集。该功能会打开一个“打开”文件对话框,在对话框内可以选择一个或多个XML文件,点击该对话框的“打开”按钮后,会在当前数据源下建立以XML文件名命名的数据集,该数据集的数据来自对应XML数据文件。如果同名的数据集已经存在,则该文件的导入不会成功,系统会弹出消息对话框显示未成功的文件名称。

导出XML数据集

将选中数据集的数据导出至磁盘XML文件。该功能会打开一个“浏览文件夹”对话框,使用该对话框选择一个目录用来存放导出的XML文件。可以对多个数据集同时执行该操作,在左侧对象树列表中选择“数据集”节点,在右侧的列表中可以使用鼠标拖动、Shift+鼠标点击、Ctrl++鼠标点击来选择多个数据集。导出的文件名称使用数据集名称加.xml文件后缀名,这些XML文件可以用于在设置XML文件功能中指定数据集的XML数据文件,或用来导入XML文件数据集。

转换为XML数据集

如果当前数据集是数据库的表、视图、SQL语句或存储过程等非XML文件格式的数据集,那么可以通过这个功能直接将当前的数据集转换为XML格式的数据集。 创建和编辑报表

新建报表文件夹

新建一个报表文件夹,文件夹的含义与文件系统文件夹的含义类似。项目树列表的“报表”节点代表根目录“/”。可以选中项目树的“报表”节点在根目录下新建文件夹;也可以选中某一文件夹节点在文件夹下面新建文件夹,文件夹对象只有一个报表名称属性,文件夹对象的命名规范应符合文件系统的文件夹命名约束;

? 菜单项【报表?新建文件夹】

? 【选中“报表”或其他文件夹节点按右键快捷菜单?新建文件夹】

文件夹的移动

报表文件夹可以像文件系统文件夹一样,在项目树的文件夹节点之间移动整个选定的文件夹,被移动文件夹下面的所有报表对象同时随该文件夹一起移动。

用鼠标选中待移动的文件夹,拖动到目标节点,放开鼠标,即可完成文件夹移动。

新建报表

在当前路径下新建一个报表对象。如意报表(Ming-WebReport)使用路径来分层管理报表。在设计器中,项目树的“报表”节点代表根目录“/”,文件夹的含义与文件系统文件夹的含义类似。 报表对象包括以下属性:报表名称——报表对象的名称,只读; 注意:报表对象的命名应符合文件系统的文件命名约束。

? 菜单项【报表?新建报表】

? 【选中“报表”或其他文件夹或报表节点按右键快捷菜单?新建报表】

报表的拖动

报表对象可以像文件系统的文件对象一样,在项目树的文件夹节点之间拖动选定的报表对象,也可以在报表的项目树和操作系统的资源管理器之间进行报表的拖动操作。 ① 移动报表对象:

用鼠标选中待移动的报表对象,拖动到目标节点即可完成报表对象的移动。如图示: ② 复制报表对象:

移动报表时,如果在开始移动的同时按住“CTRL”键,将是复制报表到目标文件夹,而不是移动报表到目标文件夹。

③ 拖动导出报表对象到操作系统的资源管理器:

按住“CTRL”键用鼠标还可以拖动报表模板到操作系统的资源管理器里面,相当于导出模板的效果。

④ 从操作系统的资源管理器拖动导入报表模板到打开的报表设计器中:

用鼠标可以从资源管理器中直接拖一个报表模板到当前报表设计器打开的报表项目中,这和到入报表模板的效果相同,如果拖动到的目标节点有同名模板则会提示是否覆盖。

页面设置

在页面设置对话框中可以完成报表打印机的设置,纸张设置,以及其它报表选项设置。有些属性的设置会影响到对象查看器中对应的某些属性的属性值。各类属性设置: 触发页面设置操作【文件?页面设置】

【鼠标双击报表工作区的空白处】

① “纸张类型”页:ALT + S选中纸张类型设置域

? 打印机:列出了所有系统中可用的打印机。如果你的系统没有安装打印机,或者打印机型号不

合适,你可以选择“虚拟打印机”选项,这将可以使用所有的打印尺寸,但不能打印输出。这只有在报表的设计状态中可以使用,并允许预览报表。你也可以使用虚拟打印为其他某个型号的打印机设计报表,而不需要在你的电脑中接着该类型的打印机,例如要设计A3幅面的报表,但因为你的打印机不支持A3幅的报表大小, 所以不能选择设计A3幅的报表,此时如果选中“虚拟打印机”选项则可以选择设计任何幅面的报表,但只能设计不能输出;

? 大小: 选择打印纸幅面,受上面打印机选项的影响。

? 宽度、高度:报表幅面的宽度和高度值,受报表幅面选项的限制。如果选定的是标准的打印纸,

则宽高值为只读,如果在打印纸“大小”选项种选择了“自定义”选项则宽度和高度值可改,根据用户打印纸的大小来定制。

? 打印方向:设置报表输出的方式:纵向或横向。

? 不限高度:该选项用来设定报表幅面的高度,如果报表格式要求高度很高,可以选中该选项,

报表高度将不受限制。例如:当报表带区(Band)很多,报表设计工作区内摆放不下时,可以选择―不限高度‖复选框,来增加报表设计工作区的高度,以便摆放所有带区。

? 标题:设定打印报表时在标题栏位置显示的信息。

② “纸张来源” 页:ALT + P选中纸张来源设置域 设置纸张来源是缺省还是来自打印机的纸盒。 ③ “页边距”页:ALT + M选中页边距设置域

上、下、左、右分别设置报表打印内容相对打印机可打印区域的边距,单位是厘米。 ④ “其它”页:ALT + O 选中其他设置域 分栏”区域:

? 栏 数:设置报表的分栏参数,使报表按指定栏数输出打印内容。该设置和报表的“Columns” 属

性值意义相同;

? 栏间隔:调整各栏之间的间距,单位是厘米; “选项”区域:

? 打印到前一页:它允许新的一页从上页的剩余区域开始打印;

? 两遍报表:如果你需要在报表中使用“总页数”函数,像打印“第xx页 共xx页”时需要选中

“两遍报表”选项。如果你使用TotalPages函数,但你忘记选取中这个选项,你将在你的报表中得到总页数为0。还有一些好处是选中“两遍报表”可以在最后一次中显示第一次的计算结果。其中之一就是在分组头中显示分组数,可以在演示报表中找到例子。

? 不打印背景图:如意报表(Ming-WebReport)可以用为报表设置背景图片的方式实现套打功能(也

可以用嵌入代码来实现),一般将实际单据扫描成电子图片,作为报表的背景图片,如果选中了不打印背景图,则输出的时候将不输出背景图,实现套打。

注意:选中套打的时候,在预览界面仍然可以看到背景图。

? 打印时打印背景颜色:指定打印报表时是否打印报表的背景颜色。

打印预览

打印预览可以在设计报表的过程中随时运行调试报表,浏览当前报表的运行结果。打印预览时报表的样式就是报表发布后运行的真实样式,主要用于调试报表。

? ? ? ?

菜单项【报表?打印预览】

【选中项目树报表对象节点按右键快捷菜单?打印预览】 工具栏【打印预览】 快捷键【F9】

? 其它 【在报表编辑界面中,选择“浏览”页,浏览当前报表】 预览工具栏介绍

:设置报表预览的缩放比例

:指定缩放方式,依次为:实际大小,适合窗口,适合宽度。

:预览页面导航,依次为:第一页,上一页,下一页,最后一页。

:打印报表,显示打印设置窗口。

:输出报表到其它格式文件。目前支持的格式包括:HTML页面文件,JPEG

图片,Acrobat PDF文件,纯文本文件,Excel CSV文件,RTF 文件。

添加页

为当前报表添加新的报表页。一个报表是由至少一个“报表页”组成的,在报表的“设计”窗口,可以为当前报表添加报表页。当触发添加页的操作的时候回弹出“页面设置”窗口,用于为新的报表页设置相关页面属性。添加页操作完成之后会在当前报表编辑窗口底部的报表页标识Tab上增加一个以页数为页码的报表页标识Tab。

? 菜单项【报表?添加页】

? 【在当前报表编辑窗口底部的报表页Tab上按右键快捷菜单?添加页】 ? 工具栏【添加页】 添加对话框

为当前报表添加新的报表对话框。在报表的“设计”窗口,可以为当前报表添加报表对话框。添加页操作完成之后会在当前报表编辑窗口底部的报表页标识Tab上增加一个以页数为页码的报表页标识Tab。新的报表对话框有一个缺省大小的表单Form 。

? 菜单项【报表?添加对话框】

? 【在当前报表编辑窗口底部的报表页Tab上按右键快捷菜单?添加对话框】 ? 工具栏【添加对话框】

设置数据字典

设置当前报表的数据字典。每个报表都有独立的数据字典, 数据字典对话框包含3个页,变量,字段别名和BAND数据源,分别可以用来定义报表中使用的变量,定义数据字段别名和Band数据源别名。 数据字典保存在报表窗口中,但也可以保存在单独的.MRD文件中,在需要时再从中读出数据到报表中。要做到这点,在设计器菜单中选择“报表?数据字典?导出数据字典”和“报表?数据字典?导入数据字典”,然后在弹出的标准打开或保存对话框中选择“Ming-WebReport数据字典文件”的文件类型,继续完成相关保存和打开的操作。菜单项【报表?数据字典?数据字典】 ① “变量”页

? 使用―变量‖页来管理报表中使用的变量列表。

左侧的列表列出了所有的变量。变量按两个层次管理,为变量进行分类,每个变量必须属于一个分

类目录。当报表中变量较多时,为变量分类便于在使用变量时快速查找定位。

当创建一个新的报表时,变量列表是空的,可以使用下面功能来建立和维护变量列表:

:添加一个新的类别,可以使用快捷键Ctrl+Insert添加新类别;

:在当前类别下添加一个新的变量,可以使用快捷键Insert在当前类别下添加新变量; :修改类别或者变量的名称;

:删除选定的类别或变量,快捷键Delete。 ?

定义好变量列表之后,就可以为变量设置值。

要做到这一点,你需要用鼠标在左边列表中选择一个变量,在右边列表中选择一个值。如意报表(Ming-WebReport)目前提供三种类型的变量值:数据集、系统变量和表达式:

?

? 数据集:所有的数据集都显示在右边的列表中,在这个时候是可用的,字段的名称同

样也是变量。在设计时,所有打开的模块(单元)中的所有数据集都可用。在运行时,所有已创建的窗体或数据项模块中的所有数据集都可用。

?

? 系统变量:包括下面几个有用的值:

a:页# :当前页号; b:日期:当前日期; c:时间:当前时间;

d:行# :相对于当前数据内容的行号; e:行Through# :相对于整个报表的行号; f:列# :当前列号; e:总页数:报表的总页数。

?

? 表达式:变量的值也可以是一个表达式,也可以通过表达式编辑器为变量赋值。选择

下方的―表达式‖复选框,点击“…”按钮打开表达式编辑器为变量赋值。可以在编辑框中直接输入表达式的内容,例如为变量Var1赋值0,表达式为:Var1:=0。

定义好变量之后,就可以在表达式编辑器中选择并使用该变量了:

② “字段别名”页

“字段别名”页主要用来屏蔽一些数据集和字段,在“数据字段”窗口中只显示选择了用于当前报表的数据集的可用字段,在此为数据集和字段建立别名。

? 当右侧列表为空时,表示使用所有数据集和字段;

? 需要只显示部分数据集和字段时,可以通过鼠标双击左侧列表中的数据集,或者使用―>‖按钮将这些数据集加入右侧列表;

? 需要屏蔽某些字段时,在右侧列表选中字段,选中下方的―从列表中排除字段‖复选框,字段图标将以灰色显示,此时在―数据字段窗口中‖该字段将不会显示。

? 在―别名‖文本框中可以为数据集或字段指定别名,在―数据字段‖窗口中将以指定的别名来标识该数据集或字段。

② Band数据源”页

―Band数据源‖页主要用来为Band数据源指定别名和屏蔽一些当前报表不用的Band数据源。

当右侧列表为空时表示使用所有Band数据源, 可以将当前报表使用的Band数据源添加到右侧列表中,并为其指定别名,这样在为Band选定数据源时就只按别名显示选中的项目,而其他Band数据源都被屏蔽不显示。

合并数据字典

合并数据字典也就是向当前数据字典添加其它的数据字典定义文件,数据字典文件必须是用如意报表(Ming-WebReport)工具导出的数据字典文件。新的数据字典定义和现有数据字典进行合并时会根据变量分类目录进行相应合并。

? 菜单项【报表?数据字典?合并数据字典】

导入数据字典

导入数据字典也就是先清空当前定义的数据字典,代替为导入的数据字典定义文件,数据字典文件必须是用如意报表(Ming-WebReport)工具导出的数据字典文件。

? 菜单项【报表?数据字典?导入数据字典】

导出数据字典

导出数据字典也就是把当前定义的数据字典导出到一个数据字典文件,生成的数据字典文件还可以被如意报表(Ming-WebReport)工具设计的其它的报表导入或合并。

导出的数据字典文件是以.MRD为扩展名的二进制文件。

? 菜单项【报表?数据字典?导出数据字典】

导入报表模板

向当前报表项目导入报表模板。一个报表模板可以被兼容版本的其他如意报表(Ming-WebReport)报表项目重用,还可以对部署好的报表进行回收调试。

触发导入报表模板的操作后,会弹处一个选择报表模板的窗口,选择报表模板时可以同时选择多个报表模板进行导入。

? 菜单项【文件?导入?报表模板】

? 【在报表节点或报表对象节点按右键快捷菜单?导入报表模板】

导出数据模板

从当前报表项目中将报表对象导出成独立的报表模板文件,导出的报表模板可以被其它如意报表(Ming-WebReport)项目导入重用,进行报表部署时必须将报表对象导出成报表模板文件。

可以选择一个报表文件夹节点进行导出,该操作将把本节点包含的所有报表对象导出倒磁盘上,而且导出的报表文件的目录结构保持项目树中的层次结构。

? 菜单项【文件?导入?报表模板】

? 【在报表文件夹节点或报表对象节点按右键快捷菜单?导出报表模板】

? 其它 【选中报表项目树中的某个文件夹节点之后可以在设计器的右侧当前层的报表文件夹和报

表模板列表中选择要导出的模板】

报表远程上传

将制作完成的报表模板上传到远程的目标服务器上,实现直接的动态部署报表模板。目标服务器可以是局域网上的服务器或本机的指定文件系统路径,也可以是Internet广域网上的目标服务器。向局域网上的服务器上传报表模板采用共享文件夹的方式; 报表远程上传采用FTP文件传输协议实现。 ① 要实现上传操作首先需要对上传参数进行设置: 菜单项【工具?远程设置】

图4.6.17-1

远程设置各项属性参数设置如下:

? ? 无:缺省选项,表示不应用远程上传报表的功能;

? ? 本地/局域网:选择本机或局域网上其他计算机共享的发布报表模板的文件系统路径; ? ? FTP:

? ? 远程主机:设置远程服务器的域名或IP地址; ? ? 端 口:设置远程FTP服务器的FTP协议端口;

? ?

? 用户名和密码:设置

FTP用户的登录用户名和密码;

? 匿名登录:指定是否采用匿名登录,如果选中该选项则“用户名”参数自动变成

anonymous,并且只读,“密码”参数清空,只读;

?

? 初始目录:参数设定报表模板上传到服务器时的根目录,设置的目录在远程服务器的

磁盘上是相对于远程服务器的FTP发布目录的;

?

? 使用代理服务启:如果设计报表的客户登录远程服务器需要通过代理服务器,则需要

选中该选项,设置代理服务器参数,下面的代理服务器参数缺省为灰色,不可写,只有选中了本选项才可以进行代理服务器参数设置;

? ?

? 代理服务器:指定代理服务器的

IP地址或别名;

? 代理端口:指定代理服务器的端口号。

② 远程报表上传操作:

报表设计客户端与远程服务器成功建立连接之后就可以进行报表的远程上传操作了(如果远程连接没有建立则上传功能无效),在项目树的报表文件夹节点或报表对象节点按右键,弹出快捷菜单,选择“上传”立即开始上传选中的报表文件夹(连同文件夹下面的所有报表对象)或选中的报表对象。 注意:报表对象或报表文件夹上传到服务器端时将保持项目树中自“报表”节点开始的完整的目录层结构,上传到服务器端后将自动从“远程设置”中设置的根目录开始检查远程服务器的文件系统目录结构,如果存在本目录层结构,则根据对应的目录结构上传,如果不存在本目录层结构则从根目录开始自动创建目录层结构,然后上传。

自动生成代码

应用V2.5以前版本的如意报表工具,用户需要手工开发部署报表模版的网页程序,当然用户也可以自行开发报表模

版自动调配系统以避免每个模版文件都对应独立的网页程序文件。如果客户没有自行开发报表模版自动调配系统,则需要为每个报表模版开发对应的网页程序,所以为了帮助客户快速部署报表模版文件,如意报表的报表设计器特提供了自动生成网页程序代码文件的功能,也就是说客户根据自己的Web应用程序环境,开发好网页程序的模版文件之后,设计器就可以自动根据指定的网页程序模版文件来生成每个报表模版所对应的网页程序文件。

在报表设计器中实现自动生成代码文件的操作主要包括两个操作步骤:首先根据WEB应用程序环境编写代码文件的模版文件,即扩展名为MCT的文件,并拷贝MCT文件到当前报表设计器程序所在目录的CodeTemplets文件夹中;然后就可以在报表设计器中进行代码文件的生成操作了。 ① 编写代码文件的模版文件:

代码文件的模版文件采用标准的XML文件格式,模版文件必须结合当前WEB应用程序的开发架构和运行环境环境来编写,必须保证根据此模版文件生成的网页代码文件在当前的Web应用程序中是可以正确运行的;另外模版文件的编写方法与如意报表工具的版本无关,也就是说,ASP或者JSP代码文件的模版文件的编写方式都是一样的。下面举例说明ASP代码文件的生成过程:

? 根据当前WEB应用程序环境确定正确的代码文件的程序代码:

这一步就是定在当前WEB应用程序的环境下,手工编写能够正确显示报表模版的网页程序,然后根据这个网页程序来确定代码文件的模版文件的格式。

假设手工编写的能够正确运行的代码文件的程序如下: <%

set conn = Server.CreateObject(\ conn.Open Application(\ strSQL = \

set rsMain = Server.CreateObject(\ rsMain.Open strSQL, conn,1,1

strSQL = \

set rsSub = Server.CreateObject(\ rsSub.Open strSQL, conn,1,1

set Engine = Server.CreateObject(\ Engine.SetRootPath Application(\ Engine.AddMRDataSet \ Engine.AddMRDataSet \

Engine.AddRelation \ Engine.AddReport \

Engine.Bind

conn.Close %>

主从报表示例

font-family: \宋体,Arial\ background-color:'#FFFFFF'; margin-left: 0; margin-top: 0; }