代码If-Else语句未执行



我有以下代码,应该使用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).

我建议您添加一些调试:

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.

我对ABL了解不多。但我认为语法是IF expression THEN DO: work。所以试着在THEN

后面加上DO:

如果屏幕上有一条关于没有找到recorttshiphead的消息,那么它根本没有运行If语句。

查找通常有一个"NO-ERROR",后面跟着一个"IF AVAILABLE ttshiphead THEN"。

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

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来显示如果记录不可用

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".

最新更新