找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 4417|回复: 3

U8 自定义报表存储过程的调用方法

[复制链接]
发表于 2008-1-17 20:30:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
U8 自定义报表存储过程的调用方法:(参照U850二次开发手册修改)
使用储过程作为报表数据源
        自定义报表虽然提供了灵活的编程接口,但使用比较复杂。我们提供了另外一种组织复杂数据源的方法:在数据源语句中直接调用存储过程。这种方法的优点是无须其他编程语言,也不必去学习自定义报表那些令人头晕的接口,使用简单;缺点是只能通过单一字符串提供条件,这会限制存储过程的执行效率和程序设计的灵活性。
调用存储过程语法
        <with pocedure> <procedure name > <temp table name >
        说明:
        <with pocedure>         关键字,说明当前数据源取自存储过程
        <procedure name >         存储过程名称,必须
        <temp table name >        存储过程生成的临时表名,必须
        例28:
                with procedure sp_test tempdb..tmptable
       
存储过程设计规范
被调用的存储过程有且必须只有一个字符串参数,该参数接收条件字符串(如果报表没有定义条件项则该参数为空字符串),该参数应留出足够的长度以接收条件字符串;存储过程最终必须生成临时表,临时表名是在调用时指定的哪个。

使用存储过程举例
1. 在数据库创建存储过程  
例28:
CREATE PROCEDURE Sp_Test
(  --条件参数  
@chrWhere varchar(1000)=''
   )
AS
Declare @chrsql varchar(2000)
--删除已经存在的临时表
If exists(select name from tempdb..sysobjects where name ='sa_tmpupdate')
      Drop table tempdb..Sa_tmpUpdate
--生成临时表
set @chrsql ='select * into tempdb..sa_tmpupdate from inventory '
   --加上条件
   if ltrim(rtrim(@chrwhere)) <>  ''
     set @chrsql = @chrsql + ' where ' + @chrwhere
exec(@chrsql )  
select * from tempdb..sa_tmpupdate
GO
        2.创建测试报表,直接在SQL视图中书写调用存储过程语句如图:



         
       
3.保存报表,设置格式和条件。


如下图,在报表查询时

传递字符串实际执行命令:
exec sp_test 'cinvcode>=''010101'' and  cinvcode<=''010102'''
目前存储过程只接受一个参数,可通过此参数传递过滤条件。
发表于 2008-1-17 21:04:01 | 显示全部楼层
不错的资料,收藏学习了。
发表于 2008-6-5 17:29:21 | 显示全部楼层
太高深了,都到了二次开发的水平了。。。。
发表于 2008-6-5 17:37:00 | 显示全部楼层
不错  回去学学
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-24 02:58 , Processed in 0.039270 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表