Styria-it_hr
asked on
connection document
I have create a button in Lotus script for automatic edit/creation of lotus notes connection document. Problem, when users press the button script regularly create/edit connection document but users don't have ability to connect to server until they go to connection, open edited/created connection document and answer yes for message they get (see pic in attachment).
Any ideas how to avoid this problem?
connection.jpg
Any ideas how to avoid this problem?
connection.jpg
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
mbonaci;
I tried to put document.ComputeWithForm but I'm always getting variant does not contain an object error.
I tried to put document.ComputeWithForm but I'm always getting variant does not contain an object error.
Styria-it_hr: Please post your code.
"document" has to be actual NotesDocument (connection document), maybe you named the variable doc, or something similar.
ASKER
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As New NotesDatabase( "" , "Names.nsf" )
Dim doc As NotesDocument
Dim success As Variant
Dim view As NotesView
Set view = db.GetView( "Connections" )
Set doc = view.GetDocumentByKey("ser verXXXY")
If doc Is Nothing Then
Set doc = New notesdocument(db)
doc.Form="Location"
End If
doc.Form = "local"
doc.Destination = "ServerYYYY"
doc.PortName = "TCPIP"
doc.Type = "Connection"
doc.ConnectionLocation="*"
doc.ConnectionType="0"
doc.DestinationDomain="*"
doc.DocumentAccess="[NetMo difier]"
doc.Enabled="0"
doc.LanPortName="TCPIP"
doc.OptionalNetworkAddress ="ServerXX YY"
doc.Source="*"
success = doc.ComputeWithForm( False, False )
If success Then
Call doc.Save( True, True )
Call workspace.AddDatabase( "" , "Names.nsf" )
Msgbox "message1", 64, "message2"
End If
End Sub
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As New NotesDatabase( "" , "Names.nsf" )
Dim doc As NotesDocument
Dim success As Variant
Dim view As NotesView
Set view = db.GetView( "Connections" )
Set doc = view.GetDocumentByKey("ser
If doc Is Nothing Then
Set doc = New notesdocument(db)
doc.Form="Location"
End If
doc.Form = "local"
doc.Destination = "ServerYYYY"
doc.PortName = "TCPIP"
doc.Type = "Connection"
doc.ConnectionLocation="*"
doc.ConnectionType="0"
doc.DestinationDomain="*"
doc.DocumentAccess="[NetMo
doc.Enabled="0"
doc.LanPortName="TCPIP"
doc.OptionalNetworkAddress
doc.Source="*"
success = doc.ComputeWithForm( False, False )
If success Then
Call doc.Save( True, True )
Call workspace.AddDatabase( "" , "Names.nsf" )
Msgbox "message1", 64, "message2"
End If
End Sub
What this line means:
doc.Form = "local"
There's no such form in private address books, so ComputeWithForm is using default db form (Contact/Person) to evaluate the fields.
Should be:
doc.Form="Location"
You can still save a document if the ComputeWithForm returns False or raises an error.
I mean, it's better for an user to open and save the doc, then not having the connection doc at all. So don't condition the save method with success.
doc.Form = "local"
There's no such form in private address books, so ComputeWithForm is using default db form (Contact/Person) to evaluate the fields.
Should be:
doc.Form="Location"
You can still save a document if the ComputeWithForm returns False or raises an error.
I mean, it's better for an user to open and save the doc, then not having the connection doc at all. So don't condition the save method with success.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Bill,
I'm not sure whether @GetPortsList returns list of enabled ports from Notes.ini or from current location doc, since Designer help says:
"@GetPortsList is used by the Public and Personal Address books to determine the list of available ports for each Location record."
If it gets the info from location doc it wouldn't be of any use here, right?
Although it wouldn't be the first time the help is not correct.
I'm not sure whether @GetPortsList returns list of enabled ports from Notes.ini or from current location doc, since Designer help says:
"@GetPortsList is used by the Public and Personal Address books to determine the list of available ports for each Location record."
If it gets the info from location doc it wouldn't be of any use here, right?
Although it wouldn't be the first time the help is not correct.
Actually, it reads directly from notes.ini.
@GetPortsList( [ Enabled] ) reads the 'Ports' variable and...
@GetPortsList( [ Disabled] ) reads the 'DisabledPorts' variable.
The key phrase in the help document is 'used BY the Public and Personal Address books'. The address books use this function in their design to know the picklist choices for the 'EnabledPorts' field. Open the 'Location' form in the designer, and you'll see what I mean.
@GetPortsList( [ Enabled] ) reads the 'Ports' variable and...
@GetPortsList( [ Disabled] ) reads the 'DisabledPorts' variable.
The key phrase in the help document is 'used BY the Public and Personal Address books'. The address books use this function in their design to know the picklist choices for the 'EnabledPorts' field. Open the 'Location' form in the designer, and you'll see what I mean.
Well, if it were me, I'd write it like this. My goal is to never write the same code twice, so whenever I do this much work on a function, I make sure and parameterize it so I can paste it into a library. This function takes a server name and an address then returns true if the connection was created, or false if it already existed.
The big change here is where we read the enabled ports directly from notes.ini. Try it out. I can't guarantee that your users will connect right away without knowing your environment, but at least the Connection Doc will be correct, and they won't get that annoying message.
The big change here is where we read the enabled ports directly from notes.ini. Try it out. I can't guarantee that your users will connect right away without knowing your environment, but at least the Connection Doc will be correct, and they won't get that annoying message.
Public Function createConnection(server As String, address As String) As Boolean
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As New NotesDatabase( "" , "Names.nsf" )
Dim doc As NotesDocument
Dim success As Variant
Dim view As NotesView
' check for existing connection
Set view = db.GetView( "Connections" )
Set doc = view.GetDocumentByKey(server)
If (Not doc Is Nothing) Then Exit Function
' create connection
Dim ports As Variant
ports = Split(session.Getenvironmentstring("Ports", True), ",")
Set doc = New NotesDocument(db)
doc.Form = "local"
doc.Destination = server
doc.PortName = ports
doc.Type = "Connection"
doc.ConnectionLocation="*"
doc.ConnectionType="0"
doc.DestinationDomain="*"
doc.DocumentAccess="[NetModifier]"
doc.Enabled="0"
doc.LanPortName = ports
doc.OptionalNetworkAddress = address
doc.Source="*"
' save new connection
Call doc.ComputeWithForm( True, False )
Call doc.Save( True, False )
Call workspace.AddDatabase( "" , "Names.nsf" ) ' not sure why this line needs to be here
createConnection = True
End Function
That message only changes port field and saves the document.
Try adding document.ComputeWithForm at the bottom of your code, just before saving the document.