Domino 9 und frühere Versionen > ND6: Entwicklung

Werte, die mit "uidoc.fieldsettext" geändert wurden, werden nicht gespeichert

(1/2) > >>

ampfi:
Hallo zusammen,

ich habe ein Problem bei folgendem Code:

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)
      
   Call uidoc.Save
   Call uidoc.Close(True)

Der geänderte Wert im Feld "Status" wird einfach nicht abgespeichert. Ich habe den Wert über Hilfsvariablen mehrfach ausgelesen: Vor der Änderung, nach der Änderung und nach dem Speichern des Dokuments.  Im Debugger habe ich gesehen, dass nach dem Speichern wieder der alte Wert im Feld ist.

Sieht hier irgendjemand, wo mein Fehler liegt. Ich werde gleich wahnsinnig.

Markus

umi:
Du änderst im Frontend und im Backend das Dokument (uidoc und doc)
Wird das doc auch noch gespeichert?

ampfi:
Hallo Urs,

äh, nein. Das Doc wird nicht gespeichert, wobei die Werte merkwürdiger Weise übernommen werden.

Gruß

Markus

umi:
Andere Frage:
Wo wird der Code ausgeführt, gibts evtl. noch anderes was da interferrieren könnte ?

ampfi:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln