Reporting services 将表达式转换为与FetchXML报表兼容

Reporting services 将表达式转换为与FetchXML报表兼容,reporting-services,dynamics-crm-2011,dynamics-crm-2013,Reporting Services,Dynamics Crm 2011,Dynamics Crm 2013,我已经将一个SSRS报告从SQL转换为FETCHXML,该报告由内部部署的CRM 2011使用 现在,报告使用CRM 2013作为数据源 在本报告的旧版本中,我们有这样的表述: =String.Format(新系统.全球化.文化信息(1033),chrw(123)&“0”&chrw(125)&“&chrw(40)&“Count”&chrw(58)&“&chrw(123)&chrw(123)&“1”&chrw(125)&chrw(41),IIf(IsNothing(Fields!stepname.

我已经将一个SSRS报告从SQL转换为FETCHXML,该报告由内部部署的CRM 2011使用

现在,报告使用CRM 2013作为数据源

在本报告的旧版本中,我们有这样的表述:

=String.Format(新系统.全球化.文化信息(1033),chrw(123)&“0”&chrw(125)&“&chrw(40)&“Count”&chrw(58)&“&chrw(123)&chrw(123)&“1”&chrw(125)&chrw(41),IIf(IsNothing(Fields!stepname.Value),“notspecified”,Fields!stepname.Value),CInt(Count(“”).ToString(First)(Fields!numbers!NumberFormat)&chrFormat\u 0\u Precision.Value,“dsnumbers-currencyInfo”),Code.GetCultureInfo())

我需要更新这个表达式以与在线实例兼容,但我不明白它应该做什么

我被告知cultureinfo是静态的,不会改变,所以可以硬编码


首先,Cint(Count(“”)有什么作用?我不明白这个表达式有什么作用

我可以解释
IIF(无任何内容(字段!stepname.Value),“未指定”,字段!stepname.Value),CInt(计数(“”)。ToString(第一个字段!NumberFormat\u 0\u Precision.Value,“DSNumberAndCurrencyInfo”),code.GetCultureInfo())

不是因为为什么要这样做,而是因为什么是可能的输出

1) CInt(Count("") - 
如果当前组的行数在“组总数”行中,则会给出当前组的行数;如果有组,则如果没有组,则会始终给出1作为当前行数

2) ToString(First(Fields!NumberFormat_0_Precision.Value, "DSNumberAndCurrencyInfo"), Code.GetCultureInfo())  - 
这里有两个参数

a)
First(Fields!NumberFormat\u 0\u Precision.Value)
它将是数字的格式

b) 第二个将是来自 系统类。但这是来自报告的自定义代码。您应该检查报告的自定义代码

3) IIF(IsNothing(Fields!stepname.Value), "Not specified", Fields!stepname.Value)
这里的表达式检查
stepname
列是否有值,如果为null,则返回
未指定
否则返回值

所以我不知道为什么要这样做。如果您查看了,您可以进行更改,然后您会注意到您可以传递范围,这样就不会让下一个开发人员感到困惑。然后,如果您的自定义函数
GetCultureInfo()
只是返回
CultureInfo
而没有任何条件或更改,那么您可以直接将其传递到表达式中,如下所示

 .ToString(First(Fields!NumberFormat_0_Precision.Value, "DSNumberAndCurrencyInfo"), new System.Globalization.CultureInfo("en-US"))
你可以得到更多的信息

下一部分是表达式的开头,如下所示

New System.Globalization.CultureInfo(1033)
在.NETFramework 3.5中,可以使用反射强制对属性和方法的特定调用使用英语(美国)数据格式(区域设置ID 1033)。所以它只是为了使用数据格式

chrw(123)&"0"&chrw(125)&" "&chrw(40)&"Count"&chrw(58)&" "&chrw(123)&"1"&chrw(125)&chrw(41)
这都是用来显示不同的字符,使用字符代码,更多关于这个


所以,所有这些大表达式基本上都是用来格式化字符串值,在数据库中指定的特定格式,并使用一些条件

非常感谢!我正试图找出如何以一种适用于fetchxml报告的方式进行行计数