一种基于数据库生成报表的方法、装置和系统的制作方法

文档序号:6602741阅读:136来源:国知局

专利名称::一种基于数据库生成报表的方法、装置和系统的制作方法
技术领域
:本发明涉及数据通信领域技术,特别涉及一种基于数据库生成报表的方法、装置和系统。
背景技术
:目前,大多数的报表系统的设计和显示都采用微软的SQLServer(StructuredQueryLanguageServer,结构化查询语言服务器),但其不能应用于全刀片环境。由于OMMP(OperatingMaintenanceandManagementPlatform,MS5F^)U^tWINDOWS环境下部置,也可以在SUSE环境下部署,因此,与之结合的zxR印ort报表设计工具被普遍使用。但是,目前ZXR印ort报表设计工具只支持设计简单矩阵报表的功能,而对于设计复杂报表,则需要借助数据库来实现。如图1所示,为一个复杂报表,在数据库中要预先计算出单元格的位置,即该报表中的一个单元格101从第0行开始到第1行结束,从第0列开始到第4列结束,然后计算对应于(0,1)行,(0,4)列这一单元格的数据,并将计算后的数据存储在该单元格对应的存储区域中,再插入接口表。如图2所示,为生成复杂报表而设计的接口表结构,该表包括五个字段,该五个字段中的内容确定了报表中固定一个单元格所需要的全部信息。该五个字段为开始行号,结束行号,开始列号,结束列号,单元格显示内容。只要在数据库中将复杂报表中所有的单元格信息都填到这个临时表中,zxReport报表设计工具就可以利用这些信息,生成复杂报表。然而,现有技术中,每计算一条数据后执行数据插入操作,这样就会占用大量的SYBASEIQ数据库空间,在插入数据量较大时,甚至会严重耗损数据库的性能,甚至使数据库宕机。
发明内容本发明实施例提供了一种基于数据库生成报表的方法、装置和系统,可以节省数据库空间,提高数据库的处理效率。本发明实施例提供了一种基于数据库生成报表的方法,该方法包括根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表。本发明实施例提供了一种基于数据库生成报表的装置,包括获取模块,用于根据用户终端的设置,获取生成复杂报表需要的数据;写入模块,用于将所述数据中的行信息数据和列信息数据分别写入虚拟表;处理模块,用于根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;生成模块,用于根据所述接口表生成复杂报表。本发明实施例提供了一种基于数据库生成报表的系统,包括数据库和用户终端;所述数据库,用于根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表;所述用户终端,用于设置生成复杂报表需要的数据。本发明实施例提供的基于数据库生成报表的方法、装置和系统,用于根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表。本发明实施例提供的基于数据库生成报表的方法、装置和系统,可以有效的节省数据库空间,提高数据库的处理效率。图1为复杂报表示意图;图2为现有技术中接口表示意图;图3为本发明实施例中基于数据库生成报表的环境部署示意图;图4为本发明实施例中基于数据库生成报表的方法流程示意图;图5为本发明实施例中基于数据库生成报表的方法流程示意图;图6为本发明实施例中基于数据库生成报表的装置示意图;图7为本发明实施例中基于数据库生成报表的系统示意图。具体实施例方式下面结合各个附图对本发明实施例技术方案的主要实现原理具体实施方式及其对应能够达到的有益效果进行详细地阐述。如图3所示,为基于数据库生成报表的环境部署图,该环境可以兼容Windows运行环境和SUSE运行环境,包括用户终端、报表定义库,0MM库,0MMP,报表生产库。其中,用户终端用于运行zxR印ort报表设计工具;报表定义库用于保存由zxR印ort报表设计工具生成的各种脚本文件,例如报表标题,报表参数,报表定义项等,这些脚本文件主要由zxR印ort报表设计工具通过调用报表生产库中存储的各种数据生成的;0MM库用于和报表定义库一起进行设置,连接0MMP和zxR印ort报表设计工具;0MMP用于为zxR印ort报表设计工具开发的报表进行显示的平台;报表生产库用于存储报表定义库所需的表,视图,存储过程,数据等。使用ZXR印ort报表设计工具和0MMP制作报表的周期可以分为设计期、版本制作期、运行期。其中,设计期用于利用zxR印ort报表设计工具按照一定的需求开发报表,将生成的报表规则保存在设计期的报表定义库中;设计期的工作是报表制作中最重要的阶段,本发明实施例提供的方法主要应用于设计期;版本制作期用于利用zxR印ort报表设计工具提供的导出功能将报表规则导出为脚本文件,生成报表的版本;运行期用于将脚本文件部署到0MMP的数据库,0MMP中的报表展现引擎解析报表规则数据,根据规则到报表生产库中进行查询统计操作,生成最终用户可以看到的报表页面。本发明实施例提供了一种基于数据库生成报表的的方法,如图4所示,该方法包括以下步骤步骤401、根据用户终端的设置,获取生成复杂报表需要的数据;具体的,数据库与用户终端连接后,数据库根据用户终端的设置,搜索并获取生成复杂报表的需要的数据,一般情况下,该数据包括单元格的显示内容、单元格占用的行列数等,当然根据实际的需要,用户终端还可以设置其它参数以获取其它数据。其中,该用户终端可以通过调用程序语句、配置参数等方式实现设置。步骤402、将上述数据中的行信息数据和列信息数据分别写入虚拟表;具体的,将获取的数据按照字段类型写入第一虚拟表中的相应位置,例如该第一虚拟表的结构为Createtabletempi(1数据type//文字信息类型,2数据type//数值类型,3数据type//数值类型,4数据type//数值类型,5数据type//数值类型......)其中,将获取的数据按照其类型写入第一虚拟表中,然后将其中用户设定的行数据写入第二虚拟表,用户设定的列数据写入第三虚拟表。当然,将第一虚拟表中数据写入第二虚拟表和第三虚拟表时,也可以检测写入的数据携带的标识字段,将第一虚拟表中带有行标识字段的数据的相关信息写入第二虚拟表,带有列标识字段的数据的相关信息写入第三虚拟表,该相关信息可以包括该单元格所占的行列数等信息。该行标识字段和列标识字段可以由用户终端预先进行设置,第二虚拟表和第三虚拟表的结构定义方式可以与第一虚拟表类似。步骤403、根据虚拟表的行号,确定复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;具体的,用户终端将复杂报表中左上角的单元格设置为第一单元格,并规定其起始行列号和结束行列号,如起始行列号为(0,0)、结束行列号为(1,4)。根据第一单元格的结束行号、结束列号和第二虚拟表的行号、第三虚拟表的行号,确定其余单元格的起始行号和结束行号、起始列号和结束列号。这样,根据单元格所在的行列号就可以确定单元格的位置。然后,根据单元格所在的行列号以及行列号与显示内容的预置对应关系,在第一虚拟表中获取该单元格中用于显示内容的数据。可以分多次将上述信息写入数据库中的接口表,例如,第一次写入复杂报表中单元格的总行列数、总单元格数等整体信息,由于根据第二虚拟表和第三虚拟表的行号可以直接确定复杂报表的总行数和总列数,而总单元格数需要确定每个单元格的位置后才能确定,因此,此处写入的总单元格数可以为一个任意值;第二次再写入各个单元格的位置信息和显示内容以及准确的总单元格数等。步骤404、根据接口表生成复杂报表。具体的,使用zxR印ort报表设计工具调用该接口表,生成复杂报表模型的脚本文件,并保存到报表定义库中,以便通过调用该脚本文件生成复杂报表。从以上的描述中,可以看出通过本发明实施例提供的方法,通过将复杂报表的数据存储在虚拟报表中,然后通过虚拟报表的行号确定各个单元格的位置,进而确定各个单元格中显示的内容,再写入数据库中的接口表。现有技术需要经过大量的运算逐个获取每个单元格的位置信息及显示的内容,而本发明实施例通过行号获取各个单元格的位置信息可以减少计算量,从而节省数据库的资源,提高效率,并且减少向接口表写入数据的次数也可以有效的节省资源。下面通过另一实施例对本发明提供的一种基于数据库生成报表的方法进行详细说明,如图5所示,该方法包括以下步骤步骤501、将用户终端与数据库建立连接,并设置生成复杂报表的数据;该用户终端可以通过调用程序语句、配置参数等方式实现设置。步骤502、数据库根据用户的设置,获取该复杂报表的相关数据;数据库根据用户终端的设置,搜索并获取生成复杂报表的需要的数据,一般情况下,该数据包括单元格的显示内容、单元格占用的行列数、行列之间的关系等,当然根据实际的需要,用户终端还可以设置其它参数以获取其它数据。步骤503、将该复杂报表的相关数据写入第一虚拟表;具体的,将获取的数据按照字段类型写入第一虚拟表中的相应位置。步骤504、以第一虚拟表为原始数据表,从中获取行信息数据写入第二虚拟表,获取列信息写入第三虚拟表;假设图1为预生成的复杂报表,写入第一虚拟表的数据包括单元格101地市/PUSH短信息条数(文字信息)单元格102短信息状态码(内容信息)单元格103各地市PUSH数量(文字信息)单元格104比率(文字信息)单元格105省份码(内容信息)单元格106省份名称(内容信息)单元格107地区码(内容信息)单元格108地区名称(内容信息)单元格109各地市发送短信息总条数(内容信息)单元格110各地市PUSH数量(内容信息)单元格111比率(内容信息)上述属于文字信息的数据为用户终端设置的在复杂报表中固定的显示内容,内容信息为根据数据库中相关数据的改变可以动态改变的显示内容。通过检测行标识字段,将101地市/PUSH短信息条数、105省份码、106省份名称、107地区码、108地区名称、109各地市发送短信息总条数的相关信息写入第二虚拟表;通过检测列标识字段,将102短信息状态码的相关信息写入第三虚拟表。该相关信息可以包括该单元格所占的行列数等信息。其中,属于行信息的数据为在复杂报表中对应的显示内容可横向扩展的数据,属于列信息的数据为在复杂报表中对应的显示内容可纵向扩展的数据。例如,在图1中的单元格102对应的显示数据为纵向扩展,因此单元格102的相关信息属于列信息。步骤505、根据第二虚拟表的行号和第三虚拟表的行号,确定单元格的行列信息;具体的,用户终端将复杂报表中左上角的单元格设置为第一单元格,并规定其起始行列号和结束行列号,如图1所示,第一单元格101固定行数目为2行,固定列数目为5列,则根据第二虚拟表的行号可知该复杂报表的总行数为max(r0Wid(temp2))+2,其中rowid(temp2)为第二虚拟表的一个单元格行号信息,max(rowid(temp2))表示计算第二虚拟表的最大行号。根据第三虚拟表的行号可知该复杂报表的总列数为max(rowid(temp3)*2)+5,其中rowid(temp2)为第三虚拟表的一个单元格的列号信息,由于单元格102在复杂报表中占用了两列,因此在计算总列数时,rowid(temp3)需要乘以2。由于第一单元格101的起始行号为0,结束行号1,起始列号为0,结束列号4,则可知单元格102的起始行号为0,结束行号为0,起始列号为rowid(temp3)*2+4,结束列号为rowid(temp3)*2+5;单元格103的起始行号为1,结束行号为1,起始列号为rOWid(temp3)*2+4,结束列号为rowid(temp3)*2+4;单元格104的起始行号为1,结束行号为1,起始列号为rowid(temp3)*2+5,结束列号为rowid(temp3)*2+5;由于用户预先设定单元格102所占的列数为单元格103和单元格104所占列数之和,而单元格102占用两列,因此可以获知单元格103和单元格104各占一列。当然用户可以直接设定某个单元格所占的行列数。单元格105的起始行号为rowid(temp2)+l=2,结束行号为rowid(temp2)+1=2,起始列号为0,结束列号为0;单元格106的起始行号为rowid(temp2)+l=2,结束行号为rowid(temp2)+1=2,起始列号为1,结束列号为1;单元格107的起始行号为rowid(temp2)+l=2,结束行号为rowid(temp2)+1=2,起始列号为2,结束列号为2;单元格108的起始行号为rowid(temp2)+l=2,结束行号为rowid(temp2)+1=2,起始列号为3,结束列号为3;单元格109的起始行号为rowid(temp2)+l=2,结束行号为rowid(temp2)+1=2;起始列号为4,结束列号为4。以此类推,获得各个单元格的行列信息,通过上述各个单元格的行列信息即可确定单元格的具体位置。需要说明的是虚拟表只是一个抽象的数据库表,它的表结构不固定。步骤506、将复杂报表中单元格的行列信息写入数据库中的接口表;8具体的,该接口表为生成复杂报表而设计的临时表结构,该表包括五个字段,该五个字段中的内容确定了报表中固定一个单元格所需要的全部信息。该五个字段为开始行号,结束行号,开始列号,结束列号,单元格显示内容。只要在数据库中将复杂报表中所有的单元格信息都填到这个临时表中,zxR印ort报表设计工具就可以利用这些信息,生成复杂报表。可以先将总行数、总列数等整体信息写入数据库中的接口表,在单元格数目没有确定的情况下,可以写入任意数值,待获取到精确值后再替代该任意值。步骤507、根据单元格所在的行列号以及行列号与显示内容的预置对应关系,在第一虚拟表中获取单元格中用于显示内容的数据。用户终端根据行列之间的关系,设置行列号与显示内容的对应关系,例如复杂报表中,行为时间信息,列为某特定状态码下发送的彩信总量,那么行和列的交叉单元格的信息就是某年某月某特定状态码下发送彩信总量。该预置的对应关系可以为直接的映射关系,也可以为通过公式等技术手段获得的关系,例如单元格110和单元格111的数据可以通过单元格102、单元格105、单元格106、单元格107、单元格108之间的关联关系确定。步骤508、利用接口表生成脚本文件,并保存在报表定义库中;步骤509、调用该脚本文件,生成复杂报表。从以上的描述中,可以看出通过本发明实施例提供的方法,可以通过将复杂报表的数据存储在虚拟报表中,然后通过虚拟报表的行号确定各个单元格的位置,进而确定各个单元格中显示的内容,再写入数据库中的接口表。通过行号获取各个单元格的位置信息可以减少计算量,从而节省数据库的资源,提高效率,并且减少向接口表写入数据的次数也可以有效的节省资源。相应的,本发明实施例还提供了一种基于数据库生成报表的装置,如图6所示,该装置包括获取模块601,用于根据用户终端的设置,获取生成复杂报表需要的数据;写入模块602,用于将所述数据中的行信息数据和列信息数据分别写入虚拟表;处理模块603,用于根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;生成模块604,用于根据所述接口表生成复杂报表。较佳的,在本发明另一实施例中,该写入模块602包括第一写入子模块,用于将获取的数据按照字段类型写入第一虚拟表中的相应位置;第二写入子模块,用于将所述第一虚拟表中带有行标识字段的数据写入第二虚拟表;第三写入子模块,用于将所述第一虚拟表中带有列标识字段的数据写入第三虚拟表。较佳的,在本发明另一实施例中,该处理模块603包括位置获取子模块,用于根据第一单元格的结束行号和所述第二虚拟表的行号,确定其余单元格的起始行号和结束行号;根据第一单元格的结束列号和所述第三虚拟表的行号,确定其余单元格的起始列号和结束列号;其中,用户终端将复杂报表中左上角的单元格设置为第一单元格,并规定其起始行列号和结束行列号;根据单元格所在的行列号确定所述单元格的位置;显示内容获取子模块,用于根据单元格所在的行列号以及所述行列号与显示内容的预置对应关系,在第一虚拟表中获取所述用于显示内容的数据。较佳的,该装置可以位于数据库中,也可以为独立的装置。从以上的描述中,可以看出,根据本发明实施例提出的装置,可以通过将复杂报表的数据存储在虚拟报表中,然后通过虚拟报表的行号确定各个单元格的位置,进而确定各个单元格中显示的内容,再写入数据库中的接口表。通过行号获取各个单元格的位置信息可以减少计算量,从而节省数据库的资源,提高效率,并且减少向接口表写入数据的次数也可以有效的节省资源。相应的,本发明实施例还提供了一种基于数据库生成报表的系统,如图7所示,包括数据库701和用户终端702;数据库701,用于根据用户终端702的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表;用户终端702,用于设置生成复杂报表需要的数据。从以上的描述中,可以看出,根据本发明实施例提出的方法、装置和系统,可以通过将复杂报表的数据存储在虚拟报表中,然后通过虚拟报表的行号确定各个单元格的位置,进而确定各个单元格中显示的内容,再写入数据库中的接口表。通过行号获取各个单元格的位置信息可以减少计算量,从而节省数据库的资源,提高效率,并且减少向接口表写入数据的次数也可以有效的节省资源。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求一种基于数据库生成报表的方法,其特征在于,该方法包括根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表。2.如权利要求1所述的方法,其特征在于,所述根据用户终端的设置,获取生成复杂报表需要的数据,包括数据库与用户终端连接后,数据库根据所述用户终端的设置,搜索并获取生成复杂报表的需要的数据。3.如权利要求1所述的方法,其特征在于,所述将所述数据中的行信息数据和列信息数据分别写入虚拟表,具体包括将获取的数据按照字段类型写入第一虚拟表中的相应位置;将所述第一虚拟表中用户设定的行数据写入第二虚拟表,用户设定的列数据写入第三虚拟表。4.如权利要求3所述的方法,其特征在于,所述根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,具体包括根据第一单元格的结束行号、结束列号和所述第二虚拟表的行号所述第三虚拟表的行号,确定其余单元格的起始行号和结束行号、起始列号和结束列号;其中,用户终端将复杂报表中左上角的单元格设置为第一单元格,并规定其起始行列号和结束行列号;根据单元格所在的行列号以及所述行列号与显示内容的预置对应关系,在第一虚拟表中获取所述用于显示内容的数据。5.如权利要求1所述的方法,其特征在于,所述写入数据库中的接口表,包括第一次写入复杂报表中单元格的总行列数;第二次写入各个单元格的位置信息和显示内容。6.一种基于数据库生成报表的装置,其特征在于,该装置包括获取模块,用于根据用户终端的设置,获取生成复杂报表需要的数据;写入模块,用于将所述数据中的行信息数据和列信息数据分别写入虚拟表;处理模块,用于根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;生成模块,用于根据所述接口表生成复杂报表。7.如权利要求6所述的装置,其特征在于,所述写入模块包括第一写入子模块,用于将获取的数据按照字段类型写入第一虚拟表中的相应位置;第二写入子模块,用于将所述第一虚拟表中带有行标识字段的数据写入第二虚拟表;第三写入子模块,用于将所述第一虚拟表中带有列标识字段的数据写入第三虚拟表。8.如权利要求6所述的装置,其特征在于,所述处理模块包括位置获取子模块,用于根据第一单元格的结束行号和所述第二虚拟表的行号,确定其余单元格的起始行号和结束行号;根据第一单元格的结束列号和所述第三虚拟表的行号,确定其余单元格的起始列号和结束列号;其中,用户终端将复杂报表中左上角的单元格设置为第一单元格,并规定其起始行列号和结束行列号;根据单元格所在的行列号确定所述单元格的位置;显示内容获取子模块,用于根据单元格所在的行列号以及所述行列号与显示内容的预置对应关系,在第一虚拟表中获取所述用于显示内容的数据。9.如权利要求6至8中任一所述的装置,其特征在于,所述装置位于数据库。10.一种基于数据库生成报表的系统,其特征在于,包括数据库和用户终端;所述数据库,用于根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表;所述用户终端,用于设置生成复杂报表需要的数据。全文摘要本发明实施例涉及数据通信领域技术,特别涉及一种基于数据库生成报表的方法、装置和系统,该方法包括根据用户终端的设置,获取生成复杂报表需要的数据;将所述数据中的行信息数据和列信息数据分别写入虚拟表;根据所述虚拟表的行号,确定所述复杂报表中每个单元格的位置及显示内容,并写入数据库中的接口表;根据所述接口表生成复杂报表。通过本发明实施例提供的方法、装置和系统,可以有效的节省数据库空间,提高数据库的处理效率。文档编号G06F17/30GK101833583SQ20101017797公开日2010年9月15日申请日期2010年5月18日优先权日2010年5月18日发明者薛晔申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1