c_ranjit
asked on
Agents
I am new to LotusScript. Someone please help
I have an employee database application (a form) where the employee details data is entered manually by the users. The form has fields like dept, designation, location, region etc which is picked up from the respective masters using DBColumn. The names of the dept, designation etc are changed from time to time. If a dept is called 'tech' today, it might be called 'tech services' tomorrow. Changes can only be made to the dept name and not to the dept code. On change of dept name, if the user presses the update button, i would like to call an agent which would fetch all the existing records with say 'tech' and replace them with say 'tech services'. I have written the following agent. But it is bringing the documents in front of the screen while the agent is running. How can I make it run in the backend without bringing the documents in front. Also the agent needs to be web compatible. The following is the code I have used :
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument,curdoc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim vc As NotesViewEntryCollection
Set db=session.currentDatabase
Set view=db.getview("EmpV")
Set vc=view.allentries
Set doc=view.GetFirstDocument
Set curdoc = session.DocumentContext
While Not (doc Is Nothing)
if curdoc.DepartmentCode(0)=d oc.HidDept Code(0)
Then
Set uidoc=workspace.editdocume nt(True,do c)
Call uidoc.FieldSetText("EDepar tment",cur doc.Depart mentDescri ption(0))
Call uidoc.save(True,True)
Call uidoc.close
End If
Set doc=view.GetNextDocument(d oc)
Wend
End Sub
Note : Hid DeptCode is the hidden field name in the employee form which stores the numeric value of the dept assigned.
I have an employee database application (a form) where the employee details data is entered manually by the users. The form has fields like dept, designation, location, region etc which is picked up from the respective masters using DBColumn. The names of the dept, designation etc are changed from time to time. If a dept is called 'tech' today, it might be called 'tech services' tomorrow. Changes can only be made to the dept name and not to the dept code. On change of dept name, if the user presses the update button, i would like to call an agent which would fetch all the existing records with say 'tech' and replace them with say 'tech services'. I have written the following agent. But it is bringing the documents in front of the screen while the agent is running. How can I make it run in the backend without bringing the documents in front. Also the agent needs to be web compatible. The following is the code I have used :
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument,curdoc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim vc As NotesViewEntryCollection
Set db=session.currentDatabase
Set view=db.getview("EmpV")
Set vc=view.allentries
Set doc=view.GetFirstDocument
Set curdoc = session.DocumentContext
While Not (doc Is Nothing)
if curdoc.DepartmentCode(0)=d
Then
Set uidoc=workspace.editdocume
Call uidoc.FieldSetText("EDepar
Call uidoc.save(True,True)
Call uidoc.close
End If
Set doc=view.GetNextDocument(d
Wend
End Sub
Note : Hid DeptCode is the hidden field name in the employee form which stores the numeric value of the dept assigned.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
haa haa haa !!!
Same thing but in a neat format...You copied my logic though. I appreciate it...
;-)
Same thing but in a neat format...You copied my logic though. I appreciate it...
;-)
Can it be copied? :))
Why cant ? You did it already right ?
;-)
PS: Tell you what...100k will be ME ! I got about 1500 yesterday at this rate 7 more days i will reach 100k easily what do you say ?
;-)
PS: Tell you what...100k will be ME ! I got about 1500 yesterday at this rate 7 more days i will reach 100k easily what do you say ?
I think this is going to work well the only problem being that every time a document will be opened when the condition matches.
Just remove the line view.Allentries.
In any case u r browsing thru every doc.
Just remove the line view.Allentries.
In any case u r browsing thru every doc.
Arun, this is only working if I miss them all ;-)
Hello sampa :-)
Hello sampa :-)
haa haa haa !!! And you got a B !!!
OK c_ranjit, you are new to this community so let you be explained this: grading are NOT school gradings!
Click on the link below for more explanations :-)
Thank you for the points, but some kind feedback would also do well (if it does not cost too much of your valuable time :-)
Click on the link below for more explanations :-)
Thank you for the points, but some kind feedback would also do well (if it does not cost too much of your valuable time :-)
Instead convert the uidoc to a otherdoc as follows...
Set otherdoc = uidoc.Document
now set the uidocs field as follows.....
otherdoc.FieldName = "VALUE"
now save the otherdoc as follows.....
call otherdoc.Save(True,False)
Thats it!
Good Luck!
Arun.
{S: Just avoid all the ui contexts...that is all needed.)