在一个报表中显示服务器名称或IP地址
当报表数据是运行在几个报表服务器上时,用户经常会搞错。你可能有一个测试和开发环境,但是你不知道你的报表数据是来自于哪个服务器。
很明显,解决这个问题的一个方法是在报表中显示报表服务器名称或它的IP地址。不幸的是,没有直接的函数或方法来获取服务器名称。但是有这个工作环境。
在报表服务中,有一个全局参数叫做ReportServerUrl,它可以显示报表URL。这个值的开始部分是来自于C:Program FilesMicrosoft SQL ServerMSSQL.#Reporting ServicesReportServer 文件夹下的RSReportServer.config 文件。在这个文件里,有叫做URLRoot 的结点。它是http://{IPAddress}/reportserver或http://{Server Name}/reportserver。你需要找到方法来提取这个IP地址或服务器名称,你可以使用下面的表达式:
Mid(Globals!ReportServerUrl,8,InStr(9,Globals!ReportServerUrl,"/") - 8) |
这个表达式所做的,是提取从//位置后的字母到/位置后的字母间的名称,这是服务器的服务器名称或IP地址。
将数字类型转化为文本
这是在SSRS论坛上经常看到的问题,因为许多用户需要将数字类型的数据显示为文本。尽管在水晶报表中有一个函数,但是在SSRS中没有函数。不过,你可以在SSRS中自己写个函数。
让我们用下面的查询来举个例子:
SELECT Sales.SalesPerson.SalesPersonID AS SalesPerson, SUM(Sales.SalesOrderDetail.OrderQty * Sales.SalesOrderDetail.UnitPrice) AS Amount FROM Sales.SalesOrderDetail INNER JOIN Sales.SalesOrderHeader ON Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderID INNER JOIN Sales.SalesPerson ON Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.SalesPersonID GROUP BY Sales.SalesPerson.SalesPersonID |
为了使用这个例子,让我们假设我们需要显示销售人员的id和数量,数量要以文本形式显示。
按照下面的步骤来创建一个报表。
1. 创建一个SSRS项目。
2. 添加新报表到这个项目中。
3. 添加一个数据源,它的数据库指向adventureworks。
4. 用上面的查询创建一个数据集。
5. 从工具箱拖拉一个表来进行显示,并拖拉字段到这个表上。
下一步是创建一个函数来转换数字类型为文本。
到报表菜单选项中选择报表属性。选择对话框中的代码标签页并复制和黏贴下面的代码:
' Source SHARED units AS String() = _ SHARED tens AS String() = _ SHARED digits AS String() = _ SHARED expr AS NEW _ PUBLIC Function ExpandPrice(Price AS Double, _ Dim temp AS New System.Text.StringBuilder() If CDbl(cents) > 1 Then Function ExpandIntegerNumber(pNumberStr AS String) AS String Function GetNumberUnder1000Str(pNumber AS String) AS String Function GetNumberUnder100Str(pNumber AS String) AS String |
上面的代码是从网站上代码片段那里得到的。
接下来,你需要在你的表中调用这个函数。你需要在你需要转换你的数字为文本的字段输入下面的函数调用。
=Code.ExpandPrice(Fields!Amount.Value,".") |
最后,你将看到下面的屏幕。
以选择的颜色显示网格