Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Peacemaker am 30.09.04 - 11:29:20
-
Hallo alle zusammen,
ich bin mal wieder ratlos:
Ich habe einen LS Agenten (weiter unten geposted), den ich mittels agent properties auf "All selected documents" angesetzt habe. Wenn ich nun mehrere Forms im View selektiere udn den Agenten starte, bearbeitet er aber trotzdem nur das erste der selektierten Forms (korrekt und fehlerfrei). Wieso das???
Danke für eure hilfe
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docNew As NotesDocument
Dim strN As String
Dim n As Integer
Dim subname As String
Dim alllongnames As String
Dim uiview As NotesUIView
Set db = session.CurrentDatabase
Set doc = session.DocumentContext
n = doc.numberss(0)
While n >= 1
Set docNew = db.CreateDocument
docNew.form = "add_subsystem"
docNew.serialnr = doc.serialnr(0)
docNew.model = doc.model(0)
docNew.type = doc.type(0)
docNew.sysid = doc.sysid(0)
docNew.customer = doc.customer(0)
docNew.alllongnames_temp = doc.alllongnames(n-1)
docNew.subsys_temp = doc.subsys(n-1)
docNew.ecnumbers_temp = doc.ecnumbers(n-1)
docNew.alldrivers_temp = doc.alldrivers(n-1)
docNew.allrec_temp = doc.allrec(n-1)
docNew.allact_temp = doc.allact(n-1)
docNew.allacttime_temp = doc.allacttime(n-1)
docNew.allmax_temp = doc.allmax(n-1)
docNew.allacc_temp = doc.allacc(n-1)
docNew.allacttime_temp = doc.allacttime(n-1)
docNew.doctype = "Subsystem Information"
Call docNew.Save( True, False )
n=n-1
Wend
End Sub
-
Für so etwas musst Du die Property UnprocessedDocuments der NotesDatabase class verwenden.
Bernhard
PS: Wozu soll denn das dienen ?
"n = doc.numberss(0)"
-
danke für den tipp
die Anzahl der while schleifendurchgänge ist von Form zu form unterschiedlich - deswegen wird sie ausgelesen.
-
hab den Text wie folgt abgeändert - irgendwie tut ers aber noch nicht - Error: Subscript out of range...
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docNew As NotesDocument
Dim strN As String
Dim n As Integer
Dim subname As String
Dim alllongnames As String
Dim uiview As NotesUIView
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
n = doc.numberss(0)
While n >= 1
Set docNew = db.CreateDocument
docNew.form = "add_subsystem"
docNew.serialnr = doc.serialnr(0)
docNew.model = doc.model(0)
docNew.type = doc.type(0)
docNew.sysid = doc.sysid(0)
docNew.customer = doc.customer(0)
docNew.alllongnames_temp = doc.alllongnames(n-1)
docNew.subsys_temp = doc.subsys(n-1)
docNew.ecnumbers_temp = doc.ecnumbers(n-1)
docNew.alldrivers_temp = doc.alldrivers(n-1)
docNew.allrec_temp = doc.allrec(n-1)
docNew.allact_temp = doc.allact(n-1)
docNew.allacttime_temp = doc.allacttime(n-1)
docNew.allmax_temp = doc.allmax(n-1)
docNew.allacc_temp = doc.allacc(n-1)
docNew.allacttime_temp = doc.allacttime(n-1)
docNew.doctype = "Subsystem Information"
Call docNew.Save( True, False )
n=n-1
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
-
Wo kommt der Fehler ?
-
beim starten des agenten über das Actions Menü
-
Ach was ... ;D
In welcher Zeile kommt es zu dem Fehler ?
-
Das problem liegt in der while schleife, dort sollte kein set doc=collection... stehen.
Bzw. Dafür brauchst du eine 22 while schleifen, eine für die unprocessed Dokuments.
gruss umi
-
22 ist ein bisschen übertrieben, eine 2. schleife reicht.. ;) ;D
klaus
-
in Zeile 33 - das wäre bei
docNew.alllongnames_temp = doc.alllongnames(n-1)
vorher hatte ich ja Set doc = session.DocumentContext definiert. Damit lief die Zeile einwandfrei - scheinbar geht die docNew zuweisung nichtmehr mit der doc = collection.GetFirstDocument() Zeile
-
ohoh, danke für den Tip mit der Wile schleife - das war wohl im halbschlaf da reinkopiert.
Jetzt läufts wieder - bearbeitet aber immernoch nur ein Dokument im View und nicht alle selektierten wie er eigentlich soll
hab da smit dr Schleife überlesen - danke jetzt eghts
-
Wie sieht denn Dein Code nun aus ?
Zur Fehlermeldung: Diese besagt, dass es das (n - 1). Element in dem betreffenden Item nicht gibt.
Bernhard
-
Schau Dir mal folgendes an zu NotesUIView.Documents:
Read-only. The documents that are currently selected in a view.
Defined in
NotesUIView
Data type
NotesDocumentCollection
Syntax
To get: Set notesDocumentCollection = notesUIView.Documents
Usage
In NotesUIView events such as QueryOpen where you cannot have documents selected, Documents.Count is 0.
Damit kommst du ganz bequem an die selektierten Dokumente. Der Agent kann als target sogar none haben....