找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

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

[规则] ···存储过程的过滤条件如何实现多项选择?···

[复制链接]
发表于 2010-10-28 10:56:33 | 显示全部楼层 |阅读模式

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

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

×
以下是我写的一个存储过程,比较粗糙。但是,我现在想实现  @cInvCode 这个参数能在uap报表的过滤条件中实现多项选择,就是一次可以选择多个存货档案进行报表查询,不知要如何写,请高人指教,小弟在此先拜谢了!!!



alter procedure tabAccountNew      
        @Sdate varchar(10)='',   
        @Edate varchar(10)='',   
        @cInvCode varchar(50)='',   
        @cwhcode varchar(100)='',   
        @cfree varchar(100)=''   
as     
   
declare @sql nvarchar(4000),@filterStr varchar(100),@cwh varchar(100),@cf varchar(100)   
if @cInvCode <> ''
set @filterStr = 'a.cInvCode  like  ''%' + @cInvCode + '%'''
else set @filterStr='1 = 1'
if @Sdate = ''
set @Sdate= '1 = 1'
if @Edate= ''
set @Edate= '1 = 1'
if @cwhcode <> ''
set @cwh = 'b.cwhcode like ''%' + @cwhcode + '%'''  
else set @cwhcode ='1 = 1'   
if @cfree <>''   
set @cf = 'a.cFree1 like ''%' + @cfree + '%'''   
else set @cf = '1 = 1'   
SET @sql = '
delete from dbo.a
INSERT INTO dbo.a select cInvCName,a.cwhcode,a.cInvCode,cInvName,a.cFree1,sum(在途量)ZTL,sum(成品入库量) RKL,sum(销售出库量) CKL,iQuantity from(  
--调拨在途  
select cInvCName,a.cwhcode,b.cInvCode,cInvName,cFree1,b.iQuantity as 在途量,0 成品入库量,0 as 销售出库量 from RdRecord a, RdRecords b ,Inventory c ,InventoryClass d where a.id=b.id and a.cbustype= ''调拨入库'' and csource=''调拨''
and isnull(a.chandler,'''')='''' and convert(varchar(10),ddate,120) between ''' + @Sdate + ''' and ''' + @Edate + ''' and c.cInvCode=b.cInvCode and c.cInvCCode = d.cInvCCode
union   
--产品入库  
select cInvCName,a.cwhcode,b.cInvCode,cInvName,cFree1,0 在途量,b.iQuantity as 成品入库量,0 as 销售出库量 from RdRecord a,RdRecords b, Inventory c ,InventoryClass d where a.id=b.id and a.cbustype=''成品入库''
and isnull(a.chandler,'''')<>'''' and convert(varchar(10),ddate,120) between ''' + @Sdate + ''' and ''' + @Edate + ''' and c.cInvCode=b.cInvCode and c.cInvCCode = d.cInvCCode
union   
--销售出库量  
select cInvCName,a.cwhcode,b.cInvCode,cInvName,cFree1,0 在途量,0 成品入库量,b.iQuantity as 销售出库量 from RdRecord a,RdRecords b, Inventory c ,InventoryClass d  where a.id=b.id and a.cbustype=''普通销售''
and isnull(a.chandler,'''')<>'''' and convert(varchar(10),ddate,120) between ''' + @Sdate + ''' and ''' + @Edate + ''' and c.cInvCode=b.cInvCode and c.cInvCCode = d.cInvCCode
) a ,CurrentStock b where ' + @filterStr +' and ' + @cwh + ' and ' + @cf + ' and  b.cInvCode=a.cInvCode and b.cwhcode=a.cwhcode
group by cInvCName,a.cwhCode,a.cInvCode,cInvName,a.cFree1,iQuantity
select * from dbo.a'   
EXEC (@sql)
发表于 2013-9-5 15:32:58 | 显示全部楼层
好贵啊,先收藏,有空再说了
回复 点赞 拍砖

使用道具 举报

发表于 2013-10-16 11:05:41 | 显示全部楼层
附件太贵了,50个金币啊
回复 点赞 拍砖

使用道具 举报

发表于 2013-9-6 10:37:28 | 显示全部楼层
太贵了吧~这要怎么下
回复 点赞 拍砖

使用道具 举报

发表于 2010-10-28 16:38:39 | 显示全部楼层
这个问题到了一定深度了
发表于 2010-10-28 16:42:27 | 显示全部楼层
UAP报表中取过滤项的区间值.rar (594 Bytes, 下载次数: 8, 售价: 50 金币) 充值金币->
发表于 2010-10-28 16:43:32 | 显示全部楼层
上面附件是如何使存储过程的参数与UAP报表中过滤参数(区间值)对应起来
发表于 2010-10-28 16:44:13 | 显示全部楼层
是个文本文件,里面有2个例子
发表于 2010-11-21 21:18:49 | 显示全部楼层
都这么贵啊,穷啊
发表于 2011-4-23 17:09:46 | 显示全部楼层
什么东西这么贵啊,买不起
发表于 2011-4-26 21:29:49 | 显示全部楼层
这个有点贵哟
发表于 2011-5-2 21:49:32 | 显示全部楼层
研究下...
发表于 2011-7-12 18:35:56 | 显示全部楼层
太贵了...........................
发表于 2011-7-12 18:38:00 | 显示全部楼层
我看了一下,写的不错..............
发表于 2012-2-17 13:55:58 | 显示全部楼层
顶,楼主啊!naojin的太贵了哦!
回复 点赞 拍砖

使用道具 举报

发表于 2012-2-21 09:13:21 | 显示全部楼层
能不能不要把金币设那么高啊。
回复 点赞 拍砖

使用道具 举报

发表于 2012-2-22 10:48:56 | 显示全部楼层
筹了3天金币,2楼的文本文件方法不能解决楼主的判定存储过程参数值,并更改最终执行的sql语句得出不同结果的要求啊!
回复 点赞 拍砖

使用道具 举报

发表于 2012-4-22 22:49:34 | 显示全部楼层
什么东西,我也遇到这个问题,有人能解决一下吗
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

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

GMT+8, 2024-11-24 01:28 , Processed in 0.066953 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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