Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: willi butz am 18.12.09 - 12:42:24

Titel: Feldänderung für ausgewählte Dokumente
Beitrag von: willi butz am 18.12.09 - 12:42:24
Hallo,

alle markierten Dokumente einer Ansicht sollen einen Text in ein Feld geschrieben bekommen. Im Agent ist eingestellt "ausgewählte Dokumente", aber das Script, welches sich dahinter verbirgt, spricht nur ein Dokument an. Wie kann ich das Script umstellen, damit es alle markierten Dokumente bearbeitet:

Gruß Willi

Sub Initialize
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim user2 As String
   Dim user3 As String
   Dim zeit As String
   Dim namen As String
   Dim rtitem As Variant    
   Set uidoc = workspace.CurrentDocument
   Set uidoc = workspace.EditDocument( True )
   user2 = "Überfällig seit "
   user3 = uidoc.FieldGetText( "Zeit33" )
   namen = uidoc.FieldGetText( "Leser99" )
   zeit = Now
   Call uidoc.FieldAppendText("zusammen", "-> " & user2 & user3 & " Tagen. Info am " & zeit & " (" & namen & ") " & Chr$(010))
End Sub
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: Axel am 18.12.09 - 12:52:19
Ganz grob kann das so aussehen.

Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
   
Set db = session.CurrentDatabase   
Set collection = db.UnprocessedDocuments

If collection.Count = 0 Then Exit Sub

Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
  'Hier werden die Felder gefüllt
  doc.NamedesFeldes = Wert
  ...

  'Speichern des Dokumentes
  Call doc.Save(True, False)
  Set doc = collection.GetNextDocument(doc)
Wend   


Axel
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: willi butz am 18.12.09 - 13:30:40
Hallo Axel,

danke für deine schnelle Antwort.
Ich habe das Script mal angepaßt, es klappt aber nicht richtig.
Es schreibt nach wie vor nur in ein Dokument.
Gruß Willi
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: ascabg am 18.12.09 - 13:36:00
Hallo,

Kannst Du auch mal Deinen "neuen" Code posten?


Andreas
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: willi butz am 18.12.09 - 13:41:04

Das wäre die Änderung

Sub Initialize   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim user2 As String
   Dim user3 As String
   Dim zeit As Variant
   Dim namen As String
   Dim rtitem As Variant
   user2 = "Überfällig seit "
   zeit = Now   
   Set db = session.CurrentDatabase   
   Set collection = db.UnprocessedDocuments   
   If collection.Count = 0 Then Exit Sub   
   Set doc = collection.GetFirstDocument
   While Not (doc Is Nothing)
  'Hier werden die Felder gefüllt
      doc.zusammen = user2
  'Speichern des Dokumentes
      Call doc.Save(True, False)
      Set doc = collection.GetNextDocument(doc)
   Wend   
End Sub
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: ascabg am 18.12.09 - 13:45:00
Und aufgerufen wird das ganze aus der Ansicht heraus und es sind auch die betreffenden Dokumente in der Ansicht ausgewaehlt.
(Haken vor dem betreffenden Dokument)

Andreas
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: willi butz am 18.12.09 - 13:45:52
Ja genau.
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: ascabg am 18.12.09 - 13:52:58
Prinzipiell sollte dieser Code aber funktionieren.

Code

Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim user2 As String 
user2 = "Überfällig seit "
  
Set db = session.CurrentDatabase

Set collection = db.UnprocessedDocuments
If collection.Count = 0 Then Exit Sub
Set doc = col.GetFirstDocument
Do While Not (doc Is Nothing)

    'Hier werden die Felder gefüllt
    doc.zusammen = user2

    'Speichern des Dokumentes
    Call doc.Save(True, False)
    Set doc = col.GetNextDocument(doc)

Loop   


Andreas
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: ascabg am 18.12.09 - 14:00:16
Alternativ muesste auch dieses funktionieren, aber ich weiss momentan nicht absolut sicher, ob es die genannte Methode auch schon inder Version 5 gab.

Code
Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim user2 As String 
user2 = "Überfällig seit "
  
Set db = session.CurrentDatabase

Set collection = db.UnprocessedDocuments
If collection.Count = 0 Then Exit Sub
Call col.StampAll("zusammen", user2)

Andreas
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: koehlerbv am 18.12.09 - 14:04:17
StampAll gab es schon seit R4, Andreas  ;)

Bernhard
Titel: Re: Feldänderung für ausgewählte Dokumente
Beitrag von: Thomas Schulte am 19.01.10 - 08:18:04
Und warum so kompliziert.
ZusammenNeu := "-> Überfällig seit " & @text(Zeit33) & " Tagen. Info am " & @text(@now) & " (" & @implode(Leser99;", ") & ")";
FIELD Zusammen := @trim(Zusammen : ZusammenNeu);

Formelagent ....