SSRS和SSAS是支持VB的,而且自定义Code其实也是只支持VB,或者其他语言可以编码成DLL再用咯。下面是官方VB函数库,基本上都能用,保存起来妥妥的。

https://msdn.microsoft.com/en-us/library/ms157328.aspx

https://msdn.microsoft.com/library/c157t28f.aspx

  其实我们一般都在SSRS和SSAS里面用得比较多都是一些字符函数,日期函数,判断函数,如果真心有很复杂的处理,建议在数据里面做比较好。下面贴出官方的函数例子。

Visual Basic 函数

您可以使用 Visual Basic 函数来处理文本框中所显示的数据,或者处理参数、属性或报表其他区域中所用的数据。 本部分举例说明了其中的一些函数。 有关详细信息,请参阅 Visual Basic Runtime Library Members(Visual Basic 运行时库成员)。

.NET Framework 提供了许多自定义格式选项,例如,特定日期格式。 有关详细信息,请参阅 MSDN 上的 格式化类型

数学函数

  • Round 函数可用于将数字舍入为最接近的整数。 下面的表达式将 1.3 舍入为 1:

    1. = Round(1.3)

    您也可以编写表达式以将某个值舍入到您指定的倍数,类似于 Excel 中的 MRound 函数。 用某个生成整数的因子乘以该值,对数字进行舍入,然后除以同一因子。 例如,若要将 1.3 舍入到 .2 (1.4) 的最接近的倍数,请使用下面的表达式:

    1. = Round(1.3*5)/5
日期函数

  • Today 函数可提供当前日期。 此表达式可用在文本框中以在报表上显示日期,或用在参数中以根据当前日期筛选数据。

    1. =Today()
  • 若要基于单个参数提供日期范围,可使用 DateAdd 函数。 下面的表达式提供名为 StartDate 的参数日期之后六个月的日期。

    1. =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
  • Year 函数可显示某个特定的日期的年份。 您可以使用此表达式将日期组合在一起,或者将年份显示为一组日期的标签。 此表达式可以提供一组给定的销售订单日期的年份。 Month 函数和其他函数也可用于日期操作。 有关详细信息,请参阅 Visual Basic 文档。

    1. =Year(Fields!OrderDate.Value)
  • 您可以在表达式中组合函数,以自定义格式。 下面的表达式将“月-日-年”的日期格式更改为“月-周-周数”。 例如,将“12/23/2009”更改为“December Week 3”:

    1. =Format(Fields!MyDate.Value, "MMMM") & " Week " &
    2. (Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
    3. Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString

    当此表达式在数据集中用作计算字段时,您可以在图表上使用该表达式来按每个月内的周聚合值。

  • 以下表达式将 SellStartDate 值的格式设置为 MMM-YY。 SellStartDate 字段为 datetime 数据类型。

    1. =FORMAT(Fields!SellStartDate.Value, "MMM-yy")
  • 以下表达式将 SellStartDate 值的格式设置为 dd/MM/yyyy。 SellStartDate 字段为 datetime 数据类型。

    1. =FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
  • CDate 函数将值转换为日期。 Now 函数根据您的系统返回包含当前日期和时间的日期值。 DateDiff 返回一个指定两个日期值之间的时间间隔数的长整型值。

    以下示例显示了当前年份的开始日期

    1. =DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
  • 以下示例显示了基于当前月的上一个月的开始日期。

    1. =DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
  • 以下表达式生成介于 SellStartDate 和 LastReceiptDate 之间的间隔年。 这些字段在两个不同的数据集内,即 DataSet1 和 DataSet2。 First 函数(报表生成器和 SSRS) 是一个聚合函数,它返回 DataSet1 中 SellStartDate 的第一个值和 DataSet2 中 LastReceiptDate 的第一个值。

    1. =DATEDIFF(“yyyy”, First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
  • DatePart 函数返回一个整型值,该值包含给定日期值的指定组件。以下表达式返回 DataSet1 中 SellStartDate 的第一个值的年份。 指定数据集作用域是因为报表中有多个数据集。

    1. =Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
  • DateSerial 函数返回一个代表指定年、月和日的日期值,其时间信息设置为午夜。 以下示例显示了基于当前月的上一个月的结束日期。

    1. =DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
  • 以下表达式基于用户选定的日期参数值显示不同日期。

示例说明

示例
昨天

=DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1)

两天前

=DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2)

一个月前

=DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value))

两个月前

=DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value))

一年前

=DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

两年前

=DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value))

字符串函数

  • 使用串联运算符和 Visual Basic 常量可将多个字段组合在一起。 以下表达式返回两个字段,它们分别位于同一文本框的不同行中:

    1. =Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
  • 使用 Format 函数可设置字符串中日期和数字的格式。 下面的表达式以长日期格式显示 StartDateEndDate 参数的值:

    1. =Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")

    如果文本框仅包含日期或数字,则应使用文本框的 Format 属性来应用格式设置,而不应在文本框中使用 Format 函数。

  • RightLenInStr 函数对于返回子字符串十分有用,例如将 DOMAIN\username 剪裁为用户名。 下面的表达式从名为 User 的参数返回反斜杠 (\) 字符右侧的字符串部分:

    1. =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))

    下面的表达式使用 .NET Framework SystemString 类的成员而不是 Visual Basic 函数,可得到与上一个表达式相同的值:

    1. =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
  • 显示多值参数的所选值。 下面的示例使用 Join 函数,将参数 MySelection 的所选值串联到单个字符串中,该字符串可设置为报表项中文本框值的表达式:

    1. = Join(Parameters!MySelection.Value)

    以下示例的作用与上面的示例相同,另外在所选值列表之前显示文本字符串。

    1. =”Report for & JOIN(Parameters!MySelection.Value, & “)
  • .NET Framework System.Text.RegularExpressions 中的 Regex 函数对更改现有字符串的格式很有用,例如设置电话号码格式。 以下表达式使用 Replace 函数将字段中的十位电话号码格式从“nnn-nnn-nnnn”更改为“(nnn) nnn-nnnn”:

    1. =System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
    注意

    验证 Fields!Phone.Value 的值没有多余的空格并且类型为 String

查找

  • 通过指定键字段,您可以使用 Lookup 函数为一对一关系(例如键值对)从数据集检索值。 下面的表达式通过提供用于匹配的产品标识符,显示来自数据集(“Product”)的产品名称:

    1. =Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")
LookupSet

  • 通过指定键字段,您可以使用 LookupSet 函数为一对多关系从数据集检索一组值。 例如,一个人可以有多个电话号码。 在下面的示例中,假定数据集 PhoneList 在每一行中包含一个人员标识符和电话号码。 LookupSet 返回值的数组。 下面的表达式将返回值合并到单个字符串中,并且显示 ContactID 指定的人士的电话号码的列表:

    1. =Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
转换函数

使用 Visual Basic 函数可以将字段从一种数据类型转换为另一种不同的数据类型。 转换函数可用于将字段的默认数据类型转换为计算所需的数据类型或用于组合文本。

  • 以下表达式将常量 500 转换为十进制类型,以便将其与筛选表达式值字段中的 Transact-SQL money 数据类型进行比较。

    1. =CDec(500)
  • 下面的表达式显示为多值参数 MySelection 选择的值的数目。

    1. =CStr(Parameters!MySelection.Count)
决策函数

  • Iif 函数可根据表达式的计算结果(True 或 False)返回两个值中的一个。 下面的表达式使用 Iif 函数在 LineTotal 的值超过 100 时返回布尔值 True。 否则,它将返回 False

    1. =IIF(Fields!LineTotal.Value > 100, True, False)
  • 使用多个 IIF 函数(也称为“嵌套 IIF”)可以根据 PctComplete 的值返回三个值中的一个。 下面的表达式可放置在文本框的填充颜色中,从而根据文本框中的值更改背景色。

    1. =IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))

    值大于或等于 10 时,显示绿色背景;介于 1 和 9 之间时,显示蓝色背景;小于 1 时,显示红色背景。

  • 还有另一种方法可以实现相同功能,即使用 Switch 函数。 如果您要测试三个或更多条件,Switch 函数将非常有用。 Switch 函数可返回与序列中计算结果为 True 的第一个表达式相关联的值:

    1. =Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)

    值大于或等于 10 时,显示绿色背景;介于 1 和 9 之间时,显示蓝色背景;等于 1 时显示黄色背景;小于或等于 0 时,显示红色背景。

  • 测试 ImportantDate 字段的值,如果该值大于一周,则返回“Red”;否则返回“Blue”。 此表达式可用于控制报表项中的文本框的 Color 属性:

    1. =IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
  • 测试 PhoneNumber 字段的值,如果为 null(在 Visual Basic 中为 Nothing),则返回“无值”;否则返回电话号码值。 此表达式可用于控制报表项中的文本框的值。

    1. =IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
  • 测试 Department 字段的值,然后返回子报表名称或 null(在 Visual Basic 中为 Nothing)。 此表达式可用于条件性钻取子报表。

    1. =IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
  • 测试字段值是否为空。 此表达式可用于控制图像报表项的 Hidden 属性。 在下面的示例中,字段 [LargePhoto] 指定的图像仅当字段值非空时才会显示。

    1. =IIF(IsNothing(Fields!LargePhoto.Value),True,False)
  • MonthName 函数返回一个包含指定月的名称的字符串值。 以下示例在“月”字段(当该字段包含的值为 0 时)中显示 NA。

    1. IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
报表函数

在表达式中,您可以添加对使用报表中数据的附加报表函数的引用。 本部分举例说明了其中两个函数。 有关报表函数和示例的详细信息,请参阅 聚合函数引用(报表生成器和 SSRS)

Sum

  • Sum 函数可以对某个组或数据区域中的值求和。 此函数在组的组头或组尾中非常有用。 下面的表达式显示 Order 组或数据区域中的数据之和:

    1. =Sum(Fields!LineTotal.Value, "Order")
  • 还可以使用 Sum 函数进行条件聚合计算。 例如,如果数据集包含名为 State 的字段,其可能的值为 Not Started、Started、Finished,则将下列表达式放置在组头中时将只计算 Finished 值的聚合总数。

    1. =Sum(IIF(Fields!State.Value = "Finished", 1, 0))
RowNumber

  • RowNumber 函数,如果用在数据区域内的文本框中,则显示表达式所在文本框中的每个实例的行号。 此函数可用于为表中的各行编号。 还可以用于更复杂的情况,如根据行数插入分页符。 有关详细信息,请参阅本主题中的分页符。

    RowNumber 指定的作用域可控制开始重新计数的时间。 Nothing 关键字表示该函数将从最外面的数据区域中的第一行开始计数。 若要在嵌套数据区域中开始计数,可使用该数据区域的名称。 若要在某个组中开始计数,可使用该组的名称。

    1. =RowNumber(Nothing)

SSRS和SSAS是支持VB的的更多相关文章

  1. IIS7下配置SSAS通过HTTP远程连接

    淘宝 问答 学院 博客 资源下载 高端培训                  登录 注册                                   全部问题 文章 话题 人物         ...

  2. SSRS 报表开发小技巧

    说明: 开发工具为: SQL Server Data Tools (英文版)     开发环境为: SQL Server 2012 (英文版) 一. 饼图数据外部显示 首先我们来看3张效果图:  内部 ...

  3. SSAS IIS 发布

    http://www.cnblogs.com/zhangzt/p/4046259.html IIS7下配置SSAS通过HTTP远程连接 淘宝 问答 学院 博客 资源下载 高端培训            ...

  4. 演练:使用Xamarin.Forms开发产品介绍性质的应用(VB版)

    概述 Xamarin这个使用mono和.net core的跨平台开发框架这几年在不断发展.被微软收购后的Xamarin为个人开发者提供了免费版的Xamarin for Visual Studio,吸引 ...

  5. VB已死?还是会在Roslyn之下焕发新生?

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 由于最初的ASP.NET 5测试版并未支持VB,导致社区有一种声音:觉得VB将死.今天我们就 ...

  6. 在VB中使用Linq To SQLite注意事项

    昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...

  7. 百万程序员的苦恼-选择VB.NET还是C#

    在过去的一年中,互联网上的各大讨论区或者电子邮件的讨论列表都对微软的VB.NET以及C#的各种优越性做了探讨.这些讨论围绕的主要问题就是,我应该先学哪一个,VB.NET还是C#?? 我写这篇文章的目的 ...

  8. Dynamics CRM 2015中的SSRS Report集成配置

    大家应该都知道.Dynamics CRM能集成SSRS Report,而且我也在之前的博文中讨论过怎样制作一个简单的SSRS Report并部署到Dynamics CRM中.今天我们来看看一些比較有用 ...

  9. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...

随机推荐

  1. SGU131 - Hardwood floor(状态压缩DP)

    题目大意 给定一个N*M大小的矩形,要求你用1*2和2*2(缺个角)的砖块把矩形铺满(不能重叠),问总共有多少种铺法? 题解 受POJ2411的影响,怎么都没想到3,4,5,6这几种情况该怎么放置,看 ...

  2. Java内存管理原理及内存区域详解

    一.概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间.Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下 ...

  3. LaTex 高中数学公式

    排版数学公式是TeX系统设计的初衷,它在LaTeX中占有特殊地位,也是LaTeX最为人所称道的功能之一.基于对MathType排版效果的不满意,以及对公式进行检索的需求,我们使用LaTeX输入数学公式 ...

  4. Altium Designer快捷键 【worldsing笔记】

    Shift + R 切换三种布线模式 (忽略, 避开或推挤) Shift + E 触发电气格点开/关 Shift + B 建立查询 Shift + PgUp 放大到最小的递增 Shift + PgDn ...

  5. Linux就是这个范儿之第一次亲密接触(3)

    原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.4 返璞归真的命令行 有一种说法,现代计算机不是靠电力驱动,而是靠“鼠标”.多少应用程序的界面需 ...

  6. JavaScript要点 (三) 保留关键字

    在 JavaScript 中,一些标识符是保留关键字,不能用作变量名或函数名. JavaScript 标准 所有的现代浏览器完全支持 ECMAScript 3(ES3,JavaScript 的第三版, ...

  7. OC/Swift第三方添加出错解决方法

    (未经同意,不得转载!) ------------------------华丽分割线-----------------------

  8. HTML中标签和元素的区别

    作为一个前端,相信大家最先接触应该都是HTML吧?在HTML中很多人可能都没有把什么叫标签,什么叫元素这个概念搞清楚,为了把这个大家不曾留意的易混淆的搞清楚,特作此一文彻底解决掉这个问题! 首先我们来 ...

  9. cocos2d-x 纹理研究

    转自:http://blog.csdn.net/qq51931373/article/details/9119161 1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要 ...

  10. jquery ajax 报交请求返回 HTTP 400 错误

    提交请求的AJAX代码如下: 点击(此处)折叠或打开 $.ajax({ url: "${ctx}/selfhelp/userAttributeAnalysis/userAttributeLi ...