0

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

4 回答 4

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.

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

于 2013-06-18T15:02:12.493 回答
0

我对ABL了解不多。但我认为语法是 IF表达式THEN DO: work。所以尝试添加一个 DO: 在你的 THEN 之后

于 2013-06-18T14:26:10.107 回答
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".
于 2013-06-20T10:43:27.990 回答
0

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

通常,FIND 有一个“NO-ERROR”,然后在需要时有一个“IF AVAILABLE ttshiphead THEN”。

于 2013-06-18T14:51:04.860 回答