2013-04-18 3 views
0

안녕하세요, 난 하위 보고서를 만들었하지만 난 내 하위 보고서의 인상 예외에 setBorder 속성을 사용하여 경계를 설정할 때 java.lang.reflect.InvocationTargetException동적 재스퍼 하위 보고서 표 테두리

이에서 하위 보고서 코드

public DynamicReport buildReport() throws Exception { 

     FastReportBuilder frb = new FastReportBuilder(); 
     frb.setTitle("PROJECT DOCUMENTATION") 
      .setMargins(5, 5, 20, 20); 
     frb.addColumn("","project_id", String.class.getName(), 30) 
     .addColumn("","product_name",String.class.getName(),30) 

     .setQuery("select * from project_master where project_id=$P{project_id}", DJConstants.QUERY_LANGUAGE_SQL); 
     SIZE = table_name.size(); 
     delete_table = table_name; 
     System.out.println("SIZE = = = "+SIZE); 

     frb.addGroups(2); 

     for(int s=0;s<table_name.size();s++){ 
      System.out.println(" s "+s+" = "+table_name.get(s).toString()+" s_n "+seciton_name.get(s).toString()+" tab_type "+table_type.get(s).toString()); 
     frb.addSubreportInGroupHeader(2, subreport(table_name.get(s).toString(),seciton_name.get(s).toString(),table_type.get(s).toString()),getLayoutManager 

(),"getDataSourceSubreport"+s,DJConstants.SUBREPORT_PARAMETER_MAP_ORIGIN_PARAMETER,DJConstants.DATA_SOURCE_TYPE_JRDATASOURCE); 
     params.put("getDataSourceSubreport"+s, getDataSourceSubreport(table_name.get(s).toString())); 

      } 


     frb.setPrintBackgroundOnOddRows(true); 

     frb.setUseFullPageWidth(true); 
     params.put("project_id","PJT/0001"); 

     return dr; 
    } 

public DynamicReport subreport(String tab_name,String tit_name,String tab_type)throws Exception{ 
**Style tbl_border = new Stryle(); 
     tbl_border.setBorder(Border.THIN());** //***Error occured in the line*** 
     FastReportBuilder drb1 = new FastReportBuilder(); 
     if(tab_type.equals("textarea")){ 
      int max_width = 0; 
        Statement st5 = connection.createStatement(); 
      ResultSet rs5 = st5.executeQuery("select column_name from information_schema.columns where table_name='"+tab_name+"'"); 
      while(rs5.next()){ 
           System.out.println("inside while textarea"); 
        if(max_width>=1){ 
         drb1.addColumn("",rs5.getString(1).toString(),String.class.getName(),25); 
        } 
        max_width++; 
      } 
      drb1.setUseFullPageWidth(true); 
     } 
     if(tab_type.equals("table")){ 

      int max_width =0; 
        Statement st5 = connection.createStatement(); 
       ResultSet rs5 = st5.executeQuery("select column_name from information_schema.columns where table_name='"+tab_name+"'"); 
       while(rs5.next()){ 
        System.out.println("inside while"); 
         **drb1.addColumn(rs5.getString(1).toString(),rs5.getString(1).toString(),String.class.getName(),25)addStyle(tbl_border);** 

         max_width++; 
       } 
      if(max_width>2){ 
       drb1.setUseFullPageWidth(true); 
      } 
     } 

//   for(int sg=0;sg<header.size();sg++){ 
//    drb1.addColumn(header.get(sg).toString(),header.get(sg).toString(),String.class.getName(),25); 
//   } 

      drb1.setSubtitle(tit_name); 
      drb1.setTitle(""); 

       DynamicReport dr1 = drb1.build(); 

      return dr1; 
    } 

입니다 위의 코드는 위의 표와 같은 정확한 테두리가 필요한 경우 위 조건을 설정합니다.

답변

0

Dyanamicjasper3.0.6을 사용하여 충돌이 발생합니다. 이는 Dynamicjasper 4.0.3 및 3.0을 사용할 때 경계 클래스를 올바르게 포함하지 않기 때문입니다. 동일인 6 명 3.0.6이 아닌 4.0.3을 고려해야합니다. 그래서 3.0.6을 제거하고 4.0.3을 사용하십시오.

+0

그것은 저에게 효과적입니다. – sath