Saturday, December 20, 2008

Debug Lotus Notes applications

I would like to present which approaches I use during debugging LN applications. I would be happy if anybody add new interesting approaches.

[@Formula]

- @Prompt and @StatusBar – the easiest way to debug code written on @Formula
- Field Debug_Fld := value_debug
- @MailSend – for code that runs on server (sch. agents)
- notes.ini - I don't like this approach because of size of variables

Example
strA := "ABC"; strB := "DEF";
strC := strA + strB;
@Prompt([ok]; "strC";"strC = " + strC);
@StatusBar("strC = " + strC);
Field Debug_FieldName := strC;
@MailSend("username";"";""; "debug strC"; ""; "strC = " + strC);

[Lotus Script]
- Lotus Script Debugger as tool for debugging
- Print, MsgBox, NotesLog, Stop, on erorr goto errh

Example
Dim strA As String
Dim strB As String
Dim strC As String
strA = "ABC"
strB = "DEF"
strC = strA & strB
Print "strC = " & strC
Msgbox "strC = " & strC
Stop 'enable debugger require
Dim currentLog As New NotesLog( “debug log 1" )
Call currentLog.OpenFileLog( "c:\log.txt" )

Call currentLog.LogAction( "strC = " & strC)
Call currentLog.Close

[Schedule Agents]

- remote debugger (it is easy to enable it if you read help)
- send an email, msgbox (log.nsf), noteslog

[JavaScript]
- alert(value);
- try – catch();
- Microsoft script debugger \ Mozilla firebug \ Chrom debugger

Lets catch the next simple error

Example
code on the button use call function add, the body of function below
function add(frm){
var i1 = frm.Number1.value;
var i2 = frm.Number2.value;
var fld = frm.total;
fld.value = i1 + i2;
}

when we call function we will see next error:
what it could be? it does not provide us enough information (I think so). Now enable ie debugger
click Yes
Now we see where is error, but still could not understand "why?"
Now we are definitely close to solve the problem, we see that we did not take "number" field. Why we did not take number field? yes because of small first letter. We should wrote Number but not number.

[Java]
- Java debug console (System.out.println(“text”);
- Try / catch with NotesError and NotesException classes
- Remote java debugging with Eclipse

also I would like to recomend you external LN application
openlog.nsf

Thursday, December 18, 2008

How we can copy ReplicaID to clipboard

Approach #1. Just make double click on triangle of Address bar, and you will get ReplicaID of database.

Approach #2. Open properties on document and look on "Meta" tab.

Wednesday, December 10, 2008

Difference between call of Sub/Functional

Actually I was surprised today when I saw this, please check both scenarios:
In one scenario Call addone(i) it transmit I as reference in another one addone(i) - ByVal

Sub Click(Source As Button)
Dim i As Integer
Dim j As Integer
i = 1
For j = 0 To 10
Call addone(i) | addone(i)
Next

Print "i = " & i
End Sub

Sub addone(i As Integer)
i = i + 1
End Sub

Monday, December 01, 2008

MS ListView Control in LN


In one of our project we used MS ListView Control to show the data in one table. So here what we did. If you want try this approach also, you should do next steps:
Go to designer, create new form
click on menu: Create\Object and choose MS ListView Control.
Set name to this object and then you can do what you wish with this control, some code:

Dim control As Variant
Dim lwItem As Variant
Set control = source.getObject("ListView")
Set lwItem = control.ListItems.add(1, "a1", "fio2", 0)
Set lwItem = control.ListItems.add(2, "a2", "fio3", 0)
Set lwItem = control.ListItems.add(3, "a3", "fio4", 0)
Set lwItem = control.ListItems.add(4, "a4", "fio5", 0)
Call control.refresh()

Tuesday, November 11, 2008

Full Text message: Work area overflown due to many hits

Found strange error today in log database
GTR search error for "D:\Domino\data\mydatabase.ft\ftgi": Work area overflown due to many hits. Error-Number = 299: Full text error; see log for more information
The error occurs when I did NotesDatabase.FTSearch(query, 0)
query = (([Form]="AgrAddon") & ( ([AgrDate]=08.07.2005 & [AgrAddonDate]=25.06.2008 & !([AgrAddonNum]=("-" | "/")) )))
I've found that this problem happens because of this part of query: [AgrAddonNum]=("-" | "/")
Actually for some reason (I did not figure why) symbols - , ; : \ are the reasons of error in FTSearch. So I changed query a bit to avoid such situation and it worked well after all.