使用报表中的参数

您可以在报表中使用参数来控制检索的数据,方法是当用户运行报表时,提示用户输入某个值或一系列值。 数据集查询只会检索由用户请求的数据。 您也可以在报表中添加隐藏参数和特殊参数,这些参数不会提示用户输入,但是可以用于某些操作,例如筛选数据或动态钻取。

备注

从 Microsoft Dynamics 365 Customer Engagement (on-premises) 传入的参数值的最大长度为 2,000 个字符。 例如,如果您运行某个报表,并且通过高级查找用户界面创建数据筛选器,则生成的筛选器表达式会传递到筛选参数,且表达式不能超过 2,000 个字符。 您可以指定的最大参数数量没有限制。 但是,您可能必须限制 URL 行的字符串长度和参数数量满足特定浏览器的要求。

添加参数

您可以通过将参数添加至报表来定义报表的个别参数、通过查询传递信息,或提供对用户设置的访问权限,例如 CRM_CurrencySymbolCRM_CurrencyPositivePattern 参数。

<ReportParameter> 是一个在报表定义语言 (RDL) 文件中的元素,用于描述报表中的个别参数。 <QueryParameter> 包含有关个别参数的信息,该参数作为查询的一部分传递到数据源。 以下 XML 代码摘自“客户摘要”报表的 RDL 文件,演示了如何使用 ReportParameterQueryParameter 参数。

<ReportParameter Name="CRM_FilteredAccount">  
  <DataType>String</DataType>  
    <Nullable>true</Nullable>  
    <DefaultValue>  
      <Values>  
         <Value>select * from FilteredAccount</Value>  
      </Values>  
    </DefaultValue>  
    <AllowBlank>true</AllowBlank>  
    <Prompt>CRM_FilteredAccount</Prompt>  
</ReportParameter>  
<Query>  
   <rd:UseGenericDesigner>true</rd:UseGenericDesigner>  
   <CommandText>declare @sql as nVarchar(max)  
      set @sql = '  
      SELECT top 10 CAST(accountid as nvarchar(100)) as AccountID,  
      name, '''' as None  
      FROM (' + @FilteredAccount + ') as fa'  
      exec(@sql)  
   </CommandText>  
   <QueryParameters>  
      <QueryParameter Name="@FilteredAccount">  
         <Value>=Parameters!FilteredAccount.Value</Value>  
      </QueryParameter>  
   </QueryParameters>  
   <DataSourceName>CRM</DataSourceName>  
</Query>  

以下示例显示如何在基于 Fetch 的报表中使用 QueryParameterReportParameter 参数:

<ReportParameter Name="FilteredAccount">  
      <DataType>String</DataType>  
      <Prompt>Filtered Account</Prompt>  
            <DefaultValue>  
                  <Values>  
                        <Value>  
                              <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">  
                              <entity name="account">  
                              <all-attributes/>  
                              </entity>  
                              </fetch>  
                        </Value>  
                  </Values>  
            </DefaultValue>  
    </ReportParameter>  
<Query>  
        <DataSourceName>DataSource1</DataSourceName>  
        <CommandText>  
                  <fetch>   
                  <entity name="account" enableprefiltering="true" prefilterparametername="FilteredAccount">  
                  <attribute name="accountid" />  
                  <attribute name="name" />  
                  </entity>  
                  </fetch>  
            </CommandText>  
        <QueryParameters>  
          <QueryParameter Name="FilteredAccount">  
            <Value>=Parameters!FilteredAccount.Value</Value>  
          </QueryParameter>  
        </QueryParameters>  
        <rd:UseGenericDesigner>true</rd:UseGenericDesigner>  
      </Query>  

隐藏参数

Visual Studio 中的报表设计器已内置对隐藏参数的支持。 此外,您可以通过在报表中的参数名称前添加 CRM_ 前缀来隐藏参数。 默认情况下,如果发布了报表,则带有 CRM_ 前缀的参数会被隐藏。 运行报表时,不会提示您输入隐藏参数的参数值。

特殊参数

下表显示您可以在报表中使用的特殊隐藏参数。

参数 说明
CRM_FilterText 包含报表用户在运行报表时在报表查看器中以交互方式创建的筛选文本的值。 该参数位于报表页眉中的筛选器摘要文本框内。 初始值设置为默认筛选器。
CRM_URL 设置为应用的 URL。 进行钻取时使用此参数。
CRM_FilteredEntity 用于在查询表达式中启用数据预筛选(通过高级查找)。

必须首先在报表中创建所有参数,然后才能引用它们。 当您运行报表时,这些特殊参数的值由 Customer Engagement (on-premises) 填入。

其他格式参数

下表包含您可以在报表中使用的其他参数。 其中一些是提供对用户编号设置信息的访问的参数。 您可以使用这些值来设置数值的格式并显示数值。 这些参数类似于 NumberFormatInfo 类中指定的值。 在自定义报表中使用这些参数可根据用户设置来设置数据格式。

参数 说明
CRM_FullName 用户的全名,正代表该用户运行报表。
CRM_UserTimeZone 用户所在时区的名称,例如,太平洋标准时间。
CRM_UILanguageId 用户的当前区域设置 (LCID)。
CRM_YearStartWeekCode Dynamics 365 for Customer Engagement 应用中使用的一年的第一周。
CRM_WeekStartDayCode Customer Engagement 中使用的一周的第一天。
CRM_FiscalCalendarStart Customer Engagement 中使用的会计年度的开始日期。
CRM_FiscalPeriodType 指定如何划分会计年度——按季度、按月、按年等。
CRM_FiscalYearDisplayCode 指定是基于会计年度的开始日期还是结束日期显示会计年度名称。
CRM_FiscalYearPeriodConnect 指定当会计年度和会计期间同时显示时如何连接它们。
CRM_FiscalYearFormat 指定如何显示会计年度的名称。
CRM_FiscalPeriodFormat 指定如何显示会计期间。
CRM_FiscalYearPrefixFormat 指定在显示会计年度时是否向其附加前缀。
CRM_FiscalYearSuffixFormat 指定在显示会计年度时是否向其附加后缀。
CRM_CurrencyDecimalPrecision 货币小数精度。
CRM_CurrencySymbol 组织的货币符号。
CRM_CurrencyPositivePattern 正货币值的格式模式。
CRM_CurrencyNegativePattern 负货币值的格式模式。
CRM_NumberDecimalDigits 数值中使用的小数位数。
CRM_NumberDecimalSeperator 在数值中用作小数分隔符的字符串。
CRM_NumberNegativePattern 负数值的格式模式。
CRM_NumberGroupSizes 数值中小数点左侧的每个组中的数值位数。
CRM_NumberGroupSeperator 对数值中小数点左侧的数位组进行分隔的字符串。
CRM_DateSeparator 分隔日期组成部分(如年、月和日)的字符串。
CRM_TimeSeparator 分隔时间组成部分(如小时、分钟和秒)的字符串。
CRM_AMDesignator 属于上午(Ante Meridiem,AM)的小时的指示符。
CRM_PMDesignator 属于下午(Post Meridiem,PM)的小时的指示符。
CRM_ShortDatePattern 与“d”格式模式关联的短日期值的格式模式。
CRM_LongDatePattern 与“D”格式模式关联的长日期值的格式模式。
CRM_ShortTimePattern 与“t”格式模式关联的短时间值的格式模式。
CRM_MonthDayPattern 与“m”和“M”格式模式关联的月和日值的格式模式。

另请参阅

报告和分析指南
发布报表