0

メソッド hDataset:READ-XML() を使用してデータセットにデータを読み込み、ファイルへのパスが正しくない場合、Progress は最初に警告メッセージ (警告番号 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 に答える