【问题标题】:How can I add columns to a Matrix in a BIDS Report project?如何将列添加到 BIDS 报告项目中的矩阵?
【发布时间】:2016-01-21 19:01:07
【问题描述】:

当我在 BIDS 设计器的布局页面中添加一个矩阵时,它会创建两列。我需要更多。我希望 Matrix 控件具有“ColumnCount”属性,但事实并非如此。

我的下一个期望是矩阵将提供一个上下文相关的菜单,允许我插入列。它没有。如果我单击矩阵,则会选择一个文本框。虽然我可以通过按“Esc”键使矩阵成为选定控件来访问矩阵,但上下文菜单或其属性页面中仍然没有可能的选项。

添加列必须是最常见的事情之一 - 它是如何完成的?

尝试理解 .rdl 文件对我也没有多大帮助;事物的组织方式似乎没有韵律或理由。在设计表面上,我有一个两列两行的矩阵。第 1 行在文本框中包含两个标签。第 2 行包含文本框,其字段表达式已分配给其 Value 属性。然而,.rdl (xml) 文件在 ColumnGroupings.ColumnGrouping.DynamicColumns.ReportItems 部分中有一个标签(“WEEK 1 USAGE”),在 Corner.ReportItems 部分有另一个标签(“PLATYPUSDESCRIPTION”)。

关于数据,一个 (PLATYPUSDESCRIPTION.Value) 在 RowGroupings.RowGrouping.DynamicRows.ReportItems 部分中,另一个 (WEEK1USAGE.Value) 在 MatrixRows.MatrixRow.MatrixCells.MatrixCell.ReportItems 部分中。

为了证明我没有发疯 [ier,y],这里是相关矩阵的 rdl/xml(标签/数据元素的外观重新排列比它们的实际顺序更合乎逻辑外观,并省略了一些多余的东西(ZOrder 等)):

<Matrix Name="matrix1">

  <MatrixColumns>
    <MatrixColumn>
      <Width>2.375in</Width>
    </MatrixColumn>
  </MatrixColumns>

  // "PLATYPUS DESCRIPTION" label
  <Corner>
    <ReportItems>
      <Textbox Name="textbox2">
        <rd:DefaultName>textbox2</rd:DefaultName>
        <Style>
          <FontSize>12pt</FontSize>
          <FontWeight>700</FontWeight>
          <PaddingLeft>2pt</PaddingLeft>
          <PaddingRight>2pt</PaddingRight>
          <PaddingTop>2pt</PaddingTop>
          <PaddingBottom>2pt</PaddingBottom>
        </Style>
        <ZIndex>3</ZIndex>
        <CanGrow>true</CanGrow>
        <Value>PLATYPUS DESCRIPTION</Value>
      </Textbox>
    </ReportItems>
  </Corner>

  // PLATYPUSDESCRIPTION data
  <RowGroupings>
    <RowGrouping>
      <Width>2.75in</Width>
      <DynamicRows>
        <Grouping Name="matrix1_RowGroup1">
          <GroupExpressions>
            <GroupExpression />
          </GroupExpressions>
        </Grouping>
        <ReportItems>
          <Textbox Name="textboxDescription">
            <Style>
              <FontSize>11pt</FontSize>
              <PaddingLeft>2pt</PaddingLeft>
              <PaddingRight>2pt</PaddingRight>
              <PaddingTop>2pt</PaddingTop>
              <PaddingBottom>2pt</PaddingBottom>
            </Style>
            <ZIndex>1</ZIndex>
            <CanGrow>true</CanGrow>
            <Value>=Fields!PLATYPUSDESCRIPTION.Value</Value>
          </Textbox>
        </ReportItems>
      </DynamicRows>
    </RowGrouping>
  </RowGroupings>

  // "WEEK 1 USAGE" label
  <ColumnGroupings>
    <ColumnGrouping>
      <Height>0.25in</Height>
      <DynamicColumns>
        <Grouping Name="matrix1_ColumnGroup1">
          <GroupExpressions>
            <GroupExpression />
          </GroupExpressions>
        </Grouping>
        <ReportItems>
          <Textbox Name="textbox3">
            <rd:DefaultName>textbox3</rd:DefaultName>
            <Style>
              <FontSize>12pt</FontSize>
              <FontWeight>700</FontWeight>
              <PaddingLeft>2pt</PaddingLeft>
              <PaddingRight>2pt</PaddingRight>
              <PaddingTop>2pt</PaddingTop>
              <PaddingBottom>2pt</PaddingBottom>
            </Style>
            <ZIndex>2</ZIndex>
            <CanGrow>true</CanGrow>
            <Value>WEEK 1 USAGE</Value>
          </Textbox>
        </ReportItems>
      </DynamicColumns>
    </ColumnGrouping>
  </ColumnGroupings>

  // WEEK1USAGE data
  <MatrixRows>
    <MatrixRow>
      <Height>0.25in</Height>
      <MatrixCells>
        <MatrixCell>
          <ReportItems>
            <Textbox Name="textboxWeek1Usage">
              <Style>
                <FontSize>11pt</FontSize>
                <PaddingLeft>2pt</PaddingLeft>
                <PaddingRight>2pt</PaddingRight>
                <PaddingTop>2pt</PaddingTop>
                <PaddingBottom>2pt</PaddingBottom>
              </Style>
              <CanGrow>true</CanGrow>
              <Value>=Fields!WEEK1USAGE.Value</Value>
            </Textbox>
          </ReportItems>
        </MatrixCell>
      </MatrixCells>
    </MatrixRow>
  </MatrixRows>
  <Height>0.5in</Height>
  <Left>0.25in</Left>
</Matrix>

更新

这里是 rdl/xml 文件的整个“matrix1”部分的实际摘录:

  <Matrix Name="matrix1">
    <MatrixColumns>
      <MatrixColumn>
        <Width>2.375in</Width>
      </MatrixColumn>
    </MatrixColumns>
    <ZIndex>1</ZIndex>
    <DataSetName>PriceVarianceSP</DataSetName>
    <RowGroupings>
      <RowGrouping>
        <Width>2.75in</Width>
        <DynamicRows>
          <Grouping Name="matrix1_RowGroup1">
            <GroupExpressions>
              <GroupExpression />
            </GroupExpressions>
          </Grouping>
          <ReportItems>
            <Textbox Name="textboxDescription">
              <Style>
                <FontSize>11pt</FontSize>
                <PaddingLeft>2pt</PaddingLeft>
                <PaddingRight>2pt</PaddingRight>
                <PaddingTop>2pt</PaddingTop>
                <PaddingBottom>2pt</PaddingBottom>
              </Style>
              <ZIndex>1</ZIndex>
              <CanGrow>true</CanGrow>
              <Value>=Fields!PROACTDESCRIPTION.Value</Value>
            </Textbox>
          </ReportItems>
        </DynamicRows>
      </RowGrouping>
    </RowGroupings>
    <Top>0.5in</Top>
    <ColumnGroupings>
      <ColumnGrouping>
        <Height>0.25in</Height>
        <DynamicColumns>
          <Grouping Name="matrix1_ColumnGroup1">
            <GroupExpressions>
              <GroupExpression />
            </GroupExpressions>
          </Grouping>
          <ReportItems>
            <Textbox Name="textbox3">
              <rd:DefaultName>textbox3</rd:DefaultName>
              <Style>
                <FontSize>12pt</FontSize>
                <FontWeight>700</FontWeight>
                <PaddingLeft>2pt</PaddingLeft>
                <PaddingRight>2pt</PaddingRight>
                <PaddingTop>2pt</PaddingTop>
                <PaddingBottom>2pt</PaddingBottom>
              </Style>
              <ZIndex>2</ZIndex>
              <CanGrow>true</CanGrow>
              <Value>WEEK 1 USAGE</Value>
            </Textbox>
          </ReportItems>
        </DynamicColumns>
      </ColumnGrouping>
    </ColumnGroupings>
    <Width>5.125in</Width>
    <Corner>
      <ReportItems>
        <Textbox Name="textbox2">
          <rd:DefaultName>textbox2</rd:DefaultName>
          <Style>
            <FontSize>12pt</FontSize>
            <FontWeight>700</FontWeight>
            <PaddingLeft>2pt</PaddingLeft>
            <PaddingRight>2pt</PaddingRight>
            <PaddingTop>2pt</PaddingTop>
            <PaddingBottom>2pt</PaddingBottom>
          </Style>
          <ZIndex>3</ZIndex>
          <CanGrow>true</CanGrow>
          <Value>DESCRIPTION</Value>
        </Textbox>
      </ReportItems>
    </Corner>
    <MatrixRows>
      <MatrixRow>
        <Height>0.25in</Height>
        <MatrixCells>
          <MatrixCell>
            <ReportItems>
              <Textbox Name="textboxWeek1Usage">
                <Style>
                  <FontSize>11pt</FontSize>
                  <PaddingLeft>2pt</PaddingLeft>
                  <PaddingRight>2pt</PaddingRight>
                  <PaddingTop>2pt</PaddingTop>
                  <PaddingBottom>2pt</PaddingBottom>
                </Style>
                <CanGrow>true</CanGrow>
                <Value>=Fields!WEEK1USAGE.Value</Value>
              </Textbox>
            </ReportItems>
          </MatrixCell>
        </MatrixCells>
      </MatrixRow>
    </MatrixRows>
    <Height>0.5in</Height>
    <Left>0.25in</Left>
  </Matrix>

【问题讨论】:

    标签: matrix reporting-services bids rdl


    【解决方案1】:

    根据您的列组表达式动态添加列。例如,假设您想显示每月每一天的使用数据(并假设 DateUsed 没有时间组件),那么您的矩阵只有一列,列组表达式是使用日期 =Fields!DateUsed.Value 和“详细信息”单元格汇总了当天 =Sum(Fields!Usage.Value) 的使用情况。

    所以你的矩阵看起来很简单:

                               |  =Fields!DateUsed.Value
    ---------------------------+-----------------------------
    =Fields!Description.Value  | =Sum(Fields!Usage.Value) 
    

    仅此而已。

    然后,当您运行报告时,矩阵会添加与数据中的日期一样多的列。

    【讨论】:

    • 与我的其他问题/您的其他答案类似,我不想在这里进行任何求和(所以我显然并不想要一个矩阵);我只想显示从数据集/存储过程返回的数据。
    • 好的,那么您不需要矩阵 - 矩阵都是关于以数据透视表类型的格式自动汇总数据 - 水平和垂直分组和扩展。听起来你只想要一张普通的旧桌子。
    • 是的,我也尝试了 Table 控件,但我也看不到添加列的方法。 “ColumnCount”属性会很好,属性编辑器也可以将字段值添加到列中。 SSRS 开始给我带来狂热,我有一种不安的感觉,它是 SharePoint 失散多年的表亲。
    • 要添加列,请在任意位置单击表格,然后右键单击列句柄(顶部看起来像灰色按钮的东西),将鼠标悬停在“插入列”上,然后单击“左”或“右”。当您知道如何操作时很容易(不像 SharePoint,无论如何它仍然是野兽)。坚持使用 SSRS - 一旦您掌握了速度,它就是一个功能强大、灵活且可扩展的报告工具。
    • 我今天终于可以回到这个话题了;是的,表格控件还不错,一旦我在您的帮助下摸索了它:使用第一行作为您希望该列具有的标签,使用该列下方的行作为您要显示的数据,使用 value 属性选择数据集中已分配给表的字段的名称。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多