如何向 BIDS 报告项目中的矩阵添加列?

How can I add columns to a Matrix in a BIDS Report project?

当我在 BIDS 设计器的布局页面中添加矩阵时,它会创建两列。我需要更多。我希望 Matrix 控件有一个 "ColumnCount" 属性,但它没有。

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

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

试图理解 .rdl 文件也无济于事;它的组织方式似乎没有韵律或理由。在设计图面上,我有一个包含两列和两行的矩阵。第 1 行在文本框中包含两个标签。第 2 行包含文本框,其字段表达式已分配给它们的值 属性。然而 .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(label/data 元素的外观重新排列得更比它们的实际出现顺序更合乎逻辑,并且省略了一些多余的东西(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>

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

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

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

仅此而已。

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