动态报表制作实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IUFO系统业务查询与动态区域的综合应用案例
在NC项目IUFO系统的实施中,除了最基本的三大表及附表之外,常常需要编制一些明细表,例如:应收(付)账款明细表、在建工程明细表等,尤其是在大型国企中,几乎是必做的报表,而且出于报表管理的要求,企业一般不愿意接受仅仅通过账簿查询得到数据,而更希望能够在报表系统实现,进行展现、上下级报送和查询。IUFO系统V3版本,已经具备了一些新的功能,如:业务查询、动态区域、WHX和YHX函数,对这些功能加以灵活利用,就可以比较理想地满足企业编制明细报表的需求。下面,我就以最为典型的应收账款明细表为例,详细阐述关于IUFO系统业务查询、动态区域、WHX函数的综合应用,并从实战角度出发,介绍在编制过程中可能遇到的一些问题以及小技巧。
首先,我们先观察一下企业一般期望的应收账款明细表格式,例如:
从上表的这张报表可以看出有三个关键的问题需要解决:
(1)对方单位(一般在NC系统中建立为客商档案)这一项我们无法通过目前的IUFO 函数来取数获得,按以前的处理方法,必须要手工录入对方单位编码或名称;
(2)该表的行数不确定,每一次编制报表的时候,需要根据当前的账务数据中有余额数的对方往来单位来增减行数;
(3)账龄数据如何获取?怎么样根据当前报表的时间关键字自动地取出按账龄区间划分的往来历史数据?
经过仔细考虑,以上三个问题可以分别利用IUFO系统中的业务查询、动态区域以及WHX函数来实现。(就本例来说,要实现WHX函数的取数,必须使用总账模块中的往来核销子模块)
业务查询是以数据字典或其他业务查询为基础构建而成,主要的作用是从业务系统中提取数据,对IUFO取数进行补充。动态区域可以根据实际数据自动地扩展行或列。WHX函数是按所选往来科目、辅助项、方向、发生开始日期、发生结束日期、核销开始日期、核销结束日期、公司条件取出尚未被核销的金额。
业务查询既可以查询出基本档案数据,也可以根据凭证或业务单据查询出相关的发生数据。但由于NC系统中涉及到凭证或业务单据的表比较多,结构关系复杂,往往需要花费很大的精力,并且要对NC数据库结构非常清楚,熟悉SQL语句才能设计出来,所以,个人认为,尽量使用简单一些的业务查询,再加以其他方法进行完善。一旦业务查询涉及到的表超过6个,基本上做起来会非常困难,即使数据出来了,相应的格式设计和报表引用都会比较麻烦。另外,从我和同事的交流、以及NCZX论坛中的讨论来看,也反映出在实施中设计复杂的业务查询往往是很难达到理想的效果。
下面结合基础档案的业务查询、动态区域、WHX函数,谈一谈怎样在IUFO系统中实现一张应收账款明细表的编制。
一、基础档案的业务查询
注意:
(1)在设计IUFO系统中的业务查询之前,请先检查一下NC系统中“客户
化-二次开发工具-自定义查询-查询引擎环境设置”中的查询所用数据源
是否已经把NC系统和IUFO两个数据源都增加了,否则,可能会在
IUFO系统业务查询中添加业务查询时出现“找不到数据源”之类的错
误提示。
(2)进入IUFO系统-业务查询后,必须使当前定义的数据源切换为IUFO数
据源,也就是说,我们要做的业务查询是定义在IUFO这个数据源下,
才可以被同样是在IUFO数据源下的报表所引用。
(3)随后设置的业务查询中对象所参照的数据源必须设置为NC系统的数据
源,也就是说,所做的业务查询引用的数据来源是NC系统。
进入IUFO系统-业务查询节点,创建文件夹及对象。保存对象后,进入“查询模型-SQL设计-向导设计”,按照提示逐步进行下面的操作。如果对象设置参照的数据源不对,则可能会出现调用不出NC数据字典的情况。
(1)“选择表”,增加查询中所需要用的NC数据表。本例中需要查询出客户编号(在动态区域中作为私有关键字)、客户名称、公司编码(映射报表中的“单位”主关键字)、地区分类名称(作为报表数据中分组统计的依据列),同时,从客商档案中还要判断出客户。因此,根据数据字典,必须添加4张表:公司目录、地区分类、客商基本档案、客商管理档案。
(2)设置“连接条件”。由于需要查询的信息涉及到4张数据表,因此,需要在“连接条件”中按照各表之间可以依赖的相同内容字段将它们关联起来。
提示:
左连接取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到内连接的结果上。右连接与左连接完全对称,“表A左连接表B”与“表B右连接表A”的效果是一样的。
以下述的表A和表B为例,它们以字段K作为键值进行不同连接后会得到不同结果集。
内连接(select A.K, A.V1, B.K, B.V2 from A inner join B on A.K=B.K)的结果是:
左连接(select A.K, A.V1, B.V2 from A left join B on A.K=B.K)的结果是:
右连接(select A.K, A.V1, B.V2 from A right join B on A.K=B.K)的结果是:
简单地描述,就是看所做的业务查询是以哪张表为主,则以该表为中心进行连接,如上图,可以看出,以客商管理档案为主,其他表向该表进行连接。
(3)“选择字段”,在本例中,选择“公司编码”、“地区分类名称”、“客商编号”、“客商名称”。
(4)“筛选条件”设置。由于在此例中,只需要查询出客商属性为“客户”的档案,因此,在“筛选条件”中设置如下:
提示:
bd_cumandoc中的custflag字段表示客商属性:
供应商:对应两条记录,其custflag分别为:null 或者 1
客户:对应两条记录,其custflag分别为: 0 或者 4
客商:对应两条记录,其custflag分别为2 或者 3(2代表客商中客户 3代表客商中的供应商)
(4)最后按照提示进行排序,并确定保存即可。完成后,可点击“浏览”对设计好的业务查询进行检查,看查询结果是否满足要求。
二、报表动态区域格式设计
1、进入报表工具-格式设计,对表样进行设计,通过选择“格式-动态区域设置”,指定数据行为动态区域,随后进行指标提取及私有关键字设置。(提示:动态区域内的关键字称之为私有关键字,一般区域格式上的关键字称之为主关键字)