上一个主题下一个主题


教程 5:使用 JavaScript 编写事件处理程序

本教程提供有关编写一组事件处理程序的指示信息。本教程假定您有一个基于 Classic Models, Inc. 样本数据库的基本报告设计。启动报告设计的唯一要求是,它包含具有客户名称列的客户表。在本教程中,您将计算名称包含“Mini”字符串的客户数并在弹出窗口中显示结果。

在本教程中,您将执行下列任务:

任务 1:打开报告设计

打开使用 Classic Car 样本数据库并显示客户名称表的报告设计。

  1. 如果有必要,通过选择“窗口”->“显示视图”->“导航器”来打开导航器。
  2. 双击适当的报告设计。这将在布局编辑器中打开该文件,如图 22-4 所示。

任务 2:在 Table.onCreate( ) 方法中创建并初始化计数器

为了计算名称包含字符串 Mini 的客户数,首先必须声明一个全局计数器并将它的值设置为零。由于在检索任何行之前都会执行 Table.onCreate( ) 方法,所以,最好在此方法中完成声明全局计数器和设置值的工作。您将在 Row.onCreate( ) 方法中有条件地使此计数器递增。

  1. 在“布局”中,通过将光标置于表的左下角附近,选择该表。将显示表图标,如图 22-5 所示。
  2. 选择“脚本”选项卡。将显示“脚本”选项卡,如图 22-6 所示。
  3. 在脚本窗口中,为 onCreate( ) 方法输入以下代码行:
  4. countOfMinis = 0; 
    
  5. 要运行该报告并验证该代码不会导致任何错误,请选择“预览”。
  6. 滚动到报告底部,JavaScript 错误消息将显示在此位置。如果没有任何错误,就会显示该报告,如图 22-7 所示。
  7. 如果您看到错误消息,则表示输入的语句不正确。在这种情况下,请返回到脚本窗口,选择刚刚修改过的方法,更正错误,然后再次选择“预览”。

任务 3:在 Row.onCreate( ) 方法中有条件地使计数器递增

要计算名称包含字符串 Mini 的客户数,必须检查每个客户的名称并在字符串 Mini 每次出现时使计数器递增 1。适合于执行此任务的逻辑位置是 Row.onCreate( ) 方法,这是因为每次从数据源检索数据行之后都会执行此方法。

  1. 在“布局”中,选择“行”,然后选择“脚本”。
  2. 打开脚本窗口顶部的方法列表并选择 onCreate,如图 22-8 所示。
  3. 在脚本窗口中输入以下 JavaScript 代码行:
  4. row=this.getRowData( ); 
    
    注意,在 this 后面输入句点时,将显示包含所有可用方法和属性(其中包括 getRowData)的弹出窗口。此行代码获取具有 getExpressionValue( ) 方法的 IRowData 的实例,此方法用于获取该行中某一列的内容。
  5. 在刚刚输入的行下面,输入以下 JavaScript 代码行:
  6. CustName=row.getExpressionValue( "row[CUSTOMERNAME]" ); 
    
    此行代码返回数据集中 CUSTOMERNAME 列的表列内容。
  7. 输入以下代码行,以便有条件地使在 Table.onCreate( ) 方法中创建并初始化计数器中创建的计数器递增。
  8. if( CustName.indexOf( "Mini" ) != -1 ) countOfMinis += 1; 
    
    可以使用 JavaScript 选用板来在上一行中插入下列每个元素:
    • indexOf( )
    • 选择“本机(JavaScript)对象”->“字符串函数”->“indexOf( )”
    • !=
    • 选择“运算符”->“比较”->“!=”
    • +=
    • 选择“运算符”->“赋值”->“+=”
  9. 选择“预览”以再次运行该报告,从而验证输入的代码不会导致任何错误。

任务 4:使用 ReportDesign.afterFactory( ) 方法来显示结果

要显示名称包含字符串 Mini 的客户数,请在处理完所有表行后运行的方法中插入代码。其中一个适合于插入此代码的逻辑位置是 ReportDesign.afterFactory( ) 方法。

  1. 在“大纲”中,选择报告设计,如图 22-9 所示。
  2. 从脚本窗口的下拉列表中选择 afterFactory( ) 方法。
  3. 在 afterFactory( ) 方法中输入以下代码:
  4. importPackage( Packages.javax.swing ); 
    frame = new JFrame( "Count of Minis = " + countOfMinis ); 
    frame.setBounds( 310, 220, 300, 20 ); 
    frame.show( ); 
    
  5. 选择“预览”以查看结果。如果代码中没有任何错误,您就会看到类似于图 22-10 所示的报告。

如果您未看到 Count of Minis 窗口,请在 Eclipse 窗口后面查找该窗口。如果 Count of Minis 窗口未显示,则最有可能的原因是某些代码导致了脚本编制错误。

如果您怀疑发生了脚本编制错误,请滚动到报告底部,所有脚本编制错误消息都将显示在此位置。在大多数情况下,加号(+)旁边会显示简要的错误消息。加号表示还有更详细的错误消息,展开简要错误消息后将显示这些消息。要展开简要错误消息,请选择该加号。接着,向下滚动就可以查看更详细的错误消息。


(c) Copyright Actuate Corporation 2006

上一个主题下一个主题