Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 07.08.02 - 11:42:23
-
Hi Leute!
Bei mir liefert Notes eine leere Collection zurück. Das Script ist in einer Schaltfläche eines Antwortdokumentes drin.
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Dim s As String
Dim doc As NotesDocument
Dim parentUNID As String
Set uidoc = ws.CurrentDocument
Set db = session.CurrentDatabase
Set doc = uidoc.Document
parentUNID = doc.ParentDocumentUNID
s = {$Ref = "} + ParentUNID + {"}
Set coll = db.Search( s,Nothing,0 )
Theoretisch sollten in der coll alle Antworten des Hauptdokumentes stehen. Tun sie aber nicht :-/
Hat jemand eine Ahnung, warum dem so ist?
-rar
-
Hi,
mach es doch über die Eigenschaft Responses der NotesDocument-Klasse.
...
Dim parantdoc As NotesDocument
Set db = session.CurrentDatabase
Set doc = uidoc.Document
Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID )
Set coll = parentdoc.Responses
...
Ist, denk ich mal einfacher und sollte auch funktionieren.
Axel
-
Das geht nicht so einfach.
Es ist ein ähnliches Problem wie das JaNein-Problem von hmarco
(http://www.atnotes.de/cgi-bin/yabb/YaBB.pl?board=002-2;action=display;num=1028638014)
Nur schaut es bei mir so aus:
Viele, viele Antwortdokumente, die aber alle Leserfelder drin haben. Jetzt gibt es ein Verantwortlichen für nur ein Antwortdoc, der auch nur seine Antwort sieht.
Wenn er dann sein Status auf erledigt setzt, soll im Hauptdoc der Status dann auf erledigt gesetzt werden, wenn alle Antworten erledigt sind.
Da der Verantwortliche aber nur ein doc sieht, stehen in den Responses zwar alle Antworten des Hauptdocs drin, aber die Items sind leer. Deshalb kann ich auch nicht abfragen, ob ein doc nicht erledigt ist.
Jetzt dachte ich mir, daß ich mit einem Search alle Antwortdokumente hole in denen der Status nicht erledigt ist. Wenn er keines findet, kann ich den Status im Hauptdoc ändern. Ob in der collection vom Search die Antworten als leere docs sind (wie bei doc.Responses) , ist mit dann wurscht.
Ist ein bischen komisch, aber mir fällt nichts anderes ein. Ich bin mir nicht einmal sicher, ob das überhaupt klappt. :-/
-rar
-
Hi,
könnte sein das es nicht klappt, denn wenn mit doc.Responses die Felder leer sind, dann kann auch search nichts finden. Denn es liest ja die Feldinhalte.
Wäre eine Erklärung, denn dein Script sieht ok aus.
Alternativ fällt mir dazu nur ein getriggerter Agent ein, der auf dem Server läuft und die Statusfelder prüft.
Axel
-
An den Agent habe ich auch schon gedacht. Gefällt mir zwar nicht, aber wenn nix geht, wird es das werden.
Ich möchte es vorher aber auf jeden fall mit dem Search noch probieren.
Leider findet das Scriptl in einer TestDb ohne Leserfelder auch keine Antworten. Und ich weiß nicht warum... :'(
-dani
-
Hi,
kann es sein, dass es am Suchstring liegt ? Versuch mal nach einem anderen x-beliebigen Feld zu suchen, aber keins, das mit $ beginnt. Vielleicht stört in das.
Axel
-
Soweit bich ich auch schon gekommen. Nach der Form und so suchen geht.
Gibt es eine Möglichleit das $ irgendwie zu maskieren? Mit " oder \ oder so?
-
Hi,
versuch's mal mit $$Ref
Axel
-
Auch das geht leider nicht... :'(
-
Hi,
probiers mal mit dieser Variante:
...
s = {@Contains($Ref; "} + ParentUNID + {")}
Set coll = db.Search( s,Nothing,0 )
...
Axel
-
Hi,
das Problem ist, daß Dokumente mit Leserfeldern mit search nicht gefunden werden können. Eine Möglichkeit wäre aber, über eine Ansicht zu arbeiten, die in einer Spalte, die Anzahl der Antwortdokumente anzeigt (diese Zahl zählt auch jene Dokumente mit, die man nicht lesen darf). Mit der richtigen Ansichtsauswahl kannst du zu den Informationen, die du brauchst, gelangen. Mit den Klassen NotesOutline bzw. NotesOutlineEntry kannst du die Zeilen in der Ansicht lesen.
Ciao
gulp