It's all about the answers!

Ask a question

How to create a BIRT report with Enumeration list


1
1
Rodolfo Gomez (1123) | asked Jun 05 '13, 3:36 p.m.
edited Jun 05 '13, 3:49 p.m.
Hi,

I have a enumeration list called "Problem Determination" this value is a enumeration list that could include multiple values.

When I use BIRT to get a report of this filed. I get the following result: in the first dataset created:

 

as you can see in WI 41 I have multiple values.
I would like to group this result by Problem Determination but If I make this I will get the following:

 

How can I split the Multiple values to represent correctly the quantity of problem determination? and avoid to show the multiple values as a separate value.

Thannks.

2 answers



permanent link
Donald Nong (14.5k314) | answered Jun 25 '15, 6:07 a.m.
edited Jun 25 '15, 6:09 a.m.
Even though it is an old post, I would put the answer here for future reference.

Basically we need another data set to contain the split enumeration lists, because a single row in the original data set such as
1    key    |value1|value2|value4|
can become multiple rows
1    key    |value1|
1    key    |value2|
1    key    |value4|
Using a scripted data set should be quite straightforward. Here is a short tutorial for creating such a data set.
http://developer.actuate.com/be/documentation/ihub3/help/adg/adg65/index.html#page/ADG/ProgramDataAccess.1.3.html

For our purpose here, we will use a global object "data" to store the processed data. We only need to make slight changes to the scripted data set so that it reads data from the global "data" object in the "fetch" method. Of course we will have to first populate the global "data" object with the original Jazz data set, in the "onFetch" method. Here are the codes of the "ofFetch" method.
id = row["WI_ID"];
type = row["WI_TYPE"];
key = row["MEDIUM_STRING_KEY"];
value = row["MEDIUM_STRING_VAL"];
if (typeof(value) == "string") {
    valueSet=value.split("|");
    for (var i=1; i< valueSet.length-1; i++) {
        var newData = {};
        newData.id = id;
        newData.type = type;
        newData.key = key;
        newData.value = valueSet[i];
        data.push(newData);
    }
}
(Remember to skip the first and last items of the valueSet[] arrays since they are empty)
This is how it looks like with the original Jazz data set on top and the scripted data set at the bottom.




permanent link
Krzysztof Ka┼║mierczyk (7.4k35499) | answered Jun 06 '13, 2:52 a.m.
Hi Rodolfo,
I used this video to create BIRT report with enumeration: http://www.youtube.com/watch?v=8q29We9QoHE . You can also see the similar topic created by me: https://jazz.net/forum/questions/113221/using-custom-attribute-as-a-parameter-in-birt.
Let me know if it helps for you.

Regards,
Krzysztof Kazmierczyk

Comments
1
Rodolfo Gomez commented Jun 19 '13, 6:05 p.m. | edited Oct 15 '13, 6:57 a.m.

Hi Krzysztof,

Thanks a lot for your help.

I use this video as a guide but they don't help me to create the report that I was looking for.

After some investigation I could create a code to fix my problem.

I create a manual data set to save all the cross information from ENUMERATIONS and LIVE_WORKITEM_CNT tables.

Then I put this manual data set into a chart to show the information that I want to do.

It cause me a lot of effort due to first I have never program in Java or JavaScript and there is not a lot of information about it so I have to review several web site to get with the final answer.

If you could help me to know how I can share the information that I learn an help others that are in the same situation I will appreciate.

Thanks in advance.

Thanks.


1
ryosuke oka commented Apr 17 '14, 2:40 a.m.

Hi Rodolf,
I had a customer who is planing to do same thing as you did (create a report by using enumeration list).

Would you be able to share steps you had done with ENUMERATIONS and LIVE_WORKITEM_CNT tables in this forum?

It will be valuable info for other users.
Thank you!

Your answer


Register or to post your answer.