Solved

Lotus Notes Programming

Posted on 2007-11-28
11
212 Views
Last Modified: 2013-12-18
I have a form where i have a field as number.
I want to fill this field automatically every time i create a new form. It should be filled in an incremental order. noofforms+1

thanks
0
Comment
Question by:damixa
11 Comments
 
LVL 19

Expert Comment

by:madheeswar
ID: 20364125
Please use below code:

Sub Initialize

Dim s As New notessession

Dim doc1 As notesdocument

Set doc1 = s.documentContext

If(doc1.ISNEWNOTE) Then

Dim view1 As notesview

Dim db1 As notesdatabase

Set db1 = s.currentDatabase

Set view1 = db1.getView("SequenceNo") 'View Name and it should be in Descending order

Dim doc2 As notesdocument

Set doc2 = view1.getFirstDocument

Dim incrementNumber As Integer

incrementNumber = Cint(doc2.SequenceNo(0)) + 1

doc1.Contactlog = "CN"+Cstr(incrementNumber)

'doc1.LoggedBy=""

doc2.SequenceNo = Cstr(incrementNumber)

Call doc2.save(False, True) 

End If
 

End Sub

Open in new window

0
 
LVL 19

Expert Comment

by:madheeswar
ID: 20364131
or make use of this.....
In the QuerySave event of the form, get the highest numbered existing document and set the number on the document being saved:
 

dim sess as new NotesSession

dim db as NotesDocument

dim ws as new NotesUIWorkspace

dim uidoc as NotesUIDocument

dim doc as NotesDocument

dim viewLU as NotesView

dim docLU as NotesDocument

dim docno as Long
 

set db = sess.CurrentDatabase

set uidoc = ws.CurrentDocument

set doc = uidoc.Document

set viewLU = db.GetView("ByNumberView")

set docLU = viewLU.GetFirstDocument

if docLU is Nothing Then

'*** No documents in view; this one is #1

call doc.ReplaceItemValue("DocNumber", 1)

else

'*** Get the current highest number

docno = docLU.GetItemValue("DocNumber")(0)

docno = docno + 1

call doc.ReplaceItemValue("DocNumber", docno)

end if

call uidoc.Refresh

Open in new window

0
 

Author Comment

by:damixa
ID: 20364408
I get in both cases
object variable not set...
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 20364961
You created the view that's used by the code?
0
 
LVL 19

Expert Comment

by:madheeswar
ID: 20364965
Also, try debugging the code and check in which line it is giving error.
Make sure the view exists.
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 

Author Comment

by:damixa
ID: 20365335
The view is created as above, for the first example i get the variable not set immediately in the variable declaration, in the second example the code can not be compiled because there is a code error. in the variable declaration. db you have declared as a document and you set a database in the declaration, ??
can it be there the error. thanks
0
 
LVL 63

Expert Comment

by:SysExpert
ID: 20370969
Incremental numbering is very difficult to do properly,
especially under the following conditions.
1) Multiple users working simultaneously
2) multiple servers

Preferable options are to use a random ID via Unique or via the Doc ID.


I hope this helps !
0
 
LVL 19

Expert Comment

by:madheeswar
ID: 20371687
Try below code....
Sub Initialize

Dim s As New notessession

dim ws as new notesuiworkspace

dim uidoc as notesuidocument

set uidoc=ws.currentdocument

Dim doc1 As notesdocument

Set doc1 = uidoc.document 's.documentContext

'If(doc1.ISNEWNOTE) Then

if uidoc.isnewdoc then

Dim view1 As notesview

Dim db1 As notesdatabase

Set db1 = s.currentDatabase

Set view1 = db1.getView("SequenceNo") 'View Name and it should be in Descending order

Dim doc2 As notesdocument

Set doc2 = view1.getFirstDocument

Dim incrementNumber As Integer

if not doc2 is nothing then

incrementNumber = Cint(doc2.SequenceNo(0)) + 1 'SequenceNo is the field name on the form which stores the Sequence no.,.

'doc1.Contactlog = Cstr(incrementNumber)

'doc1.LoggedBy=""

doc1.SequenceNo = Cstr(incrementNumber)

Call doc1.save(False, True) 

else

doc1.SequenceNo = "1" 'Cstr(incrementNumber)

Call doc1.save(False, True) 
 

end if

End If

 

End Sub

Open in new window

0
 

Author Comment

by:damixa
ID: 20372209
OK from your code i understand that you assume the field is text, well when is text the field than there comes the error variable not set, if i change the field to number than the error doesnt show up.i think im doing something wrong here.
i have the view called sequenceno (in descending order), i have a form with a field as text or number thats all i have, and i have your code in the initialize event in the form...
what i wanted is when i create the form the incremented number you have coded comes to the sequence field.
0
 
LVL 19

Accepted Solution

by:
madheeswar earned 500 total points
ID: 20372249
Sorry for that. I did not saw the INitialize event.
Place the below code in the QuerySAve event. We need to generate the sequence number when the document is saved. In this way, we have the correct sequence numbers.
As for SequenceNo  field, it can be a text.
Best of Luck
Dim s As New notessession

dim ws as new notesuiworkspace

dim uidoc as notesuidocument

set uidoc=ws.currentdocument

Dim doc1 As notesdocument

Set doc1 = uidoc.document 's.documentContext

'If(doc1.ISNEWNOTE) Then

if uidoc.isnewdoc then

Dim view1 As notesview

Dim db1 As notesdatabase

Set db1 = s.currentDatabase

Set view1 = db1.getView("SequenceNo") 'View Name and it should be in Descending order

Dim doc2 As notesdocument

Set doc2 = view1.getFirstDocument

Dim incrementNumber As Integer

if not doc2 is nothing then

incrementNumber = Cint(doc2.SequenceNo(0)) + 1 'SequenceNo is the field name on the form which stores the Sequence no.,.

'doc1.Contactlog = Cstr(incrementNumber)

'doc1.LoggedBy=""

doc1.SequenceNo = Cstr(incrementNumber)

Call doc1.save(False, True) 

else

doc1.SequenceNo = "1" 'Cstr(incrementNumber)

Call doc1.save(False, True) 

 

end if

End If

Open in new window

0
 

Author Comment

by:damixa
ID: 20372425
thanks great help works perfect,
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

For users on the Lotus Notes 8 Standard client, this article provides information on checking the Java Heap size and adjusting it to half of your system RAM in attempt to get the Lotus Notes 8.x Standard client to run faster.  I've had to exercise t…
For beginners of Lotus Notes user this is important to know about the types of files and their location supported by IBM Notes. Mostly users are unaware about how many file types are created and what their usages are. This Article is fully dedicated…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now