ESB_INIT_T構造体のClientErrorがEsbInit()を実行した際にESB_TRUEに設定されている場合、VB API関数の実行中に積み上げられたメッセージ・スタックから一番上のメッセージを取得します。
構文
EsbGetMessage ( hInst, ErrLevel, ErrNum, ErrMessage, szErrMessage ) ByVal hInst As Long ErrLevel As Integer ErrNum As Long ByVal ErrMessage As String ByVal szErrMessage As Integer
パラメータ | 説明 |
---|---|
hInst |
VB APIインスタンス・ハンドル。 |
ErrLevel |
メッセージ・レベルを受け取る変数へのポインタ。 |
ErrNum |
メッセージ・データベース内のメッセージ番号を受け取る変数へのポインタ。 |
ErrMessage |
メッセージ文字列を受け取るバッファ。 |
szErrMessage |
メッセージ文字列を受け取るバッファのサイズ。 |
備考
VB API関数を呼び出すたびにメッセージ・スタックが初期化されます。前の呼出しのすべてのメッセージは失われます。
通知、警告およびエラー・メッセージを含むすべてのメッセージが、メッセージ・スタックに入れられます。
1つのVB API関数呼出しで生成されたメッセージの数が、ESB_INIT_T (またはデフォルト)によって生成されるErrorStackの設定を超える場合、古いメッセージは新規メッセージによって上書きされます。
スタック内にメッセージがない場合、Messageは空の文字列にリセットされ、pNumberとpLevelはゼロにリセットされます。
メッセージ文字列の長さがバッファのサイズより大きい場合、メッセージは切り捨てられます。
戻り値
正常終了の場合は、メッセージ・レベルへのポインタ、メッセージ番号へのポインタおよびメッセージ文字列が戻されます。内部メッセージ・スタック・ポインタも減分されます。
アクセス
この関数を使用するのに、特別な権限は必要ありません。
例
Declare Function EsbGetMessage Lib "ESBAPIN" (ByVal hInst As Long, ErrLevel As Integer, ErrNum As Long, ByVal Message As String, ByVal szMessage As Integer) As Long Sub ESB_GetMessage () Dim Items As Integer Dim AppName As String Dim DbName As String Dim FilterName As String Const szMessage = 256 Dim Message As String * szMessage Dim Number As Long Dim Level As Integer Dim sts As Long AppName = "Demo" DbName = "Basic" FilterName = "Filter" '**************** ' Get Filter List '**************** sts = EsbGetFilterList (hCtx, AppName, DbName, FilterName, Items) '******************************* ' Process all messages if error ' occurred till the bottom of the ' message stack enItemsered '******************************* If sts > 0 Then sts = EsbGetMessage (hInst, Level, Number, Message, szMessage) Do While Mid$(Message, 1, 1) <> Chr$(0) Print Level Print Number Print Message sts = EsbGetMessage (hInst, Level, Number, Message, szMessage) Loop End If End Sub
関連トピック