Lotus Notes "MAILDOC type mismatch" error while debugging

109 views Asked by At

I have an application in Lotus Notes where i am getting a constant error on debugging but its not stopping over there because the error is not related to any specific action. Whenever am opening the application database and clicking on Debug Lotusscript and then on clicking on any of the contents of a particular view am getting an error regarding MAILDOC Type mismatch! I have gone through that particular view but cannot exactly locate where the type mismatch is happening. I have checked with the type of MAILDOC and it is declared as NotesDocument. Can anyone help me out with it?

2

There are 2 answers

0
Andre Guirard On

To debug code associated with a view, you must enable the debugger before opening the view. I have to wonder, if you can't debug to find the line, how you know the error pertains to MAILDOC. It sounds like you must already have code in the application to trap the error and display additional information, but the function that traps the error doesn't display enough information to locate the problem -- e.g. it doesn't display the name of the function or the line number.

Also note, if you're relying on the LotusScript debugger to automatically stop on the error line, this doesn't happen if your code traps the error and displays a message. You would need to step through the code to find the error line.

I strongly suggest that you put error trapping code into all your LotusScript modules. This involves inserting certain lines at the start and end of each module, as follows:

' FUNCTION IN A CLASS
    On Error Goto oops
    ' ...
    Exit Function
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' SUB IN A CLASS
    On Error Goto oops
    ' ...
    Exit Sub
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' CLASS PROPERTY
    On Error Goto oops
    ' ...
    Exit Property
oops:
    Error Err, Error & { //} & TypeName(Me) & {.} & GetThreadInfo(1) & {:} & Erl & (Erl-Getthreadinfo(0))

' SIMPLE SUB
    On Error Goto oops
    ' ...
    Exit Sub
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl

' SIMPLE FUNCTION
    On Error Goto oops
    ' ...
    Exit Function
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl

If you're not using object-oriented LotusScript, you just need the last two for simple functions and subs. The "..." is where you would put the existing code of the function. So for instance, if your function is:

Function Invert(x) As Long
   Invert = -x
End Function

then instead you would write:

 Function Invert(x) As Long
     On Error Goto oops
     Invert = -x
     Exit Function
oops:
    Error Err, Error & { //}& GetThreadInfo(1) & {:} & Erl
 End Function

If you do this consistently, then anytime you get an error, the message will include the full error stack with function names and line numbers, which should make it simple to find out where the problem is.

0
Mario S On

Sometimes, when I have an error that is very difficult to find, what I do is generate a "Design Sinopsys" from all design elements. Then, looking for the word "MAILDOC" (and the line that is generating the error) is very easy.