EXPERT RESPONSE
I've had the same issue come up from time to time.
I wrote a utility several years back that uses
stored forms to send "Rollout messages" to
clients of newly developed applications.
The stored form would present a set of radio buttons,
from which the clients could click the nearest Domino server.
Creating connection documents is pretty simple
if you understand the fields that are needed,
since Lotus Notes uses the same methods for
connection documents as it does for any other kind of documents.
Here is a routine that will create new or updated
connection documents for any Domino server.
Before calling it, you will need to open the user's
Personal Address Book and get a handle to their
connection document view. Normally, this will be names.nsf
in their local data directory, and the view has an alias
of "Connections," but the following code will return
a handle to their local connections view even in a non-standard situation:
Dim session As New notessession
Dim AddressBook As NotesDatabase
Dim ConnectionView As NotesView
Forall b In session.AddressBooks
' get users private address book
If b.isPrivateaddressbook Then
Set AddressBook =b
Call AddressBook.open("","")
End If
End Forall
Set ConnectionView = AddressBook.GetView("Connections") '
This is the advanced connections views sorted by server name.
Once you have a handle on the connections view
in the user's private NAB, creating a new connection
record is as easy as creating any other document in
Lotus Notes. The fields involved can be gleaned by
examining existing documents already in the connections view.
Function CreateConnection(AddessBook As
notesdatabase,ConnectionView As notesview,
ServerHierachicalName As String,ServerIPAddress
As String,Comment As String) As String
'Attempts to create a connection record in the
users personal N&A. If an error is encountered, will report
and will not save doc.
Dim ServerNotesName As New notesname
(ServerHierachicalName)
Dim doc As NotesDocument
Dim ldoc As NotesDocument
' First try to find an existing connection doc with this server name
Set ldoc=ConnectionView.getdocumentbykey
(ServerNotesName.abbreviated)
' Next create a new connection for this
document with the specified parameters
' Add various fields inferred by examining
an existing connection document...
Set doc = New NotesDocument(AddessBook)
' Just in case the connections form does any
calculations I don't know about.
With doc
.Form = "local"
doc.Type = "Connection"
.ConnectionType = "0"
.PortName= "TCPIP"
.Destination = ServerHierachicalName
.ConnectionLocation = "*"
.Source = "*"
.ConnectionRecordFirst = "1"
.OptionalNetworkAddress = ServerIPAddress
End With
Dim rtitem As New notesrichtextitem(doc,"comments")
Call rtitem.appendtext(comment)
If doc.ComputeWithForm(True,False)
Then ' Validate and save the new connection...
If doc.Save(True,False) Then
' If everything went well, delete the old connection (if any)...
If Not ldoc Is Nothing Then
' User should have delete access to his/her own personal NAB!
Call ldoc.remove(True)
CreateConnection= "Replaced "+ServerNotesName.abbreviated
Else
CreateConnection ="Added "+ServerNotesName.abbreviated
End If
Else
Error 4000, "Error creating "+ServerNotesName.abbreviated
End If
Else
Error 4000, "Error creating "+ServerNotesName.abbreviated
End If
End Function
Do you have comments on this Ask the Expert Q&A? Let us know.
|