可以在 EGL 文件中声明 dataTable 部件,EGL 项目、包和文件对该部件作了描述。此部件是可生成部件,这意味着它必须位于文件的顶层,并且必须与文件同名。
dataTable 通过程序的使用声明或(作为程序唯一的消息表时)通过程序的
msgTablePrefix 属性与程序相关。dataTable 通过 pageHandler
的使用声明与 pageHandler 相关。
以下是 dataTable 部件的一个示例:
DataTable myDataTablePart type basicTable
{
{ shared = yes }
myColumn1 char(10);
myColumn2 char(10);
myColumn3 char(10);
{ contents = [
[ "row1 col1", "row1 col2", "row1 " + "col3" ] ,
[ "row2 col1", "row2 col2", "row2 " + "col3" ] ,
[ "row3 col1", "row3 col2", "row3 col3" ]
]
}
end
- DataTable dataTablePartName ... end
- 将部件标识为 dataTable 并指定部件名。有关命名规则,请参阅命名约定。
- basicTable(缺省值)
- 包含程序逻辑所使用的信息;例如,国家或地区以及相关代码的列表。
- matchInvalidTable
- 在文本字段的 validatorDataTable 属性中指定,它指示用户的输入必须与 dataTable 的第一列中的任何值不相同。作为对验证失败的响应,EGL 运行时执行以下操作:
- 访问 validatorDataTable 属性中引用的表
- 检索由特定于文本字段的 validatorDataTableMsgKey 属性标识的消息
- 显示由特定于表单的 msgField 属性标识的文本字段中的消息
- matchValidTable
- 在文本字段的 validatorDataTable 属性中指定,它指示用户的输入必须与 dataTable 中的第一列中的值匹配。作为对验证失败的响应,EGL 运行时执行以下操作:
- 访问 validatorDataTable 属性中引用的表
- 检索由特定于文本字段的 validatorDataTableMsgKey 属性标识的消息
- 显示由特定于表单的 msgField 属性标识的字段中的消息
- msgTable
- 包含运行时消息。在下列情况下将显示一条消息:
- 表是程序的消息表。如果程序属性 msgTablePrefix
引用表前缀(这是 dataTable
的名称的第一到第四个字符),则表与程序发生关联。名称的其余部分是下表中的其中一个本地语言代码。
语言 |
本地语言代码 |
巴西葡萄牙语 |
PTB |
简体中文 |
CHS |
繁体中文 |
CHT |
大写英语 |
ENP |
美国英语 |
ENU |
法语 |
FRA |
德语 |
DEU |
意大利语 |
ITA |
日语,片假名(单字节字符集) |
JPN |
韩国语 |
KOR |
西班牙语 |
ESP |
瑞士德语 |
DES |
- 程序通过两种机制的其中一种来检索和显示消息,如 ConverseLib.displayMsgNum 和
ConverseLib.validationFailed 所述。
- rangeChkTable
- 在文本字段的 validatorDataTable 属性中指定,它指示用户的输入必须与至少介于一个数据表行的第一列和第二列的值之间的值匹配。(范围是包括边界的;当用户的输入与任何行的第一列或第二列的值相匹配时,输入有效。)作为对验证失败的响应,EGL 运行时执行以下操作:
- 访问 validatorDataTable 属性中引用的表
- 检索由特定于文本字段的 validatorDataTableMsgKey 属性标识的消息
- 显示由特定于表单的 msgField 属性标识的字段中的消息
- "alias"
- 一个字符串,它包含在生成的输出的名称中。如果未指定别名,则会使用 dataTable
名。
- shared
- 指示 dataTable 的同一个实例是否被同一个运行单元中的多个程序使用。有效值是 yes 和 no(缺省值)。如果 shared
的值是 no,则运行单元中的每个程序都拥有 dataTable 的唯一副本。
此属性指示
dataTable 的同一个实例是否被同一运行单元中的每个程序使用。如果 shared
的值是 no,则运行单元中的每个程序都拥有 dataTable 的唯一副本。
在运行时进行的更改对每个能够访问 dataTable
的程序都是可见的,而且这些更改将保留到 dataTable 被卸装为止。在大多数情况下,resident
属性(在后面描述)的值确定何时卸装 dataTable;有关详细信息,请参阅该属性的描述。
- resident
- 指示在每个访问 dataTable 的程序都已结束之后,是否仍将 dataTable 存放在内存中。
有效值是 yes 和 no。缺省值为 no。
如果将 resident
属性设置为 yes,则将共享 dataTable,而不考虑
shared 的值。
使 dataTable 驻留下来有以下好处:
- dataTable 保留了先前运行的程序对其写入的任何值
- 可以立即访问该表,而不需要进行附加的装入处理
在运行单元结束之前,驻留的 dataTable 一直保持已装入状态。但是,当使用非驻留
dataTable 的程序结束时,非驻留 dataTable 将被卸装。
注: dataTable 是在第一次被程序访问时而不是在 EGL 运行时处理使用声明时装入内存的(如果必要的话)。
- contents
- dataTable 单元格的值,每个值都为下列其中一种类型:
给定行中的内容的类型必须与顶层结构字段兼容,每个结构字段都表示一个列定义。
- structureField
- 结构字段,如 EGL 源格式的结构字段中所述。