OpenUI 语句允许用户与界面基于 consoleUI 的程序交互。该语句定义用户和程序事件并指定如何响应每个事件。
OpenUI 语句的语法如下所示:
allowAppend = yes, allowDelete = no
指示如何将一系列变量与一系列 ConsoleField 绑定;明确地说,是否将每个变量名与 ConsoleField 名相匹配。变量名列示在 BindClause 中,而 ConsoleField 名是 ConsoleField 名称字段中的值。
不管 consoleField 是显式列示在 openUI 语句中还是列示在字典声明中,它们的顺序都将定义 consoleField 的顺序以便按位置进行绑定。(它们的顺序还将定义用户输入的跳进顺序,如 ConsoleUI 部件和相关变量中所述。)
如果 consoleField 已列示或者在字典声明中(当绑定列表中没有匹配的变量时),consoleField 的用户输入会被忽略。同样,没有与任何字段匹配的绑定变量也会被忽略。
在运行时,至少一个 consoleField 和变量必须绑定在一起;否则将发生错误。
此帮助文本是用于 openUI 命令的。在某些情况下,与该键相关联的文本更加特定于上下文。例如,菜单中的每个选项可以有自己的帮助消息。
资源束是由系统变量 ConsoleLib.messageResource 标识的,如 messageResource 中所述。
指定 openUI 语句是否用于创建选择标准以供在 SQL 语句(如 SELECT)中使用。
openUI 语句必须与字符类型的单个变量绑定。该变量不提供 ConsoleField 的初始值,但会接收用户输入,已经该用户输入的格式以供在 SQL WHERE 子句中使用。
如果 setInitial 的值为 no,则一开始将提取并显示绑定变量的值。
有关绑定的详细信息,请参阅有关 OnEventBlock(后面会讲到)以及 ConsoleUI 部件和相关变量的部分。
OnEvent(eventKind: eventQualifiers)
响应指定事件的 EGL 语句在一个 OnEvent 头与下一个 OnEvent 头(如果有的话)之间,如后面的示例中所示。
窗口没有可用的事件块。
openUI {bindingByName=yes} activeForm bind firstName, lastName, ID OnEvent(AFTER_FIELD:"ID") if (employeeID == 700) firstName = "Angela"; lastName = "Smith"; end end
可通过以 exit openUI 的格式发出 exit 语句来结束 openUI 语句。
ON_KEY:("a", "ESC")
此事件可供基于窗口的变量之外的所有 ConsoleUI 变量使用。
BEFORE_FIELD:("field01", "field02")
AFTER_FIELD:("field01", "field02")
在将更改落实至数据库之前,可以编辑该行;就像 AFTER_INSERT 处理程序中经常发生的那样。
MENU_ACTION:("item01", "item02")
通过设置 consoleField 属性 SQLColumnName 将 consoleField 与 SQL 表列相关联;必须设置 consoleField 属性 dataType,如 ConsoleField 属性和字段中所示。
> 25
= 'Sarasota'
AGE > 28 AND CITY = 'Sarasota'
就像显示的那样,EGL 将运算符 AND 放在用户提供的每个子句之间。
下表显示有效的用户输入和生成的子句。短语简单 SQL 类型指的是未结构化也非类似 LOB 类型的 SQL 类型。
符号 | 定义 | 受支持的数据类型 | 示例 | 生成的子句(对于名为 C 的字符列) | 生成的子句(对于名为 C 的数字列) |
---|---|---|---|---|---|
= | 等于 | 简单 SQL 类型 | =x, ==x | C = 'x' | C = x |
> | 大于 | 简单 SQL 类型 | >x | C > 'x' | C > x |
< | 小于 | 简单 SQL 类型 | <x | C < 'x' | C < x |
>= | 不小于 | 简单 SQL 类型 | >=x | C >= 'x' | C >= x |
<= | 不大于 | 简单 SQL 类型 | <=x | C <= 'x' | C <= x |
<> 或 != | 不等于 | 简单 SQL 类型 | <>x 或 !=x | C != 'x' | C != x |
.. | 范围 | 简单 SQL 类型 | x.y 或 x..y | C BETWEEN 'x' AND 'y' | C BETWEEN x AND y |
* | 字符串的通配符(如下一个表中所述) | CHAR | *x 或 x* 或 *x* | C MATCHES '*x' | 不适用 |
? | 单字符通配符(如下一个表中所述) | CHAR | ?x, x?, ?x?, x?? | C MATCHES '?x' | 不适用 |
| | 逻辑或 | 简单 SQL 类型 | x|y | C IN ('x', 'y') | C IN (x, y) |
等号(=)可以表示 IS NULL;而不等号(!= 或 <>)可以表示 IS NOT NULL。
MATCHES 子句是通过用户指定下表中描述的其中一个通配符生成的。
符号 | 作用 |
* | 匹配零或多个字符。 |
? | 匹配任何单一字符。 |
[ ] | 与任何用括号括起来的字符相匹配。 |
-(连字符) | 在方括号内的字符之间使用时,连字符与两个字符之间的范围内的任何字符(包括这两个字符)相匹配。例如,[a-z] 与小写范围内的任何小写字母或特殊字符相匹配。 |
^ | 在方括号中使用时,初始插入标记与未包括在方括号内的任意字符相匹配。例如,[^abc] 与 a、b 或 c 之外的任意字符相匹配。 |
\ | 是缺省转义字符;下一个字符是字面值。允许任何通配符包括在字符串内并且不充当通配符。 |
方括号外部的任何其它字符 | 必须完全匹配。 |
相关任务
使用 consoleUI 创建界面