Subject: RE: Getting Customized User Input
I was able to get this to work using Dialogbox and a new form that displays the failed question one at a time, and accepts user input, then transfers it back to the original checklist and e-mails the response. Seems to work well so far:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim review_stat As String
Dim pf As String
Dim q_num As String
Dim q_status As String
Dim q_item As String
Dim q_note As String
Dim q_action As String
Dim rev_note_1 As String
Dim rev_note_2 As String
Dim rca As String
Dim rcb As String
Dim note_ar As String
Dim ia_ar As String
Dim aid As String
Dim failed_data(1 To 50, 0 To 2) As Variant
Dim i As Long
Dim x As Long
Dim count As Long
Dim uName As NotesName
Set uName = session.CreateName(session.UserName)
abb=uName.Abbreviated
cn=uName.Common
count = 0
review_stat = "Approved"
aid = uidoc.FieldGetText("audit_id")
'Call uidoc.FieldSetText("app1_notes","")
For i = 1 To 50
num = i
pf = uidoc.FieldGetText("pf_" & num)
If pf = "FAIL" Or pf = "PARTIAL" Then
count=count+1
failed_data(count,0) = uidoc.FieldGetText("d_" & num)
failed_data(count,1) = uidoc.FieldGetText("c_" & num)
failed_data(count,2) = uidoc.FieldGetText("ia_" & num)
q_num = Cstr(i)
q_status = pf
q_item = failed_data(count,0)
q_note = failed_data(count,1)
q_action = failed_data(count,2)
Call uidoc.FieldSetText("note_ar","")
Call uidoc.FieldSetText("ia_ar","")
Call uidoc.FieldSetText("q_num",q_num)
Call uidoc.FieldSetText("q_status",q_status)
Call uidoc.FieldSetText("q_item",q_item)
Call uidoc.FieldSetText("q_note",q_note)
Call uidoc.FieldSetText("q_action",q_action)
If Not workspace.DialogBox( "Failed Question Dialog", False, False, False, False, False, False, "Review" ) Then
Dim askme As Integer
askme = workspace.Prompt(PROMPT_YESNO, "ACTION CANCELLED", "Would you like to clear previously entered comments?")
If askme = 1 Then
Call uidoc.FieldSetText("app1_notes","")
End If
Call uidoc.Refresh
Goto Leave_script
End If
Call uidoc.Refresh
rev_note_1 = uidoc.FieldGetText("rca")
rev_note_2 = uidoc.FieldGetText("rcb")
If uidoc.FieldGetText("note_ar") = "Reject" Then
review_stat = "Rejected"
Call uidoc.FieldAppendText("app1_notes",", Question " & Cstr(i) & " comment rejected - " & rev_note_1)
Call uidoc.FieldSetText("note_ar","")
Call uidoc.FieldSetText("rca","")
Call uidoc.Refresh
End If
If uidoc.FieldGetText("ia_ar") = "Reject" Then
review_stat = "Rejected"
Call uidoc.FieldAppendText("app1_notes",", Question " & Cstr(i) & " action rejected - " & rev_note_2)
Call uidoc.FieldSetText("ia_ar","")
Call uidoc.FieldSetText("rcb","")
Call uidoc.Refresh
End If
End If
Next i
If review_stat = "Approved" Then
Call uidoc.FieldSetText("name_1",abb)
Call uidoc.FieldSetText("date_1",Cstr(Now))
Call uidoc.FieldSetText("app1_notes","")
Call uidoc.Refresh
Elseif review_stat = "Rejected" Then
Call uidoc.FieldAppendText("app1_notes",", Audit Notes/Actions Rejected by " & cn & " on " & Cstr(Now))
Call uidoc.Refresh
End If
notes$ = uidoc.FieldGetText("app1_notes")
Dim db As NotesDatabase
Dim newdoc As NotesDocument
Set thisdoc = uidoc.Document
Dim rtitem As NotesRichTextItem
Set db=session.currentdatabase
Set newdoc=New NotesDocument(db)
newdoc.form = "Memo"
newdoc.subject="Internal Audit " & aid & " " & review_stat
newdoc.sendto=thisdoc.la_name(0)
newdoc.copyto=""
Set rtitem = New NotesRichTextItem( newdoc, "body" )
Call rtitem.AppendText( notes$)
Call rtitem.AddNewLine( 2 )
Call rtitem.AppendText( "Link to checklist => ")
Call rtitem.AppendDocLink( thisdoc, {} ) 'adds link to previous text above.
Call newdoc.Send( False)
Messagebox "The auditor has been notified of your review."
Call uidoc.Save
Call uidoc.Close
Leave_script:
End Sub