代码之家  ›  专栏  ›  技术社区  ›  SherlockSpreadsheets

SSRS文件错误消息:已定义参数的数目不等于参数面板中的单元定义数目。

  •  3
  • SherlockSpreadsheets  · 技术社区  · 6 年前

    我已经使用自动化服务工具将报表文件从Crystal(.rpt)转换为SSRS(.rdl)。当我在Viusal Studio SSDT中预览报告时,收到一条非常奇怪的错误消息:

    定义的参数数量不等于参数面板中的单元定义数量

    我也曾尝试在报表生成器中运行此程序,但收到了相同的错误消息。

    RDL文件有1710行;下面是的某些节点的代码,这些节点似乎与之相关--reportParameters、reportLayout、queryParameters、commandText。

    有人知道是什么导致了这个错误吗?我怎样才能解决?我读过一篇文章,其中建议的隐藏参数必须具有默认值-- ssrs The definition of the report is invalid ;of the 8 parameters 7 are hidden and none of them have default parameters.但我不确定默认值应该是什么(如果必须有)。

    如有任何帮助,我们将不胜感激。

    第16至20行

    查询参数 <queryParameter name=“:pmprod_whseprod_code”> <value>=参数!pmprod_whseprod_code.value</value> </queryparameter> </queryparameters>
    
    

    第1533至1573行

    报表参数 <reportParameter name=“pmprod_whseprod_code”> <datatype>字符串</datatype> <prompt>pm-prod whse.prod_code</prompt> </reportparameter> <reportParameter name=“g_inwtot”> <datatype>浮点数</datatype> <prompt>库存</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_grdtotinv”> <datatype>浮点数</datatype> <prompt>grdtotinv</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_totweight”> <datatype>浮点数</datatype> <prompt>总重量</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_Grand_Tot_wgt”> <datatype>浮点数</datatype> <prompt>总计</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_grdtotwgt”> <datatype>浮点数</datatype> <提示>grdtotwgt</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_totinv”> <datatype>浮点数</datatype> <prompt>总投资</prompt> <hidden>真</hidden> </reportparameter> <reportParameter name=“g_totqtyonOrder”> <datatype>浮点数</datatype> <prompt>全部季度订单</prompt> <hidden>真</hidden> </reportparameter> </reportparameters>
    
    

    第1574至1586行

    报表参数布局 <GridLayoutDefinition> <numberofcolumns>4</numberofcolumns> <numberofrows>2</numberofrows> <CellDefinitions> <单元格定义> <columnindex>0</columnindex> <rowindex>0</rowindex> <参数名称>pmprod_whseprod_code</parametername> </CellDefinition> </CellDefinitions> </gridlayoutdefinition> </reportparameterslayout>
    
    

    第21至55行

    命令文本 选择订单号 ,命令\u hdr.master \u order \u nbr ,作战需求文件状态代码 ,订单类型 ,订单号 ,订单号 ,订购日期 ,订单交货日期 ,或“从”或“从”装运 ,作战需求文件dtl.prod代码作战需求文件dtl.prod代码 ,作战需求文件。作战需求文件 ,产品描述 ,命令价格命令价格 ,command.name命令名称 ,指挥城市指挥城市 ,命令状态\代码命令\状态\代码 从(选择d.prod_代码, D.订单编号, D.价格+NVL(D.市场价格调整,0)价格, H.CUST收货方代码, C.N. C.城市 C.州代码 从ORD\u DTL D、ORD\u HDR H、客户\发货至C 其中,D.订单编号=H.订单编号 和h.cust代码=c.cust代码 和h.cust_shipto_code=c.cust_shipto_code)命令 内部连接rocco.ord_hdr ord_hdr on(command.order_seq_code=ord_hdr.order_seq_code) inner join rocco.ord_dtl ord_dtl on(command.prod_code=ord_dtl.prod_code和ord_dtl.order_seq_code=ord_hdr.order_seq_code) inner join rocco.customer customer on(ORD_hdr.cust_code=customer.cust_code) 内部连接rocco.product product on(ORD_dtl.prod_code=product.prod_code) 其中(((ORD HDR.ORD类型<>'tr')和(ORD DTL.Prod代码=:PMProd WHSEProd代码))和(ORD HDR.STATUS代码输入('ed'、'dl'、'ip'、'sp'))和(ORD HDR.SHIP从06') 按订单DTL.PROD代码订购 ,订单号HDR。交货日期</commandtext>

    已定义参数的数目不等于“参数”面板中的单元定义数目。

    enter image description here

    我也试过在报表生成器中运行它,但收到了相同的错误消息。

    RDL文件有1710行;下面是的一些节点的代码,这些节点似乎与之相关——reportParameters、reportLayout、queryParameters和commandText。

    有人知道是什么导致了这个错误吗?我怎样才能解决?我读过一篇文章,建议隐藏参数必须具有默认值--SSRS the definition of the report is invalid;在8个参数中,7个是隐藏的,没有默认参数。但我不确定默认值应该是什么(如果必须有)。

    感谢您的帮助。

    第16至20行

        <QueryParameters>
          <QueryParameter Name=":PmPROD_WHSEPROD_CODE">
            <Value>=Parameters!PmPROD_WHSEPROD_CODE.Value</Value>
          </QueryParameter>
        </QueryParameters>
    

    第1533至1573行

      <ReportParameters>
        <ReportParameter Name="PmPROD_WHSEPROD_CODE">
          <DataType>String</DataType>
          <Prompt>Pm-PROD_WHSE.PROD_CODE</Prompt>
        </ReportParameter>
        <ReportParameter Name="g_invtot">
          <DataType>Float</DataType>
          <Prompt>invtot</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_grdtotinv">
          <DataType>Float</DataType>
          <Prompt>grdtotinv</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_totweight">
          <DataType>Float</DataType>
          <Prompt>totweight</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_grand_tot_wgt">
          <DataType>Float</DataType>
          <Prompt>grand_tot_wgt</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_grdtotwgt">
          <DataType>Float</DataType>
          <Prompt>grdtotwgt</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_totinv">
          <DataType>Float</DataType>
          <Prompt>totinv</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
        <ReportParameter Name="g_totqtyonorder">
          <DataType>Float</DataType>
          <Prompt>totqtyonorder</Prompt>
          <Hidden>true</Hidden>
        </ReportParameter>
      </ReportParameters>
    

    第1574至1586行

      <ReportParametersLayout>
        <GridLayoutDefinition>
          <NumberOfColumns>4</NumberOfColumns>
          <NumberOfRows>2</NumberOfRows>
          <CellDefinitions>
            <CellDefinition>
              <ColumnIndex>0</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>PmPROD_WHSEPROD_CODE</ParameterName>
            </CellDefinition>
          </CellDefinitions>
        </GridLayoutDefinition>
      </ReportParametersLayout>
    

    第21至55行

    <CommandText>
    Select ORD_HDR.ORDER_SEQ_CODE ORD_HDR_ORDER_SEQ_CODE
        , ORD_HDR.MASTER_ORDER_NBR
        , ORD_HDR.STATUS_CODE
        , ORD_HDR.ORDER_TYPE
        , ORD_HDR.BILL_PO_ID
        , ORD_HDR.SHIP_PO_ID
        , ORD_HDR.SHIP_DATE
        , ORD_HDR.DELIVERY_DATE
        , ORD_HDR.SHIP_FROM_WHSE ORD_HDR_SHIP_FROM_WHSE
        , ORD_DTL.PROD_CODE ORD_DTL_PROD_CODE
        , ORD_DTL.CASES_ORD
        , PRODUCT.DESCR
        , Command.PRICE COMMAND_PRICE
        , Command.NAME COMMAND_NAME
        , Command.CITY COMMAND_CITY
        , Command.STATE_CODE COMMAND_STATE_CODE
     From (SELECT d.prod_code,
    d.order_seq_code,
    d.price + NVL (d.market_price_adj, 0) price,
    h.cust_shipto_code,
    c.name,
    c.city,
    c.state_code
    FROM ord_dtl d, ord_hdr h, customer_shipto c
    WHERE     d.order_seq_code = h.order_seq_code
    AND h.cust_code = c.cust_code
    AND h.cust_shipto_code = c.cust_shipto_code) Command
     INNER JOIN ROCCO.ORD_HDR ORD_HDR on (Command.ORDER_SEQ_CODE = ORD_HDR.ORDER_SEQ_CODE)
     INNER JOIN ROCCO.ORD_DTL ORD_DTL on (Command.PROD_CODE = ORD_DTL.PROD_CODE and ORD_DTL.ORDER_SEQ_CODE = ORD_HDR.ORDER_SEQ_CODE)
     INNER JOIN ROCCO.CUSTOMER CUSTOMER on (ORD_HDR.CUST_CODE = CUSTOMER.CUST_CODE)
     INNER JOIN ROCCO.PRODUCT PRODUCT on (ORD_DTL.PROD_CODE = PRODUCT.PROD_CODE)
     Where (((ORD_HDR.ORDER_TYPE &lt;&gt; 'tr') And (ORD_DTL.PROD_CODE = :PmPROD_WHSEPROD_CODE)) And (Not (ORD_HDR.STATUS_CODE in ('ED', 'dl', 'ip', 'sp')))) And (ORD_HDR.SHIP_FROM_WHSE = '06')
     Order by ORD_DTL.PROD_CODE
        , ORD_HDR.DELIVERY_DATE</CommandText>
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   SherlockSpreadsheets    6 年前

    所以事实证明,即使参数是隐藏的,它仍然需要在RDL文件中有一个标记。我通过测试另一个报告来了解RDL文件如何使用隐藏的参数进行操作。

    要更正问题RDL文件…

    1. 我在文本编辑器中打开了它
    2. 更新了 <ReportParametersLayout><CellDefinitions> 要包含的节点 <CellDefinition> 每个参数的节点(代码如下)
    3. 已保存文件
    4. 在Visual Studio SSDT项目中重新打开该文件,然后该文件工作正常!报告预览完成得很好。

    希望这能帮助别人。

      <ReportParametersLayout>
        <GridLayoutDefinition>
          <NumberOfColumns>4</NumberOfColumns>
          <NumberOfRows>2</NumberOfRows>
          <CellDefinitions>
            <CellDefinition>
              <ColumnIndex>0</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>PmPROD_WHSEPROD_CODE</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>1</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>g_invtot</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>2</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>g_grdtotinv</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>3</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>g_totweight</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>0</ColumnIndex>
              <RowIndex>1</RowIndex>
              <ParameterName>g_grand_tot_wgt</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>1</ColumnIndex>
              <RowIndex>1</RowIndex>
              <ParameterName>g_grdtotwgt</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>2</ColumnIndex>
              <RowIndex>1</RowIndex>
              <ParameterName>g_totinv</ParameterName>
            </CellDefinition>
            <CellDefinition>
              <ColumnIndex>3</ColumnIndex>
              <RowIndex>1</RowIndex>
              <ParameterName>g_totqtyonorder</ParameterName>
            </CellDefinition>
          </CellDefinitions>
        </GridLayoutDefinition>
      </ReportParametersLayout>