【问题标题】:how to hide the warnings from method READ-XML()如何隐藏来自方法 READ-XML() 的警告
【发布时间】:2013-06-09 23:46:27
【问题描述】:

当我使用 hDataset:READ-XML() 方法将数据读入数据集并且文件路径不正确时,Progress 首先显示一条警告消息(警告 nr 4065),然后显示一条错误消息。我可以(使用 CATCH 块)捕获错误消息,但不能捕获警告。用户必须手动删除警告。

我怎样才能取消这个警告?

DEFINE TEMP-TABLE tt NO-UNDO
    FIELD a AS CHARACTER.

DEFINE DATASET ds FOR tt.

DO ON ERROR UNDO , LEAVE:
    /* Reading non existing xml-file */
    DATASET ds:READ-XML("FILE", "c:\dddw\s.xml","empty","", FALSE, "","" ).

    CATCH err AS Progress.Lang.Error :
         MESSAGE err:GETMESSAGE(1)
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END CATCH.

END.

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案1】:

    通常正在进行 ABL,您可以通过在命令/方法后添加 NO-ERROR 来抑制消息。

    hDataset:READ-XML() NO-ERROR.
    

    之后,您通常会检查是否ERROR-STATUS:STATUS = TRUE(发生错误),但在这种情况下似乎不起作用。

    这个例子有效:

    DEFINE TEMP-TABLE tt NO-UNDO
        FIELD a AS CHARACTER.
    
    DEFINE DATASET ds FOR tt.
    
    DEFINE VARIABLE i AS INTEGER     NO-UNDO.
    /* Reading non existing xml-file */
    DATASET ds:READ-XML("FILE", "c:\dddw\s.xml","empty","", FALSE, "","" ) NO-ERROR.
    /* This is false */
    DISP ERROR-STATUS:ERROR.
    
    /* However, ERROR-STATUS:NUM-MESSAGES shows 2 errors */
    IF ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
        DO i = 1 TO ERROR-STATUS:NUM-MESSAGES:
            DISPLAY ERROR-STATUS:GET-MESSAGE(i) FORMAT "x(66)".
            PAUSE.
        END.
    END.
    

    如果您要读取的文件是本地文件,您可以(应该?)首先执行SEARCH(path+file) - 那会返回吗?如果文件不存在。

    IF SEARCH("/mydir/myfile.xml") = ? THEN DO:
      MESSAGE "The file seems to be lost" VIEW-AS ALERT-BOX ERROR.
      RETURN.
    END.
    ELSE DO:
      /* Read XML etc */
    END.
    

    【讨论】:

    • 感谢您的回答。有用。我忘记了旧的 4GL 处理。通常进度也应该捕获警告...否则没有意义...
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多