Message イベントは、dbmlsync が情報のログを取るときにトリガされます。
Public Event Message(_ ByVal msgClass As DbmlsyncCOM.MessageClass, _ ByVal msgID As Integer, ByVal msg As String_ ) Member of DbmlsyncCOM.Dbmlsync
msgClass メッセージの重大度を示します。次のいずれかの値を取ります。
MsgInfo 同期の進行状況情報が含まれるメッセージです。
MsgDetailedInfo MsgInfo と似ていますが、さらに詳細が含まれています。
MsgWarning 問題が発生する可能性があることを示すメッセージですが、正常な同期を妨げない問題です。
MsgError 正常な同期を妨げない問題を示すメッセージです。
msgID メッセージのユニークな識別子です。msgID が 0 の場合、メッセージにはユニークな識別子はありません。
msg メッセージのテキストです。
このイベントを使用して、dbmlsync がログを取った情報を受け取ります。特定のメッセージが生成されたときに特別な処理を実行する場合は、MsgID でメッセージを確認します。このようにすると、メッセージのテキストが変更されても、コードはそのまま機能します。
次に示す Visual Basic .NET の例は、dbmlsync がログを取ったメッセージをリストボックス・コントロールに追加します。
Private Sub dbmlsync1_Message( ByVal msgClass As DbmlsyncCOM.MessageClass, ByVal msgId As Integer, ByVal msg As String ) Handles dbmlsync1.Message Select Case msgClass Case DbmlsyncCOM.MessageClass.MsgError lstMessages.Items.Add("Error: " + msg) Case DbmlsyncCOM.MessageClass.MsgWarning lstMessages.Items.Add("Warning: " + msg) Case DbmlsyncCOM.MessageClass.MsgInfo lstMessages.Items.Add("Info: " + msg) Case DbmlsyncCOM.MessageClass.MsgDetailedInfo lstMessages.Items.Add("DetInfo: " + msg) End Select End Sub |
次に示す Visual Basic .NET の例は、エラーを処理するように Message イベントを設定します。エラー・メッセージは、lstMessages という ListBox コントロールに追加されます。
Private Sub dbmlsync1_Message(ByVal msgClass As DbmlsyncCOM.MessageClass, ByVal msgId As Integer, ByVal msg As String) Handles dbmlsync1.Message If msgClass = DbmlsyncCOM.MessageClass.MsgError Then lstMessages.Items.Add("Error: " + msgId.ToString() + " " + msg) End If End Sub |
可能性のあるエラーの ID 値を表示するには、dbmlsync 統合コンポーネントをテスト実行します。たとえば、dbmlsync が「Mobile Link サーバに接続できません。」というエラーを返すと、Message イベントは次のエントリを lstMessages に挿入します。
Error: 14173 Unable to connect to MobiLink server. |
これで、「Mobile Link サーバに接続できません。」というエラーとエラー ID 14173 を関連付けることができます。次の例では、エラー 14173 が発生したときに必ず同期をリトライするように dbmlsync 統合コンポーネントを設定します。Message イベントは、エラー 14173 が発生すると、restartSynchronization という変数を設定し、numberOfRestarts という変数をリセットします。EndSynchronization イベントは、最大 5 回、同期をリトライします。
' variables for restarting synchronization Dim numberOfRestarts As Integer = 0 Dim restartSynchronization As Integer = 0 Private Sub dbmlsync1_Message ( ByVal msgClass As DbmlsyncCOM.MessageClass, ByVal msgId As Integer, ByVal msg As String ) Handles dbmlsync1.Message If msgClass = DbmlsyncCOM.MessageClass.MsgError Then lstMessages.Items.Add("Error: " + msgId.ToString() + " " + msg) If msgId = 14173 Then restartSynchronization = 1 numberOfRestarts = 0 End If End If End Sub Private Sub dbmlsync1_EndSynchronization(ByVal ExitCode As Integer, _ ByRef restart As Boolean _ ) Handles dbmlsync1.EndSynchronization If restartSynchronization = 1 Then If numberOfRestarts < 5 Then restart = True numberOfRestarts = numberOfRestarts + 1 End If End If End Sub |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |