Autor Thema: Aktualisieren den Inhalt des Feldes in dem parentdoc aus dem responsedoc  (Gelesen 2251 mal)

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Hallo @All,

vielen Dank im Voraus für jede Hilfe, Type, Hinweis bei folgendem Problem.
Ein response übernimmt von parent u. a. die Felder (flagL_1, ... flagL_10) erst ohne den Inhalt zu ändern. Beim Speichern des response wird der Inhalt dieser Felder analysiert und für die Felder mit dem Inhalt = “1“ muss den Inhalt des gleichnamigen Feldes in der parent auf = “2“ gesetzt werden.
Dafür habe ich folgendes Script, das nicht richtig funktioniert und zwar, die Inhalt des Feldes in der parent bleibt = “1“. In dem Bild habe ich versucht die Ergebnisse zu zeigen


Sub Postsave(Source As Notesuidocument)
   
   Dim ws As NotesUIWorkspace   
   Dim s As NotesSession
   Dim db As NotesDatabase
   Dim uiDoc As NotesUIDocument
   Dim responseDoc As NotesDocument
   Dim parentDoc As NotesDocument
   Dim FeldName As String
   Dim FeldInhalt As String
   Dim i As Integer
   
   Set s = New NotesSession   
   Set db = s.CurrentDatabase
   Set ws = New NotesUIWorkspace
   Set uiDoc = ws.CurrentDocument
   Set responseDoc = uiDoc.Document
   
   If responseDoc.IsResponse Then
      Set parentDoc = db.GetDocumentByUNID(responseDoc.ParentDocumentUnID)
   End If
   
   If Not (parentDoc Is Nothing) Then
      For i = 1 To 10 Step 1
         FeldName = "flagL_" & Cstr(i)
         FeldInhalt =uiDoc.FieldGetText( FeldName )
         Messagebox FeldInhalt
         If FeldInhalt  = "1" Then
            Messagebox parentDoc.FeldName(0)
            parentDoc.FeldName = "2"
            Messagebox parentDoc.FeldName(0)
         End If         
      Next
      Call parentDoc.Save( True, True )
   End If

End Sub

Viele Gruesse,
Sofia
« Letzte Änderung: 28.02.05 - 11:23:56 von sja »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Hi,

das kann so nicht gehen.

If Not (parentDoc Is Nothing) Then
      For i = 1 To 10 Step 1
         FeldName = "flagL_" & Cstr(i)
         FeldInhalt =uiDoc.FieldGetText( FeldName )
         Messagebox FeldInhalt
         If FeldInhalt  = "1" Then
'Bis hier ist nichts am Code auszusetzen

'Ab hier wird falsch
            Messagebox parentDoc.FeldName(0)
            parentDoc.FeldName = "2"
            Messagebox parentDoc.FeldName(0)
         End If         
      Next
      Call parentDoc.Save( True, True )
   End If

Messagebox parentdoc.Feldname(0) zeigt dir den Inhalt des Feldes mit Namen Feldname. Du kannst hier, auf diese Weise, nicht mit Variablen arbeiten.


Das müsste so aussehen:

...
Dim item As NotesItem
...

 If Not (parentDoc Is Nothing) Then
      For i = 1 To 10 Step 1
         FeldName = "flagL_" & Cstr(i)
         FeldInhalt =uiDoc.FieldGetText( FeldName )
         Messagebox FeldInhalt
         If FeldInhalt  = "1" Then
            Messagebox parentdoc.GetItemValue(FeldName)(0)
            Set item = parentdoc.ReplaceItemValue( FeldName, "2" )
            Messagebox parentdoc.GetItemValue(FeldName)(0)
         End If         
      Next
      Call parentDoc.Save( True, True )
   End If


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Hallo Axel,

herzlichen Dank für Deine Hilfe. Das funktioniert!  :)

Aber ehrlich zu sagen, bin ich hier verwirrt, da ich mir so vorgestellt habe, dass Claas  NotesItem für RichText und Date/Time Felder vorgesehen ist. In dem Fall habe ich einfach ein Text-Feld und dachte mir, dass doc.FeldName = "Inhalt" funktionieren sollte. Verstehe nicht ganz klar der Unterschied zwischen dem Begriff Feld und dem Begriff Item.

Schöne Gruesse und noch mal vielen Dank
Sofia

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Hallo,

In dem Buch ”Domino Designer R5” von Raimund Mann, Seite 348-349 stehet:

Zitat:
...
Um weiteren Zugriff auf ein Item zu erhalten. Muss im Normalfall ein Objekt Notesitem verwendet werden. Lotus Notes unterstützt jedoch eine sogenannte “erweiterte Klassendefinition“. Das bedeutet, dass ein Feldname eines Dokuments wie eine Eigenschaft des Dokuments sowohl zum Setzen als auch zum Lesen von Werten verwendet werden kann.
Soll bsp.weise der Wert des Feldes “Subject“ auf den Wert “ScriptIt – it’s easy“ gesetzt werden, kann man dies unter Verwendung den Methoden der Klasse NotesDocument wie folgt codieren:
’der Variablen doc ein Wert zu weisen
...
doc.ReplaceItemValue(“Subject“,“ScriptIt – it’s easy“)

Unter Verwendung der erweiterten Klassendefinition kann dies vereinfacht codiert werden:
’der Variablen doc ein Wert zu weisen
...
doc. Subject =  “ScriptIt – it’s easy“




In der Verbindung zum o.g. Zitat verstehe ich nicht, warum bei mir funktionierte nicht folgendes:
parentDoc.FeldName = "2"  ???

Vielen Dank, wenn jemand das erklären möchte.

Gruesse
Sofia




Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Du beziehst Dich auf zwei grundlegend unterschiedliche Dinge:

FeldName = "flagL_" & Cstr(i)
Damit belegst Du eine Stringvariable namens "Feldname" mit - z.B. - "flagL1"

parentDoc.FeldName = "2"
Hier sprichst Du ein Item (Feld) Deines NotesDocuments mit dem Namen "Feldname" an. Das ist aber etwas völlig anderes als die Variable gleichen Namens.

Mit der Kurznotation kannst Du Items nicht variabel ansprechen - es wird der hardgecodete Bezeichner verwendet. Mit Deinem ursprünglichen Code hast Du also ein Feld namens "Feldname" in Deinem Dokument erzeugt und mit "w" gefüllt.

Mit ReplaceItemValue hingegen kannst Du auch Variableninhalte als Itembezeichner verwenden.

HTH,
Bernhard

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Hallo Bernhard

oh ja, jetzt ist es mir alles klar geworden!  :)
Ich danke dir viel Mals, Du hast mir wieder sehr geholfen!

(Habe bei mir alles mögliches durchgekuckt und keine vernünftige Erklärung gefunden).


Schoene Gruesse
Sofia

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz