一种实现自定义报表中查询条件联动的方法

文档序号:6520314阅读:266来源:国知局
一种实现自定义报表中查询条件联动的方法
【专利摘要】本发明公开一种实现自定义报表中查询条件联动的方法,自定义报表查询条件,由于输入条件的界面组件由用户自己布局与定义,同时组件之间的联动逻辑也由用户自己定义,这就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。本发明进行脚本设计与解析,通过脚本函数的灵活组合实现所述两个可变逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
【专利说明】一种实现自定义报表中查询条件联动的方法
[0001]
【技术领域】
[0002]本发明涉及一种脚本设计与解析方法,具体是一种实现自定义报表中查询条件联动的方法,属于计算机领域。
【背景技术】
[0003] 在自定义报表开发设计中,查询条件之间会存在相互关联,存在联动关系,联动关系包含:
1.当一个条件组件输入条件值,刚失去焦点时,其它条件组件根据这个输入的值进行数据更新;
2.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动隐藏与显示,实现界面自动布局;
3.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动变成允许输入状态与不允许输入状态;
4.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动改变颜色。
[0004]自定义报表查询条件,由于输入条件的界面组件由用户自己布局与定义,同时组件之间的联动逻辑也由用户自己定义,这就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。按照传统报表设计逻辑,这两个可变逻辑通过编写程序代码,根据不同报表,实现对应报表的这两个可变逻辑功能,这就导致传统报表设计逻辑不能应用于自定义报表条件联动逻辑设计。

【发明内容】

[0005]发明目的:针对现有技术中存在的问题,本发明提供一种实现自定义报表中查询条件联动的方法。通过脚本函数的灵活组合实现上述提及的两个动态逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
[0006]技术方案:一种实现自定义报表中查询条件联动的方法,在自定义报表中设计的查询条件联动,主要包含如下功能:
一个查询条件组件值改变,另外查询条件组件值数据更新;
一个查询条件组件值改变,另外查询条件组件可编辑状态改变;
一个查询条件组件值改变,另外查询条件组件显示与隐藏,实现动态布局;
在自定义报表设计中,由于查询条件组件设计是报表设计人员根据报表需求而进行逻辑设计与布局,因此报表查询条件组件对象动态可变,不同报表有不同组件对象,通过联动功能以及查询条件组件对象动态可变的关系,在实际自定义报表设计中就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。[0007]在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件。查询联动总体思路为:通过脚本语言,结合查询条件唯一的ID属性,获取每一个查询条件组件实例,通过实例携带的脚本函数,实现函数提供的3种联动功能的组合,实现自定义报表的查询联动功能。
[0008]自定义报表查询条件联动包含5个功能部分:
1.联动脚本设计
在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中可以设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,为了脚本的可扩充性与易用性,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,但增加两个限制,一是一条语句占用一行,二是每条语句用分号分隔。脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数。本发明方法提供了针对如上需求的各种函数如下:
1.1获取组件对象函数
getElementById(组件id):通过组件ID获取查询条件组件实例 1.2数据更新函数 组件实例.DataUpdate O ;
1.3组件可编辑状态函数 组件实例.Enable O:使组件可编辑;
组件实例.DisableO:使组件不可编辑;
1.4组件隐藏函数 组件实例.VisibleO:使组件可见;
组件实例.1nvisibleO:使组件不可见;
1.5组件设值函数 组件实例.setValue ( “值”);
1.6组件设置颜色函数
组件实例.setColorValue ( “值”);
2.组件对象创建;
在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID。根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析。
[0009]3.对应脚本函数功能实现
3.1获取组件对象函数
getComponentOb j (String objld):通过ID,获取第2功能部分创建的组件实例,并刷
新界面显示。
[0010]3.2数据更新函数
DataUpdate (String objld):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值,过滤数组值对中的数据,并刷新界面显示。[0011]3.3组件可编辑状态函数
enable (String objld):通过id,设置对应组件为可编辑状态,并刷新界面显示; Disable (String objld):通过id,设置对应组件为不可编辑状态,并刷新界面显示。
[0012]3.4组件隐藏函数
Visible (String objld):通过id,设置对应组件为可见状态,并刷新界面显示; Invisible (String objld):通过id,设置对应组件为不可见状态,并刷新界面显示。
[0013]3.5组件设值函数
setValue (String objld, String sValue):通过 id,设置对应组件值为 sValue,并刷新界面显示。
[0014]3.6组件设置颜色函数
setColorValue (String objld, String sColorValue):通过 id,设置对应组件颜色值为sColorValue,并刷新界面显示。
[0015]4.脚本解析; 根据第2个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数,脚本解析引擎流程为:
4.1把脚本按照换行符进行分割,解析为脚本语句数组;
4.2循环读取每一行数组,执行每一行脚本;
4.3如果当前行的脚本时if表达式,进行if表达式有效段的截取;
4.4判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;
4.5调用对应脚本功能函数;
4.6实现该脚本功能
4.7 循环 4.2 至 4.6。
[0016]5.解析结果执行;
根据第3功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
[0017]有益效果:与现有技术相比,本发明提供的实现自定义报表中查询条件联动的方法,通过脚本函数的灵活组合实现上述提及的两个动态逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
【专利附图】

【附图说明】
[0018]图1为本发明实施例的自定义报表查询条件按联功能图;
图2为本发明实施例的脚本解析流程图。
【具体实施方式】
[0019]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0020]如图1所示,实现自定义报表中查询条件联动的方法为:
在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件。
[0021]自定义报表查询条件联动包含5个功能部分,每个功能部分实现逻辑如下:
1.联动脚本设计
在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中可以设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,为了脚本的可扩充性与易用性,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,一条语句占用一行,每条语句用分号分隔,脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数。各种函数如下:
1.1获取组件对象函数
getElementById(组件id):通过组件ID获取查询条件组件实例。
[0022]1.2数据更新函数 组件实例.DataUpdate O ;
1.3组件可编辑状态函数
组件实例.Enable O:使组件可编辑;
组件实例.Disable O:使组件不可编辑;
1.4组件隐藏函数 组件实例.Visible O:使组件可见;
组件实例.1nvisibleO:使组件不可见;
1.5组件设值函数 组件实例.setValue( “值”);
1.6组件设置颜色函数
组件实例.setColorValue ( “值”);
2.组件对象创建;
在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID。根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析。
[0023]3.对应脚本函数功能实现 3.1获取组件对象函数
getComponentObj (String objld):通过id,获取第2功能部分创建的组件实例,并刷
新界面显示。
[0024]3.2数据更新函数
DataUpdate (String objld):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值过滤数组值对中的数据,并刷新界面显示。
[0025]3.3组件可编辑状态函数enable (String objld):通过id,设置对应组件为可编辑状态,并刷新界面显示; Disable (String objld):通过id,设置对应组件为不可编辑状态,并刷新界面显示。
[0026]3.4组件隐藏函数
Visible (String objld):通过id,设置对应组件为可见状态,并刷新界面显示; Invisible (String objld):通过id,设置对应组件为不可见状态,并刷新界面显示。
[0027]3.5组件设值函数
setValue (String objld, String sValue):通过 id,设置对应组件值为 sValue,并刷新界面显示。
[0028]3.6组件设置颜色函数
setColorValue (String objld, String sColorValue):通过 id,设置对应组件颜色值为sColorValue,并刷新界面显示。
[0029]4.脚本解析;
根据第2个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数,如图2所示,脚本解析引擎流程为:
4.1把脚本按照换行符进行分割,解析为脚本语句数组;
4.2循环读取每一行数组,执行每一行脚本;
4.3如果当前行的脚本时if表达式,进行if表达式有效段的截取;
4.4判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;
4.5调用对应脚本功能函数;
4.6实现该脚本功能
4.7 循环 4.2 至 4.6。
[0030]5.解析结果执行;
根据第3功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
【权利要求】
1.一种实现自定义报表中查询条件联动的方法,其特征在于:在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件;通过脚本语言,结合查询条件唯一的ID属性,获取每一个查询条件组件实例,通过实例携带的脚本函数,实现函数提供的3种联动功能的组合,实现自定义报表的查询联动功能。
2.如权利要求1所述的实现自定义报表中查询条件联动的方法,其特征在于,3种联动功能的组合,分别为: 一个查询条件组件值改变,另外查询条件组件值数据更新; 一个查询条件组件值改变,另外查询条件组件可编辑状态改变; 一个查询条件组件值改变,另外查询条件组件显示与隐藏,实现动态布局。
3.如权利要求2所述的实现自定义报表中查询条件联动的方法,其特征在于,自定义报表查询条件联动包含5个功能部分: .1.联动脚本设计 在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中可以设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,但增加两个限制,一是一条语句占用一行,二是每条语句用分号分隔;脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数; . 2.组件对象创建; 在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID ;根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析; . 3.对应脚本函数功能实现;. 4.脚本解析; 根据第2个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数;. 5.解析结果执行; 根据第3功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
4.如权利要求3所述的实现自定义报表中查询条件联动的方法,其特征在于,脚本提供的获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数分别为: . 1.1获取组件对象函数 getElementById(组件id):通过组件ID获取查询条件组件实例; . 1.2数据更新函数 组件实例.DataUpdate O ;. 1.3组件可编辑状态函数组件实例.EnableO:使组件可编辑; 组件实例.DisableO:使组件不可编辑; . 1.4组件隐藏函数 组件实例.VisibleO:使组件可见; 组件实例.1nvisibleO:使组件不可见; . 1.5组件设值函数 组件实例.setValue( “值”); . 1.6组件设置颜色函数 组件实例.setColorValue ( “值”)。
5.如权利要求4所述的实现自定义报表中查询条件联动的方法,其特征在于,对应脚本函数功能实现如下: . 3.1获取组件对象函数 getComponentOb j (String objld):通过id,获取第2功能部分创建的组件实例,并刷新界面显示;. 3.2数据更新函数 DataUpdate (String objld):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值,过滤数组值对中的数据,并刷新界面显示; . 3.3组件可编辑状态函数 enable (String objld):通过id,设置对应组件为可编辑状态,并刷新界面显示; Disable (String objld):通过id,设置对应组件为不可编辑状态,并刷新界面显示;. 3.4组件隐藏函数 Visible (String objld):通过id,设置对应组件为可见状态,并刷新界面显示; Invisible (String objld):通过id,设置对应组件为不可见状态,并刷新界面显示; .3.5组件设值函数 setValue (Str ing objld, String sValue):通过 id,设置对应组件值为 sValue,并刷新界面显示; . 3.6组件设置颜色函数 setColorValue (String objld, String sColorValue):通过 id,设置对应组件颜色值为sColorValue,并刷新界面显示。
6.如权利要求2-5任意一项所述的实现自定义报表中查询条件联动的方法,其特征在于,脚本解析引擎流程为: .4.1把脚本按照换行符进行分割,解析为脚本语句数组; .4.2循环读取每一行数组,执行每一行脚本; . 4.3如果当前行的脚本时if表达式,进行if表达式有效段的截取; .4.4判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;. .4.5调用对应脚本功能函数; . 4.6实现该脚本功能;
.4.7 循环 4.2 至 4.6。
【文档编号】G06F17/30GK103577610SQ201310598182
【公开日】2014年2月12日 申请日期:2013年11月22日 优先权日:2013年11月22日
【发明者】李明, 彭建华 申请人:河海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1