如何向 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)
仅此而已。
当您 运行 报告时,矩阵会添加与数据中的日期一样多的列。
当我在 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)
仅此而已。
当您 运行 报告时,矩阵会添加与数据中的日期一样多的列。