EGL 记录部件是由一个或多个其它数据部件组成的复杂数据结构。基本变量和 dataItem 各自只能存放一份数据(例如,一个字符或一个数字值),而通过组合任意数目的其它数据部件,记录可以存放任意数目的数据。记录部件通常用来表示数据库记录,但需要将几个数据部件集中在一起来使用记录部件。
与 dataItem 一样,必须先定义记录部件,然后才能根据记录部件创建变量。以下代码定义由三个不同的基本变量组成的记录部件。此记录部件的这三个字段都是采用创建基本变量所用的方法定义的。每个基本变量前面的数字在此练习的后面说明。
record myRecordPartOne type basicRecord 10 myCharField char(30); 10 myDecimalField decimal(7,2); 10 myIntField int; end
还可以使用 dataItem 作为记录中的字段,如下面的样本代码中所示。必须先定义 dataItem 部件,然后才能在记录部件定义中使用它们。
record myRecordPartTwo type basicRecord 10 myCharField myCharFieldDataItem; 10 myDecimalField myDecimalFieldDataItem; 10 myIntField myIntFieldDataItem; end
记录变量是采用创建基本变量和 dataItem 变量所用的方法创建的。需为变量指定名称,然后指定它的数据部件。
myVariableOne myRecordPartOne; myVariableTwo myRecordPartTwo;
但是,使用记录变量比使用其它类型的变量要复杂一些。因为记录是结构化数据部件,必须根据记录的结构访问记录中的字段。例如,可按如下所示给记录变量 myVariableOne 中的字段赋值:
myVariableOne.myCharField = "The chararacter field information"; myVariableOne.myDecimalField = 12.34; myVariableOne.myIntField = 10;
记录中的每个字段都有一个级别号。包括级别号的记录称为固定记录。可以创建没有级别号的记录,但此教程中不讨论此类型的记录。有关没有级别号的记录的信息,请参阅帮助中的记录部件。
级别号允许您为记录提供复杂的结构。通过使用级别号,在组织记录时可以在一些字段中嵌套另一些字段。例如,以下代码定义具有两个字段(即,Name 和 Address)的记录部件。Name 字段包含两个字段:FirstName 和 LastName。类似的,Address 字段包含四个字段:Street、City、State 和 PostalCode。
record myPersonRecordPart type basicRecord 10 Name; 20 FirstName char(50); 20 LastName char(50); 10 Address; 20 Street char(50); 20 City char(30); 20 State char(25); 20 PostalCode char(20); end
与简单记录一样,必须根据记录的结构访问复杂记录中的字段。例如,以下代码从 myPersonRecordPart 数据部件创建一个变量并给它的六个字段赋值:
myPerson myPersonRecordPart; myPerson.Name.FirstName = "Steve"; myPerson.Name.LastName = "Smith"; myPerson.Address.Street = "123 Maple Street"; myPerson.Address.City = "Any City"; myPerson.Address.State = "Any State"; myPerson.Address.PostalCode = "12345";
在下面的步骤中,将创建使用记录来处理数据的 Web 页面。
RecordTest
package pagehandlers; PageHandler RecordTest {view="RecordTest.jsp", onPageLoadFunction=onPageLoad} //Variables personInput myPersonRecordPart; personOutput myPersonRecordPart; //Function definitions Function onPageLoad() End Function initializeRecord() personInput.Name.FirstName = "Steve"; personInput.Name.LastName = "Smith"; personInput.Address.Street = "123 Maple Street"; personInput.Address.City = "Any City"; personInput.Address.State = "Any State"; personInput.Address.PostalCode = "12345"; end Function clearAll() move " " to personInput; end Function clearAddress() move " " to personInput.Address; end Function moveRecord() move personInput to personOutput; end End //Record part definition record myPersonRecordPart type basicRecord 10 Name; 20 FirstName char(50); 20 LastName char(50); 10 Address; 20 Street char(50); 20 City char(30); 20 State char(25); 20 PostalCode char(20); end
以下是一些有关刚才插入的代码的技术说明:
注意,在 PageHandler 中创建的两个记录变量就列示在此处。每个变量都可根据记录部件定义中的级别来展开。可以在页面上使用整个记录,也可以选择使用它的一部分。
该页面看起来应如下所示:
现在就已经将 PageHandler 中的每个函数(onPageLoad() 函数除外)绑定至 Web 页面上的相应按钮。下一步是根据创建的记录将输出字段添加至页面,以便保存输出内容。
既然您已经创建了具有多个变量和函数的页面,请注意,您就可以同时添加和处理几个基本变量,因为它们是集中在一个记录中的。当需要同时处理许多相关变量时,使用记录可节省时间。
现在,您可以开始进行练习 1.5:数组了。