ABL代码If-Else语句未执行

时间:2013-06-18 14:20:14

标签: progress-4gl openedge

我有以下代码,应使用Progress ABL执行简单的if-else语句。

即使无法找到子字符串“ UK ”,我也无法让程序到达ELSE语句。谁能看到我错过的东西:

FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404".
IF ttShipHead.AddrList Matches "*UK*" THEN
    assign ttShipHead.CheckBox01 = (false).
ELSE
    assign ttShipHead.CheckBox01 = (true).

4 个答案:

答案 0 :(得分:1)

我建议您添加一些调试:

FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" no-error.

message available( ttShipHead ).
pause.

message ttShipHead.AddrList ( ttShipHead.AddrList Matches "*UK*" ).
pause.

IF ttShipHead.AddrList Matches "*UK*" THEN
        assign ttShipHead.CheckBox01 = (false).
    ELSE
        assign ttShipHead.CheckBox01 = (true).

message ttShipHead.Checkbox01.
pause.

这应该清楚地表明出了什么问题。

答案 1 :(得分:0)

我不太了解ABL。但我认为语法是 如果表达那么:工作。所以尝试添加一个DO:在你那之后

答案 2 :(得分:0)

如果屏幕上有关于未找到记录ttshiphead的消息,那么它根本不会运行IF语句。

通常情况下,FIND有一个“NO-ERROR”,后面跟着“IF AVAILABLE ttshiphead THEN”,如果需要的话。

答案 3 :(得分:0)

您的代码看起来是正确的。也许是一些小改动,以确保你有记录。

FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" NO-ERROR.

IF AVAILABLE ttShipHead THEN 
    IF ttShipHead.AddrList MATCHES "*UK*":U THEN 
    assign ttShipHead.CheckBox01 = (false).
    ELSE
        assign ttShipHead.CheckBox01 = (true).

如果您想添加,则显示记录是否不可用。

FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" NO-ERROR.

IF AVAILABLE ttShipHead THEN 
    IF ttShipHead.AddrList MATCHES "*UK*":U THEN 
    assign ttShipHead.CheckBox01 = (false).
    ELSE
        assign ttShipHead.CheckBox01 = (true).
ELSE
    MESSAGE "NO RECORD FOUND".