All about Lotus Domino Development (AaLDD)

How I got started with Lotus Notes

Posted in lotus notes by quintessens on April 14th, 2008

Some minutes before a meeting so I will shortly pick up the tread “How I got started with Lotus Notes”.

I started with Notes in the beginning of 1997 after doing a graduation project at one of Dupont’s factory-plants (basically I was collecting annual sales data for writing reports).

At the end everyone was really satisfied and I got the question if I would be interested in setting up their intranet site. Notes 4.5 was rolled out and already in use in other countries/plants.

I got training at IBM and it helped a lot that in those days I had to travel a lot by train so the yellow Lotus Notes book I knew soon by head.

After one year I saw an advertisement that a big company in electronics in the Netherlands where looking for people to train in LN and they offered the complete education (application development and system administration) so after 3 months I was able to call my self principle lotus notes professional in both areas.

Then after a couple of years some collegues asked me if I was interested in starting a consultancy company, basically because they needed a person with good web development skills in LN. I said yes and after some wonderful years internal relations went a bit down and I decided to start freelancing, enjoying my own responsibilities.

In 2005 I decided to take the next step by looking for working options abroad and in beginning 2006 I moved to Sweden where I am currently employed at a true IBM technology adapting company…

Mimicing the tabbed table function

Posted in @Formula, Show N Tell Thursday, development, lotus notes, sntt by quintessens on March 20th, 2008

tab1The problem with the Notes tabbed table is that you can not, by default, add an action when you click on a tab.

I created a tabbed table function in the way you probably would do it on the web (with hidding/showing divs) so a tab is just a table column with a text hotspot in it. When you click on the text a different table would be shown with an ‘active tab’ highlighted:

dialogbox

The reason for this solution is that the form is presented in a dialogbox and I have to set a parameter from which tab the user has selected a document-template (templates may be stored in different databases).

So how to fix this with a Notes tabbed table outlook?

First create images for all active tabs:

tab1 & tab2

Then sharpen your eyes (or use good photo-editor program) and select a part of the horizontal row/border that aligns the table to the width of the page (correctly described?):

This is an enlarged example:

zoomed

Now place your tabbed images in separate tables, give the table a background color and a cell image of the ‘zoomed’ example:

 table properties

On your ‘tabbed’ images you place hotspot rectangles that will do the hide/when-work. Here you can write now also the action that is not possible for a normal ‘tabbed table’:

hotspot formula

At the end the result will look something like this:

result tabbed mimic

Application support - Which tool do you use?

Posted in Applications, Sandbox, lotus notes by quintessens on March 11th, 2008

My (new) boss has great faith in me so he has made me responsible (yippie) for one of our key LN applications for communicating withing the organisation (an application for publishing documents on our intranet).

Since I am new & fresh & (still) eager in the organisation I am looking for an application that can support me in this task. Mainly the application should be able to store communication (emails), documentation (with or without attachments) and maybe a FAQ section.

No fancy stuff, please just an application for the Notes client.

My search on OpenNTF did not give me an answer in my quest. Therefor my question to you:

“which tool do you use for giving support on LN applications?”

Build - Improve - Extend

Posted in development, lotus Domino, lotus notes by quintessens on March 5th, 2008

the view

Dive deep into the significant changes to development that Notes and Domino 8 brings. This seminar is guaranteed to shorten your learning curve through detailed explanations, live demos, practical examples, and working code to quickly get you up and running with ND8 development.

Copenhagen, DK April 9 - 11

I just received green light to register myself for this event. See you there? Looking forward!

Levels in Notes Domino Development

Posted in lotus Domino, lotus notes by quintessens on December 7th, 2007

I am currently writing some documents including simple tests/code examples that should help our (Domino) developers in grading their levels of experience.

Searching on the web I found some documents that describe different levels on different technical areas’ (mostly used for grading web developers) like:

When it concerns Notes/Domino related levels, what different areas would you specify?

  • @Formula/@Functions
  • LotusScript
  • JAVA
  • XML/DXL
  • Agents
  • ACL/Security
  • Events (Forms and Views)
  • Web Services

I am just curious what areas of expertise within Lotus Notes/Domino (from a developer point of view) you think are worth defining and grading into levels?

Thank you!

Documentation, right! How and where?

Posted in Sandbox, Show N Tell Thursday, lotus notes, sntt by quintessens on November 8th, 2007

Documentation is something we would (like to) do if there would be time calculated for it in every project. But in a lot of development projects the customer is not interested to pay for something he/she is not going to read at all so where to ’store’ the application logic?

To my opinion it can help to use the IBM like approach in delivering brief documention in their templates, just like Rocky Oliver talked in his session ‘Creating Maintainable IBM Lotus Notes and Domino Applications - Writing Readable Code’ at Lotusphere 2007.

documentation example

How do you deliver your documentation?

A sample of above can be found here.

@If variant for aliases

Posted in @Formula, Show N Tell Thursday, lotus notes, sntt by quintessens on October 25th, 2007

For a computed text I needed to write down the value of a dialoglist field which uses aliases.

Luckily the number of options was limited, but for a list of long options I do not want to use this construction:

@If( condition1 ; action1 ; condition2 ; action2 ; … ; condition99 ; action99 ; else_action )

Therefor I came up with the following solution creating a text-list with options and then go through them using @Elements, @Right and @Left:

status:=”Draft|0″:
“Awaiting Approval|1″:
“Approved|2″:
“Archived|3″:
“Rejected|91″:
“Returned|92″;

@For(n := 1;n <= @Elements(status); n := n+1;
 rightvalue:=@Right(status[n];”|”);
 @If(rightvalue=Tx_Status;leftvalue:=@left(status[n];”|”);”")
);
leftvalue;

SuperNTF - feature request

Posted in lotus notes by quintessens on October 9th, 2007

Somewhere in the sideline of this blog i wrote: “With this blog I am trying to give my contribution to the Lotus Notes community. “.

It seems that some thoughts/ideas/solutions do help people (thanks for emailing, yes I would to spend more time on answering them). While checking some statistics I noticed a link to OpenNTF. Since I am not such a contributor there I was curious and read this:

my suggestion

Thanks!, that’s stimulating enough to keep up with regular posting here :-)

Demo ‘collapse embedded view by default’

Posted in LotusScript, lotus notes by quintessens on September 29th, 2007

Today it was here very rainy so I hate plenty of time to do those things you wtill wanted/needed/were asked to do. For example I receive frequently question to send a working example for collapsing an embedded view by default. I have explained the principles in a previous writing.

Therefor I keep this blog entry short with just remaining a reference to the location where you can download a working-example.

Export to Excel wizard

Posted in @Formula, Applications, LotusScript, Show N Tell Thursday, lotus notes, sntt by quintessens on September 27th, 2007

I was asked to take a look at an existing application, and come up with suggestions to improve performance.

In a first look I found that most of the views, especially the default to be opened view, were set to refresh the index automatically… you can imagine how much the users love to start working with this application which has readers fields on all documents (NOT!).

When I asked were all the views were needed for, I got as reply: to have it in a format we want to make graphics in Excel.

Okej, why not delete these ‘views to be exported for Excel’ and replace them with an export functionality?

export start button

So what where the needs?

  1. a set of fields for different types of forms that should be manageble by the application manager
  2. an export-mechanism to Excel which should be easy to understand for end-users and give them the opportunity to create customizable exports.

1) Export profiles

In order to create so-called Export profiles for different Notes forms I needed an additional form (ExcelFormExport) where the administrator can:

  • select the desired form for export (FieldA)
  • select the form-fields that should be available for export (FieldB)

This last field is being calculated when FieldA is being exited:

Sub Exiting(Source As Field)
 Dim workspace As New NotesUIWorkspace
 Dim uidoc As NotesUIDocument
 Set uidoc = workspace.CurrentDocument 
 fieldvalue = Lcase(uidoc.FieldGetText(”Tx_FormSelected”))
 Dim doc As NotesDocument
 Set doc = uidoc.document
 If fieldvalue <> “” Then
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Set db = session.CurrentDatabase  
  Forall form In db.Forms
   If Lcase(form.Name) = fieldvalue Then
    If Isempty(form.Fields) Then
     Messagebox form.Name & ” has no fields…”
    Else
     ’collecting the form fields
     Dim arrFieldNames() As String
     Dim iCount As Integer
     iCount = 0     
     Redim arrFieldNames(0)
     Forall field In form.Fields      
      Redim Preserve arrFieldNames(iCount)
      arrFieldNames(iCount) = field
      iCount = iCount + 1
     End Forall     
     Call doc.ReplaceItemValue(”Tx_FormFields”, BubbleSort(arrFieldNames))     
     Call uidoc.Refresh()     
    End If
    Exit Sub
   End If
  End Forall
  Messagebox “The form “”" & formNameIn & “”" does not exist”
 End If
End Sub

Bubblesort is a function which sorts the array with fieldnames:

Function BubbleSort(vtList As Variant) As Variant
 Dim tmpValue As Variant
 Dim x As Integer, y As Integer 
 If Ubound(vtList) = 1 Then
  BubbleSort = vtList
  Exit Function
 End If 
 For x = 0 To Ubound(vtList)
  For y = (x + 1) To Ubound(vtList)
   On Error Resume Next
   If vtList(x) > vtList(y) Then
    tmpValue = vtList(x)
    vtList(x) = vtList(y)
    vtList(y) = tmpValue
   End If
  Next
 Next 
 BubbleSort = vtList 
End Function

Luckily I could make use of a solution from my colleague Tomas Ekström (his so-called ‘tablewalker’) which made the selection of fields and giving them for the end-user understandable ‘labels’ in the wizard:

export profile form

The next step was creating a dialog between the available ‘Export profiles’ and the Export to Excel solution written by Ken Pespisa.

 dialog for selection source

In order to display the ‘Export profiles’ in the dialoglist I had to re-write Ken’s solution a bit. I advice you to use Ken’s standard solution in stead.

Well, the rest of this export wizard is just following Ken’s work.

 select fields for export dialog

What I tried to achieve with this solution is:

  • having an easy way for an administrator to define ‘Export profiles’ based upon information on Notes forms.
  • presenting an understandable interface for the end-user that enables to create customizable exports to Excel
  • get rid of a large set of nasty Notes views!

A demo you can download here.