成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

報表參數的獲取與配置詳解

開發 后端
本文介紹報表參數的獲取和配置方法,從而實現通過程序進行設計。參數是報表生成之前想報表設計文件輸入的報表元素。報表的應用程序可以訪問報表的參數的屬性,最常用的屬性是name和value。

報表是有參數的,通過報表參數可以使用程序進行獲取和配置。參數是報表生成之前想報表設計文件輸入的報表元素。報表的應用程序可以訪問報表的參數的屬性,最常用的屬性是name和value,你可以使用參數名或通用編碼來獲取參數。

為報表設計創建一個參數定義任務

一個IGetParameterDefinitionTask對象提供鏈接到報表設計所有參數的接口。通過調用 ReportEngine.createGetParameterDefinitionTask( )創建一個參數定義對象,使用結束后調用他的close方法關閉。

測試報表設計是否有參數

IGetParameterDefinitionTask.getParameterDefns( )可以測試報表設計是否有參數,它返回一個參數集合,調用集合的isEmpty( )方法可以測試集合中是否有元素。

獲取報表設計的參數

通過IGetParameterDefinitionTask.getParameterDefn( )方法獲取一個已知名字的參數,它返回一個IParameterDefnBase類型對象,也可以調用getParameterDefns( )方法返回一個參數集合。

getParameterDefns( )需要一個boolean參數,如果為false返回一個未分組的參數集合,如果為true返回報表設計中定義的參數組。

調用IParameterDefnBase.getParameterType( )可以檢驗參數是否是一個組。如果是一個組則返回IParameterDefnBase.PARAMETER_GROUP,如果是一個級聯參數組則返回 IParameterDefnBase.CASCADING_PARAMETER_GROUP。為獲取一組報表參數,使用方法 IParameterGroupDefn.getContents( ),它返回一個數據類型是IScalarParameterDefn的ArrayList對象。

獲取報表參數的默認值

這個任務是可選的。調用IGetParameterDefinitionTask.getDefaultValue( )獲取一個已知參數的默認值,它返回的是一個Object。可以通過調用IScalarParameterDefn.getDataType( )來獲取Object的有效類型,它返回一個IScalarParameterDefn定義的int類型的靜態變量。調用 IGetParameterDefinitionTask.getDefaultValues( )來獲取報表設計的所有參數的默認值,它返回一個HashMap對象存儲了從參數名到默認值的映射。

使用常量列表提供的效值

許多報表參數只接受常量列表的值,這些值可能是靜態常量,也可能是數據庫里查出來的數據list。使用 IGetParameterDefinitionTask.getSelectionList( )可以返回參數所能接受的參數(IParameterSelectionChoice)的集合,如果集合為null,則可以接受任何值。 IParameterSelectionChoice的getLabel( )方法返回現實的文本,getValue( )返回值。

獲取每個報表參數的屬性

這個任務是可選的。使用IScalarParameterDefn的方法可以獲取表參數的屬性。應用程序使用屬性生成用戶自定義接口。例如,獲取參數的數據類型使用getDataType( )方法。

為參數設置值

調用IGetParameterDefinitionTask.setParameterValue( )為參數設置值。如果你是通過應用程為日期數值等參數返回一個字符串,要把他們轉化成和本地無關的格式。調用方法 ReportParameterConverter.parse( )方法可以完成這項工作。getParameterValues( )方法返回一個HashMap包含了已經設置的所有參數。

報表參數設置實例

下面的代碼展示了如何設置一個已知參數名的參數值:

  1. // Create a parameter definition task.    
  2. IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( runnable );    
  3. // Instantiate a scalar parameter.    
  4. IScalarParameterDefn param = (IScalarParameterDefn)     
  5. task.getParameterDefn( "customerID" );    
  6. // Get the default value of the parameter. In this case,     
  7. // the data type of the parameter, customerID, is Double.    
  8. int customerID = ((Double) task.getDefaultValue( param )).intValue( );    
  9. // Get a value for the parameter. This example assumes that     
  10. // this step creates a correctly typed object, inputValue.    
  11. // Set the value of the parameter.    
  12. task.setParameterValue( "customerID", inputValue );    
  13. // Get the values set by the application for all parameters.    
  14. HashMap parameterValues = task.getParameterValues( );    
  15. // Close the parameter definition task.    
  16. task.close( );    
  17. // Create a parameter definition task.  
  18. IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( runnable );  
  19. // Instantiate a scalar parameter.  
  20. IScalarParameterDefn param = (IScalarParameterDefn)   
  21. task.getParameterDefn( "customerID" );  
  22. // Get the default value of the parameter. In this case,   
  23. // the data type of the parameter, customerID, is Double.  
  24. int customerID = ((Double) task.getDefaultValue( param )).intValue( );  
  25. // Get a value for the parameter. This example assumes that   
  26. // this step creates a correctly typed object, inputValue.  
  27. // Set the value of the parameter.  
  28. task.setParameterValue( "customerID", inputValue );  
  29. // Get the values set by the application for all parameters.  
  30. HashMap parameterValues = task.getParameterValues( );  
  31. // Close the parameter definition task.  
  32. task.close( );  

下面的代碼展示了如何使用報表參數集合,例子中使用ReportParameterConverter將字符串轉化成用戶接口接受的參數格式。

  1. // Create a parameter definition task.    
  2. IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( runnable );    
  3. // Create a collection of the parameters in the report design.    
  4. Collection params = task.getParameterDefns( false );    
  5. // Get the default values of the parameters.    
  6. HashMap parameterValues = task.getDefaultValues( );    
  7. // Get values for the parameters. Later code in this example    
  8. // assumes that this step creates a HashMap object,    
  9. // inputValues. The keys in the HashMap are the parameter    
  10. // names and the values are those that the user provided.    
  11. // Iterate through the report parameters, setting the values     
  12. // in standard locale-independent format.    
  13. Iterator iterOuter = params.iterator( );    
  14. ReportParameterConverter cfgConverter =    
  15.         new ReportParameterConverter( "", Locale.getDefault() );    
  16. while ( iterOuter.hasNext( ) ) {    
  17. IParameterDefnBase param = (IParameterDefnBase) iterOuter.next( );    
  18. String value = (String) inputValues.get( param.getName( ));    
  19. if ( value != null ) {    
  20. parameterValues.put( param.getName( ),     
  21. cfgConverter.parse( value, param.getDataType( ) ) );    
  22. }    
  23. }    
  24. // Close the parameter definition task.    
  25. task.close( );    
  26. // Create a parameter definition task.  
  27. IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( runnable );  
  28. // Create a collection of the parameters in the report design.  
  29. Collection params = task.getParameterDefns( false );  
  30. // Get the default values of the parameters.  
  31. HashMap parameterValues = task.getDefaultValues( );  
  32. // Get values for the parameters. Later code in this example  
  33. // assumes that this step creates a HashMap object,  
  34. // inputValues. The keys in the HashMap are the parameter  
  35. // names and the values are those that the user provided.  
  36. // Iterate through the report parameters, setting the values   
  37. // in standard locale-independent format.  
  38. Iterator iterOuter = params.iterator( );  
  39. ReportParameterConverter cfgConverter =  
  40.         new ReportParameterConverter( "", Locale.getDefault() );  
  41. while ( iterOuter.hasNext( ) ) {  
  42. IParameterDefnBase param = (IParameterDefnBase) iterOuter.next( );  
  43. String value = (String) inputValues.get( param.getName( ));  
  44. if ( value != null ) {  
  45. parameterValues.put( param.getName( ),   
  46. cfgConverter.parse( value, param.getDataType( ) ) );  
  47. }  
  48. }  
  49. // Close the parameter definition task.  
  50. task.close( );  

使用級聯參數

級聯參數參數是一組可供用戶選擇的參數值的集合。第一個參數的選擇會影響到第二個參數中的值。參數使用一個或多個查詢來從數據集把數據展示給用戶。參數定義任務根據前面的選擇以行為單位過濾參數組中的數據。

使用報表引擎實現級聯參數,要進行如下工作:

■使用IGetParameterDefinitionTask.evaluateQuery( )方法為級聯參數準備數據,它需要參數group的名字作為參數。

■調用IGetParameterDefinitionTask.getSelectionListForCascadingGroup( )獲取參數組的第一個參數的值,它需要兩個參數,參數名和對象數組,對第一個參數來說這個數組是空的。該方法返回一個 IParameterSelectionChoice集合。

■ 再次調用getSelectionListForCascadingGroup( )方法獲取后面的參數,這次Object[ ]中放的是前面獲取的參數值。

下面的代碼展示了如何通過查詢實現級聯參數:

  1. // Create a grouped collection of the design’s parameters.    
  2. Collection params = task.getParameterDefns( true );    
  3. // Iterate through the parameters to find the cascading group.    
  4. Iterator iter = params.iterator( );    
  5. while ( iter.hasNext( ) ) {    
  6. IParameterDefnBase param = (IParameterDefnBase) iter.next();    
  7. if ( param.getParameterType() ==     
  8. IParameterDefnBase.CASCADING_PARAMETER_GROUP ) {    
  9. ICascadingParameterGroup group = (ICascadingParameterGroup) param;    
  10. Iterator i2 = group.getContents( ).iterator( );    
  11. // Run the query for the cascading parameters.    
  12. task.evaluateQuery( group.getName() );    
  13. Object[ ] userValues = new Object[group.getContents( ).size( )];    
  14. // Get the report parameters in the cascading group.    
  15. int i = 0;    
  16. while ( i2.hasNext( ) ) {    
  17. IScalarParameterDefn member = (IScalarParameterDefn) i2.next( );    
  18. // Get the values for the parameter.    
  19. Object[ ] setValues = new Object[i];    
  20. if ( i > 0 )  System.arraycopy( userValues, 0, setValues, 0, i );    
  21. Collection c = task.getSelectionListForCascadingGroup(    
  22.    group.getName(),setValues );    
  23. // Iterate through the values for the parameter.    
  24. Iterator i3 = c.iterator();    
  25. while ( i3.hasNext( ) ) {    
  26. IParameterSelectionChoice s =     
  27. ( IParameterSelectionChoice ) i3.next( );    
  28. String choiceValue = s.getValue( );    
  29. String choiceLabel = s.getLabel( );    
  30. }    
  31. // Get the value for the parameter from the list of    
  32. // choices. This example does not provide the code for    
  33. // this task.    
  34. userValues[i] = inputChoiceValue;    
  35. i++;    
  36. }    
  37. }    
  38. }    

以上就是用程序處理報表參數的配置方法。

【編輯推薦】

  1. Java報表工具FineRpeort特性概覽
  2. Java報表工具的簡約之美
  3. Java多線程編程實戰精要
  4. Java內部類使用的四點建議
  5. 深入核心 Java終止函數詳解
責任編輯:yangsai 來源: JavaEye博客
相關推薦

2010-11-29 13:33:00

sybase配置參數

2010-09-26 11:00:48

JVM參數配置

2018-11-01 10:34:37

JVM內存配置

2010-09-17 15:57:23

TomcatJVM

2023-09-01 08:18:53

Tomcat配置參數

2009-07-09 14:02:58

Tomcat JDK

2009-07-04 00:50:38

2011-03-02 13:28:33

Vsftpd配置

2024-01-15 16:46:35

Nginx服務器

2009-03-10 13:51:36

編譯器VS2010C#

2010-06-21 14:57:32

Linux apt

2010-06-03 15:04:31

NAP IPSEC配置

2010-08-12 13:15:26

MySQL集群

2010-07-19 11:35:05

2010-04-02 17:11:45

Oracle數據庫

2010-08-23 09:14:18

Visual Stud

2011-06-21 17:23:40

QT 編譯

2011-01-19 09:55:27

postfix

2009-08-31 15:54:35

2010-06-01 17:14:03

Rsync 參數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区不卡 | 国产免费一级片 | 欧美国产日韩精品 | 中文字幕综合在线 | 国产精品久久久久久52avav | 色婷婷久久综合 | 亚洲在线视频 | 久久精品国产久精国产 | 美女视频一区二区 | 日日摸天天添天天添破 | 日韩欧美中文字幕在线观看 | 色视频成人在线观看免 | 羞羞视频网页 | 99精品一区二区三区 | 亚洲成人在线免费 | 无码一区二区三区视频 | 性欧美精品一区二区三区在线播放 | 日本精品一区 | 91久久 | 激情国产 | 国产激情一区二区三区 | 最新一级毛片 | 三级黄色网址 | 麻豆视频在线免费观看 | 成人精品国产一区二区4080 | 亚洲午夜精品在线观看 | 欧美精品三区 | 男女视频在线免费观看 | 久久国产传媒 | 99re在线播放 | 国产做a爱片久久毛片 | 中文字幕在线播放第一页 | 中文字幕国产精品 | 国产欧美日韩综合精品一 | 欧美中文字幕 | 欧美精品一区二区三区在线 | 亚洲在线 | 精品中文字幕视频 | 日本一区二区在线视频 | 亚洲 欧美 日韩在线 | 国产精品一区二区无线 |