Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This sample program relies on the LANSA Open default handlers, but if required, error information can be retrieved using LceGetStatus and LceGetMessages. A simple function to display errors will look like this: 
Sub DispLceError(iSessionID As Integer, sSource As String)
    ' this function displays LANSA Open errors
    ' Note that it only does anything if LceDisplayErrors is off
    
    Dim i As Integer
    Dim sErrDesc As String, iErrNo As Long
    Dim sMsg As String, nMsgs As Integer
    
    Dim msgBuff As String ' message buffer to contain final message
    
    msgBuff = ""
    ' Get error status
    sErrDesc = String((MESSAGE_LENGTH + 1), Chr$(0))

     Sub DispLceError(iSessionID As Integer, sSource As String)
    ' this function displays LANSA Open errors
    ' Note that it only does anything if LceDisplayErrors is off
    
    Dim i As Integer
    Dim sErrDesc As String, iErrNo As Long
    Dim sMsg As String, nMsgs As Integer
    
    Dim msgBuff As String ' message buffer to contain final message
    
    msgBuff = ""
    ' Get error status
    sErrDesc = String((MESSAGE_LENGTH + 1), Chr$(0))
    '-----

...

 Important force VB to reserve space for DLL reply
    Call LceGetStatus(iErrNo,

...

 sErrDesc,

...

 MESSAGE_LENGTH)
    '--------------------------------------------------

...

         If iErrNo > 0 Then
        ' prepare header message with error description
        msgBuff = "Error : " & Str "1n" & sSource
        msgBuff = msgBuff & Chr(13) & sErrDesc & Chr(13) & Chr(13)
        ' read remaining messages
        sMsg = String(MESSAGE_LENGTH * 3, Chr(0))
        iRet = LceGetMessageCount(iSessionID, nMsgs)
        '------------------------------------------

...

             For i = 1 To nMsgs '
            sMsg = String(MESSAGE_LENGTH * 3, Chr(0))

...

                 iRet = LceGetMessage(iSessionID,

...

 i,

...

 sMsg,

...

 MESSAGE_LENGTH)
            '--------------------------------------------------------

...

                 sMsg = sTrim(sMsg)

...

 ' sTrim detects null terminated strings
            msgBuff = msgBuff + sMsg ' add message to buffer
        Next
        msgbox msgBuff
    End If
End Sub