Setting a field value from radio button/field

I have form for each associate.  While they are employeed, they are Active.  Once they terminate there is a radial button that the supervisor changes the status to Terminated and the Term_Date field is unhidden for them to put a term date in.

Some associates will term with the company and then come back.  I am stuck how to do the following,  When the supervisor changes the status back to Active I wanted it to set the value in the Term_Date field to NULL and also change the main_status field back to Achive from Archive.

I have tried the following on the On Exit Event, but it is not working.

Sub Exiting(Source As Field)
      Set s = New NotesSession
      Set db = s.CurrentDatabase
      Set ws = New NotesUIWorkspace
      
      Set uidoc = ws.CurrentDocument
      Set doc = uidoc.Document
      
      Dim session As New NotesSession
            
      If doc.Emp_Status(0) = "Term" Then
            doc.main_Status = "Archive"
            
            If doc.Emp_Status(0) = "Active" Then
                  doc.Term_Date = ""
                  doc.main_Status = "Active"
                  
            End If
      End If
      
      Call uidoc.Refresh
      
End Sub
kali958Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

fgrushevskyCommented:
Based on what you described, the Term_Date field is a date/time field, therefore doc.Term_Date = "" would not work
instead you will need something likek this

Dim termd As NotesItem
      
....

Set termd = doc.GetFirstItem("Term_Date")

Set termd .DateTimeValue = Null
0
kali958Author Commented:
I understand that in regards to the date, but none of the code is working and there are no errors to debug.
0
fgrushevskyCommented:
you can do it simplier, I think.

You are using radio button Status. Make sure that "Refresh fields on keyword change" is selected on the second tab of field properties.

Make field Main_Status computed with a formula If (Status="active";"active";"archived") - or similar depending on your statuses.

for the Term_Date, do the following
in the queryrecalc event, add following code

If Source.FieldGetText("Status")="Active" Then
            Call Source.FieldClear("Term_Date")
End If
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

kali958Author Commented:
I had to make sure that "Run Exiting/OnChange events after value change" was enabled.

Here is what finally worked:

Dim ws As New NotesUIworkspace
      Dim uidoc As NotesUIDocument
      Set uidoc=ws.currentdocument
      Dim doc As NotesDocument
      Set doc=uidoc.document
      
      If doc.Emp_Status(0) ="Active" Then
            Call uidoc.fieldsettext("Term_Date","")
            Call uidoc.fieldsettext("main_Status","Active")
      End If
      
      If doc.Emp_Status(0) = "Term" And doc.main_Status(0) = "Active" Then
            Call uidoc.FieldSetText("main_Status","Archive")
      End If
0
fgrushevskyCommented:
Again, you don't need to use exiting event . It is not reliable as user can save and close the form without leaving the field.

However, "Refresh fields on keyword change" would always trigger Queryrecalc event when user changes value in radio-button
0
kali958Author Commented:
I do have the refresh Fields on Keywords selected. The field is also required, the Term_Date if they change the status to Term.
0
fgrushevskyCommented:
ok, if you have " refresh Fields on Keywords selected", why don't you use Form Queryrecalc event ?
0
kali958Author Commented:
Lotus help says:

Occurs just before the current document is recalculated (before all the formulas on the document execute).

Wouldnt that mean that this happens before they change the value from Active to Term?
0
fgrushevskyCommented:
No, it does not. Why would it happen before the value changes? What would trigger it?

Here how it works.
User changes the value in a keyword field (radio button).
If " refresh Fields on Keywords selected" is selected on the field,  then Querycalc event is triggered.
The trigger is the change of the value.
0
kali958Author Commented:
Well I can only go off the lotus help, that is why I asked my question out here on EE.

Right now I have it working on Exit.  I do not use lotusscript very often and this was a database I inherited.  I can try it on the QueryCalc.
0
kali958Author Commented:
Tried both, my solution onExit and this one on Queryrecalc, both are successful.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Lotus IBM

From novice to tech pro — start learning today.