U8自定义报表使用存储过程时,使用系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用友U8自定义报表使用存储过程时,
使用系统的分组和小计、累计、合计
(Van 2009.2.3 晚E-mail:********************)
在U8自定义报表中,使用存储过程可以制作比较复杂的报表,但是如果其中有需要有小计,那就很难找出那一行是小计了。
能不能使用系统自带的分组合计功能呢?可以。
下面是本人尝试,还希望各位朋友多多指教。
1、效果图如下:
使用存储过程
出现小计
(2)步骤:
第一步:按照U8要求编写好存储过程。
按照U8的要求编写存储过程有两点要求:一、该存储过程一定只有一个字符型的输入参数;二、报表显示的数据保存在一个临时表中。
下面是这个存储过程的格式模板:
为什么需要一个参数呢?因为该参数实际是接收从下面窗口的输入字符串(这个窗口叫做“筛选器”)。
是否使用筛选器,根据是否让用户设置过滤条件而定。
无论这个筛选器的项有多少,它只有一个字符参数传递给调用的存储过程,所有这个参数一般都设置得很大。
如果不需要参数,一般给它一个默认值,后面也不用理会它,像模板中的:@charParameter nvarchar(1000)='' 。
为什么需要一个临时表呢?这里不一定是临时表,持久表也可以。
只是放在tempdb数据库中不会引起不必要的麻烦。
这个表是用来保存报表最终显示的数据的。
一般是使用“select ...into ...”语句将数据插入该表中。
编好存储过程后,打开自定义报表。
选择好帐夹后,新建一个报表,然后会打开“新建报表窗口,输入调用存储过程的语句。
调用存储过程的语句在U8里的格式如下:with pocedure <procedure name > <temp table name > 。
打开报表后的效果如下:
第二步:设置报表条件
这一步是最关键的一步。
具体可以分为四步,具体如下:
(1) 更改数据源,使临时表的各列出现,设置汇总、小计和分组。
方法是将with pocedure
<procedure name > <temp table name > 改为 select * from <temp table name > 。
然后点击“运行”按钮,接着点击“保存”按钮。
最后关闭该窗口。
(2) 设置分组、汇总和小计。
点击报表窗口上的“格式”打开了“报表格式定义”窗口。
如下图所示。
点击“视图”,选择“显示分组列视图”,在新弹出的窗口设置好分组,然后将其关闭。
在“报表格式定义”窗口中设置好需要汇总的的列。
但是不要,一定不要保存结果,因为要将从新将数据源设置成为with pocedure <procedure name > <temp table name > 格式才可以关闭,否则就前功尽弃。
1 2
3 1
3 Select * from tempdb..van_t_SaleMonth1
2
(3)重新打开数据源窗口,将数据源从新设置为with pocedure <procedure name > <temp table name > 格式,然后点击“保存”按钮。
将其关闭,同时将报表窗口也关闭。
(4)回到“报表格式定义”窗口,点击“保存”按钮,将格式保存,这样就完成了。
记得:关闭报表窗口后,才保存格式设置,这样才可以成功。
第三步:从新打开报表将出现开始时出现的效果。