【问题标题】:ABL Code If-Else statement not executingABL 代码 If-Else 语句未执行
【发布时间】:2013-06-18 14:20:13
【问题描述】:

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

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案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.
    

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

    【讨论】:

    • 我看到这被标记为“正确”。这是否意味着调试帮助您找出问题所在?如果是这样……出了什么问题?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您的代码看起来正确。可能会进行一些小的更改以确保您有记录。

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

        【讨论】:

        • 如果您将多个语句作为 IF THEN 或 ELSE 的一部分,则只需要一个 DO: END 块
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-28
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        相关资源
        最近更新 更多