Der Code wird über eine Aktion ausgelöst. Hier mal der gesamte Code:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim session As New NotesSession
Redim ErrorArray(0) As String
Dim strGotoField As String
Dim ValidationArray As Variant
Dim item As NotesItem
Dim a As Variant
Dim db As NotesDatabase
Dim memo As NotesDocument
Dim rtitem As NotesRichTextItem
Dim auftragsart As NotesItem
Dim ersteller As NotesItem
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim nam As New notesname(session.username)
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry( session.Username)
%REM
'Hier wird entschieden, ob validiert werden muss:
If doc.auftragsart(0)<> "Entsperrung" Then
ValidationArray = doc.ValidationArrayIT
If Not ValidateForm(doc, ValidationArray, ErrorArray, strGotoField) Then
'Falls die Validierung nicht erfolgreich war:
Beep
Msgbox "Folgender Fehler trat auf:" & Chr$(10) & l_Join(ErrorArray, Chr$(10)),16,"Bitte noch folgende Felder ergänzen:"
Call uidoc.GotoField(strGotoField)
Else
'Versenden der Mail:
Set memo = db.CreateDocument
memo.Form = "Memo"
memo.SendTo = doc.EinreichungPrüfungAn(0)
memo.Subject = "Neuer Auftrag zur Prüfung."
Set rtitem = New NotesRichTextItem( memo, "Body" )
Call rtitem.AppendText( " Bitte klicken Sie auf die Verknüpfung ")
Call rtitem.AddNewLine( 2 )
Call rtitem.AppendText( "Auftrag ==> " )
Call rtitem.AppendDocLink( doc, "Link zum Auftrag")
Call memo.Send( False )
End If
Else
'Bei einer Entsperrung wird einfach nur der Antragsteller informiert
Set memo = db.CreateDocument
memo.Form = "Memo"
memo.SendTo = doc.ersteller(0)
memo.Subject = "Ihr Entsperrauftrag wurde bearbeitet."
Set rtitem = New NotesRichTextItem( memo, "Body" )
Call rtitem.AppendText( " Bitte klicken Sie auf die Verknüpfung ")
Call rtitem.AddNewLine( 2 )
Call rtitem.AppendText( "Auftrag ==> " )
Call rtitem.AppendDocLink( doc, "Link zum Auftrag")
Call memo.Send( False )
End If
%END REM
uidoc.EditMode = True
'Der Auftragsstatus wird geändert:
If doc.auftragsart(0)<> "Entsperrung" Then
Call uidoc.FieldSetText("Status","erfasst")
Else
Call uidoc.FieldSetText("Status","erledigt")
End If
'Ergänzen der Dokumentation:
a = Cstr(Now) & " erfasst von " & nam.Common
Set item = doc.GetFirstItem("Dokumentation")
Call item.AppendToTextList(a)
'Es wird noch ergänzt, wer den Auftrag erledigt hat:
REM Call uidoc.FieldSetText("ErledigtVon", nam.Common)
Call uidoc.Save
Call uidoc.Close(True)
End Sub
Ich habe einige Passagen auskommentiert, damit ich sie als Fehlerquelle ausschliessen kann. Bei dem Dokument gibt es noch ein QuerySave-Ereignis, dass ich aber auch schon herausgenommen habe (Hier geht es nur um eine fortlaufende Nummer für jeden Auftrag).
Das Seltsame ist noch, dass ich eine zweite Aktion erstellt habe, die funktioniert:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim session As New NotesSession
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
uidoc.EditMode = True
'und der Auftragsstatus geändert
Call uidoc.FieldSetText( "Status","erfasst")
Call uidoc.Save
Call uidoc.Close(True)
End Sub