具有tablix/matrix中动态列的数据集

Poo*_*ook 2 reporting dataset reportingservices-2005 reporting-services ssrs-2008

我有一个数据集,可以有5列,第6,7,10,20或甚至100列.至少有两个是静态的,其余是动态的(根据数据库中存在的表进行缩放).

如何在Reporting Services中实现此功能?

如何指定值为动态的tablix字段?

最终的结果是:

|   TITLE | ENUNCIATION | GOOD | VERY GOOD | BAD | VERY BAD |
-------------------------------------------------------------
| title 1 |  question 1 |    5 |         3 |   1 |        0 |
| title 2 |  question 2 |    1 |         0 |   3 |        0 |
| title 3 |  question 3 |    0 |         0 |   1 |        0 |

|   TITLE | ENUNCIATION |   1  |     2     |  3  |     4    |
-------------------------------------------------------------
| title 1 |  question 1 |    5 |         3 |   1 |        0 |
| title 2 |  question 2 |    1 |         0 |   3 |        0 |
| title 3 |  question 3 |    0 |         0 |   1 |        0 |
Run Code Online (Sandbox Code Playgroud)

注意:前两个是静态的,剩下的动态.

编辑:

我有这张桌子:

|   ID_SCALE  | ID_SCALE_ENTRY   | NAME          |
--------------------------------------------------
|      1       |        1        |    GOOD       |    
|      1       |        2        |    VERY GOOD  |   
|      1       |        3        |    BAD        |   
|      1       |        4        |    VERY BAD   |    
|      2       |        1        |       1       |    
|      2       |        2        |       2       |
|      2       |        3        |       3       |
|      2       |        4        |       4       |
|      2       |        5        |       5       |
|      2       |        6        |       6       |
|      2       |        7        |       7       |    
Run Code Online (Sandbox Code Playgroud)

编辑+注意: 我想完全显示在第一个表中.问题是(Good,Very Good,Bad,Very Bad,1,2,3,4)字段是动态创建的,无法在Tablix中指定.

一个例子:当我想要数据集的字段值时,我把这个表达式设置为Fields!Good.value但现在想象它不是"好"而是"1"字段!Good.value不再存在.结论是一个包含动态列的数据集.

ees*_*ein 7

首先 - 您应该使用Matrix.

第二 - 要完成所需的操作,在返回数据的方法中,必须至少返回三个数据字段.

例如:

ColDescription - Column description
StaticRowDescription - Row description / static column value
Value - The real value for that column/row combination.
Run Code Online (Sandbox Code Playgroud)

得到它了?

你的矩阵应该是这样的:

| Any Text               | [ColDescription] |
| [StaticRowDescription] | [Value]          |
Run Code Online (Sandbox Code Playgroud)

编辑:

忘记提到在这个例子中任何文本都是我的静态列.您可以添加更多以满足您的需求.

-------------------------------------------------- -------------

一个例子,由于你的评论.

这是你在return方法中实现的方法:

假设你有一个静态列Description和其他(n).

public IEnumerable<YourReturnClass> GetData(int param) 
{
    List<YourReturnClass> returnList = new List<YourReturnClass>();
    foreach (var row in allYourRows())
    {
        foreach (var col in row.getColumns())
        {
            returnList.add(new YourReturnClass(){
                StaticRowDescription = row.Description,
                ColDescription = col.Description,
                Value = myValueAccordingToCurrentColumnXRow()
            });
        }
    }

    return returnList;
}
Run Code Online (Sandbox Code Playgroud)

这是你的矩阵:

| Description            | [ColDescription] |
| [StaticRowDescription] | [Value]          |
Run Code Online (Sandbox Code Playgroud)

这样,如果您有一行allYourRows()描述"Expenses"和两个名为"Gas"和"Electricity"的列,您可以将此作为矩阵结果:

| Description | Gas | Electricity |
-----------------------------------
| Expenses    | 25  | 150         |
Run Code Online (Sandbox Code Playgroud)

更好?

这只是为了解释矩阵如何工作,您获取数据的方式可能与描绘的数据不同.

报告(RDL)将是相同的,唯一的变化是您获取数据的方式.如果你有一个这样的表:( 这将是你的数据库中的表(你已经存储了数据))

| RowDescription | DynamicColumnHeader | Value |
------------------------------------------------
| Year 2013      | January             | 500   |
| Year 2013      | February            | 850   |
| Year 2013      | March               | 265   |
| Year 2014      | February            | 965   |
Run Code Online (Sandbox Code Playgroud)

然后你的报告看起来像这样:

| Description | January | February | March|
-------------------------------------------
| Year 2013   | 500     | 850      | 265  |
| Year 2014   |         | 965      |      |
Run Code Online (Sandbox Code Playgroud)

知道了吗?

我附上了报告的样子图像:

图片

新编辑:

|   TITLE | ENUNCIATION    | [NAME]                          |
-------------------------------------------------------------
| [title] |  [enunciation] |  [ID_SCALE] OR [ID_SCALE_ENTRY] |
Run Code Online (Sandbox Code Playgroud)

*或乘法,求和等......

基于最后评论的编辑:

|   TITLE | ENUNCIATION    | [NAME]                          |
-------------------------------------------------------------
| [title] |  [enunciation] | [Count(NAME)]                   |
Run Code Online (Sandbox Code Playgroud)

是吗?