自创算法实现Reporting Service中多值判定

系统 1515 0
前提条件 :用Reporting Service做过报表,并碰到想确定多选下拉框选了哪些选项却无法确定的情况。如:根据选项显示相应的值。
功能实现 :用算法实现Reporting Service中多值判定。
算法说明 :设a=1,b=2,c=4,d=8,e=16,f=32,大家能从这组数中看到什么规律?很容易得到它们的值是2的n-1次方,还有什么呢?很容易忽视的一点:b=a+1,c=a+b+1,d=a+b+c+1,e=a+b+c+d+1,f=a+b+c+d+e+1,这个规律决定了一件事,如果每个数只能用一次,只要给出一个他们的和值那就唯一决定了产生这个和值的一组数。那么,在多选下拉框中,正好符合每个数只能用一次的情况,因此,如果给每个选项赋一个值,给出他们的和值就能判定该选项是否被选中。经过一段时间的验证,我得出判定方法如下:和值除以要判定选项的值,取整数部分再除以2,取余,如果余数为1那就被选中了,用伪代码表示就是:
if(sum \ value mod 2=1)return true,该算法是否已被前人定义我不知道,我数学比较差,如果已经有了那就见笑了。
具体实现 :添加一个内部参数,用来保存和值。和值可以通过SQL语句得到,如下:
select sum(val) as sum from
(select 1 as val,'a' as sel
Union
select 2,'b'
Union
select 4,'c'
Union
select 8,'d'
Union
select 16,'e'
Union
select 32,'f' ) as t
where t.sel in (@MulSel)
a\b\c\d\e\f分别为多选参数的值.
有了这个和值,就可以判定哪些值该显示哪些该隐藏,将表达式写在“可见性”就行。


总结 :这只是我自己琢磨的方法,有闭门造车之嫌,如果已有更好的或我进死胡同了,希望各位不吝赐教,在此仅作抛砖引玉。

自创算法实现Reporting Service中多值判定


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论