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
関連トピック