0

当我使用 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.
4

1 回答 1

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.
于 2013-06-13T15:58:23.440 回答