How to generate Columnar (or label) report

hho
hho
edited February 11, 2022 in Analytics #1
Hi everyone,

I need to generate a columnar (or label) report in BIRT. Is there anyone know how to do it? Please help me out.

My report will look like this

City 1

customer1 customer2 customer3 customer4
customer5 customer6 customer7 customer8

City 2

customer1 customer2 customer3 customer4
customer5 customer6 customer7 customer8

Each customer is a record from dataset.
Thanks

Comments

  • mwilliams
    edited December 31, 1969 #2
    Hi hvh,

    What you're looking for looks similar to what you'd get if you had a table grouped by City. Have you tried that? or are you looking for something different than that?

    Regards,

    Michael
    Warning No formatter is installed for the format ipb
  • hho
    hho
    edited December 31, 1969 #3
    Hi Michael,

    I can group data by city, but I don't know how to display records in multiple columns

    Let me make it clear

    My final report will look like this

    Los Angeles City

    John Smith Angie White Ann William
    323-123-789 818-278-1246 323-145-1237

    Bob Brown Daniel Wong Edna Hall
    323-123-789 818-278-1246 323-145-1238

    Whitier City

    Daniel Lee Phil Smith Miachael Nguyen
    626-123-789 626-278-1246 626-175-4123

    Bill William John Diaz Johnny Rice
    562-123-789 626-278-1246 562-145-1237


    Please advise. Thanks
  • hewb
    edited December 31, 1969 #4
    Please try list report item with group on customer, and set the data item's "display" property inside the list detail as "inline".
  • mwilliams
    edited December 31, 1969 #5
    That'll get the phone number next to the customer name listed across the page. I haven't found a way to keep them stacked and have it work though.
    Warning No formatter is installed for the format ipb
  • hho
    hho
    edited December 31, 1969 #6
    Hi Michael,

    Sorry, I don't pay attention. The layout is messed up after I posted the message

    The layout will be like the attached pdf file.

    If you know how to do it, please advise.

    Thanks a lot
  • mwilliams
    edited December 31, 1969 #7
    hvh,

    The best I can get right now is using what hewb described. It ends up looking more like this though:

    City 1

    LastName1 Phone#1 LastName2 Phone#2 LastName3 Phone#3

    LastName4 Phone#4 LastName5 Phone#5 LastName6 Phone#6

    City 2

    etc...

    If I come up with anything better, I'll let you know.

    Regards,

    Michael
    Warning No formatter is installed for the format ipb
  • hho
    hho
    edited December 31, 1969 #8
    Thanks Michael and hewb for your response,

    After reading subreport section in the book, I came up with a solution

    1. I have master list that binding to city data set

    2. In the list details, I have a grid with 3 columns ( or any). Each columns will have a table that binding to customer data set. This data set is linked to city data set in master list by cityID. Then I use row number to filter data for each column.

    I finally got the layout that I want. Just little concern about performance.

    I don't know if anyone has better solution.

    Regards.
    hvh
  • mwilliams
    edited December 31, 1969 #9
    hvh,

    I was working on that exact same thing and was going to suggest that. It looks to me that that's going to be the only way to achieve what you're looking for. That might be a good example to post up on the devShare!

    Regards,

    Michael
    Warning No formatter is installed for the format ipb
  • WFG
    WFG
    edited December 31, 1969 #10
    what if you have only ONE label per customer with it's name AND phone-number concatenated with a linefeed (you could do this in the dataset) and so you would have to handle only ONE label...
  • garyxue
    edited December 31, 1969 #11
    hvh,
    Based on the description of you report design, you might run into performance issues with larger data set, since it appears that a data set query has to be run for each column within a group.

    I have attached a sample report design that shows how a similar report is done against the Customers table in the BIRT sample database. This report is optimized for performance, in that only a single query is run. The keys to this report design are:
    (1) The outer table is the only one bound to the data set. All the inner lists use the outer table's data set.
    (2) 3 side-by-side lists (placed in a 1x3 grid) in the outer table's group footer simulates a columnar layout. Visibility rules (set on the inner-most grid that contains the Name and Phone data items) filters the lists so that each list only displays 1/3 of the rows.

    Note that this design is created in BIRT 2.2.0. Please open with this version of BIRT or later (or any Actuate 9SP3+ BRDPro).
    Hope this helps.
    Gary Xue
  • scaracas
    edited December 31, 1969 #12
    Brilliant example.

    I was trying to use inline argument for sections in a list , but for some reason , that doesn't work inside a table.

    Do you think that having that inline "mode" supported for tables could be a good idea doing "horizontal" tables?
  • hho
    hho
    edited December 31, 1969 #13
    Thank you all for your responses, especially to Gary Xue. I tried your solution. The performance is improved a lot.