Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Нумерация строк деталировки и группировки в Jasperreport / 3 сообщений из 3, страница 1 из 1
11.10.2011, 06:07
    #37476479
дн
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк деталировки и группировки в Jasperreport
Как в Jasper пронумеровать строки деталировки и группировки, что бы получилось примерно следующее:

1. (группировка 1)
1.1. (группировка 2)
1.1.1. (деталировка)
1.1.2. (деталировка)
....
1.2. (группировка 2)
....
...
Рейтинг: 0 / 0
18.11.2011, 11:37
    #37533077
Nasmus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк деталировки и группировки в Jasperreport
я дерево строю в sql коде, в деталах просто отражаю, если есть другие варианты тоже интересно.
...
Рейтинг: 0 / 0
01.12.2011, 18:39
    #37554784
дн1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк деталировки и группировки в Jasperreport
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
 import  net.sf.jasperreports.engine.*;

 public   class  JRScriptletRowNumber  extends  JRDefaultScriptlet {
     private  JRHierarchyNumber hierarchyNumber =  new  JRHierarchyNumber();

     private  Integer i= new  Integer( 0 );
     private  Integer ri= new  Integer( 0 );


    /**
     * Событие выполняемое перед инициализацией отчета
     * @throws JRScriptletException
     */
     public   void  beforeReportInit()  throws  JRScriptletException{
         if (ri== 0 ){
            hierarchyNumber.beforeReportInit( this .groups);
            ri++;
        }
    }

    /**
     * Событие выполняемое перед инициализацией группировки
     * @param groupName  Имя группировки
     * @throws JRScriptletException
     */
     public   void  beforeGroupInit(String groupName)  throws  JRScriptletException
    {
        String tmpGrVAl = (String) this .getFieldValue(hierarchyNumber.getGroupField(groupName));
        hierarchyNumber.beforeGroupInit(tmpGrVAl,groupName);
    }

    /**
     * Событие выполняемое перед формированием деталировки
     * @throws JRScriptletException
     */
     public   void  beforeDetailEval()  throws  JRScriptletException
    {
         if (i== 0 ){
            hierarchyNumber.beforeDetailEval();
            i++;
        }
    }

    /**
     * Событие выполняемое после формирования деталировки
     * @throws JRScriptletException
     */
     public   void  afterDetailEval()  throws  JRScriptletException
    {
        i= 0 ;
    }


     public  String getNumber(String grName){
         return  hierarchyNumber.getNumber(grName);
    }


     public  String getNumber(){
         return  hierarchyNumber.getNumber();
    }
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
 import  net.sf.jasperreports.engine.JRDefaultScriptlet;

 import  net.sf.jasperreports.engine.fill.JRFillGroup;



 import  java.util.HashMap;



 public   class  JRHierarchyNumber {

     private  Integer num[];

     private  HashMap groupPos =  new  HashMap();     //позиция группировки в списке группировок

     private  HashMap groupField =  new  HashMap();   //имя поля по каторому происходит группировка



     private  String grN= new  String();

     private  String vrN= new  String();



     public   void  beforeReportInit(JRFillGroup gr[]){

        Integer j =  new  Integer( 0 );

         if (gr!= null ){

            num =  new  Integer[gr.length+ 1 ];

             for (JRFillGroup group:gr) {

                num[j]= new  Integer( 0 );

                groupPos.put(group.getName(),j++);

                groupField.put(group.getName(),group.getExpression().getChunks()[ 0 ].getText());

            }

        } else {

            num= new  Integer[ 1 ];

        }



        num[j]= new  Integer( 0 );

        groupPos.put("str",j);

    }



      public   void  beforeGroupInit(String tmpGrVAl,String groupName){



          if ((!vrN.equals(tmpGrVAl) || (!grN.equals(groupName)))){

               vrN= tmpGrVAl; grN= groupName;

               num[(Integer)groupPos.get(groupName)]++;

                for (Integer ii=(Integer)groupPos.get(groupName)+ 1 ;ii<num.length;ii++){

                   num[ii]= 0 ;

               }



           }



     }



     public   void  beforeDetailEval(){

        num[num.length- 1 ]++;

    }



     public  String getGroupField(String groupName){

          return  (String) groupField.get(groupName);

    }



    /**

     * Получение значения номера строки группировки или деталировки

     * @param grName имя деталировки отчета или строка "str", для полчения номера деталировки

     * @return

     */

     public  String getNumber(String grName){

        String ret= new  String();

        Integer k = (Integer)groupPos.get(grName);



         for (Integer n= 0 ;n<=k;n++){

            ret+=num[n].toString()+".";

        }

         return  ret;

    }





     public  String getNumber(){

         return  getNumber("str");

    }





}

Вызов из отчета для получение номера группировки
$P{REPORT_SCRIPTLET}.getNumber(<имя_группировки>)

для получение номера деталировки
$P{REPORT_SCRIPTLET}.getNumber()
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Нумерация строк деталировки и группировки в Jasperreport / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]