Domino 9 und frühere Versionen > ND6: Entwicklung
Ansichtsauswahl-Formel für response im Bezug auf parent
koehlerbv:
--- Zitat von: sja am 18.01.05 - 16:14:08 ---Wenn Du sagst, dass das unmöglich ist, dann ist es auch! Glaube ich das in jedem Fall :)
--- Ende Zitat ---
Mach das nicht, Sofia - ich bin auch nur ein Mensch, der irrt (in diesem Forum mehrfach nachzulesen ;) )
Aber ich glaube, Du kannst Dir den Agent trotzdem mit einer entsprechenden Ansicht einfacher aufbauen.
Nur so als eine Idee:
Eine Ansicht, die nur die Antwortdokumente mit dem Flag = 1..3 anzeigt. Damit ist sicherlich die Anzahl der zu bearbeitenden Dokumente schon mal deutlich eingeschränkt. Zu den Dokumenten holst Du Dir dann das ParentDoc via NotesDatabase.GetDocumentByUNID und NotesDocument.ParentDocumentUNID - das ist ein extrem schnelles Verfahren für den Zugriff auf Dokumente in einer DB.
Aufpassen musst Du nur auf die ADT-Falle, wenn Du den Antwort-Dokumenten dann den Status Flag = "4" verpasst, da diese dann ja aus der Ansicht herausfallen und GetNextDocument in die Hose geht: Du musst also, bevor Du in einem Dokument doc.Flag = "4" setzt, einem docTemp das aktuelle Dokument zuweisen und dann den Pointer auf das nächste Dokument setzen:
If Updatebedingung = True then
Set docTemp = doc
Set doc = view.GetNextDocument.(doc)
docTemp.Flag = "4"
Else
Set doc = view.GetNextDocument.(doc)
End If
HTH,
Bernhard
Thomas Schulte:
und wenn du es ganz raffiniert machen willst und es durchaus möglich ist, das mehrere Antwortdokumente zu einem Parent existieren dann prüft du jedesmal bevor du dir den parent holst ob der nich schon geladen war und wenn er schon geladen war wie der Status des Parents ist. Damit sparst du auch das noch ein, wobei hier der Geschwindigkeitsgewinn ambivalent sein kann.
Thomas
sja:
Hallo Bernhard,
hallo Thomas,
kann keine richtigen Wörter zu finden, um euch für so hilfreiche Vorschläge zu danken.
Die Idee mit NotesDatabase.GetDocumentByUNID und NotesDocument.ParentDocumentUNID gefällt mir sehr und ich werde die sofort implementieren als auch Set docTemp = doc.
Eine Ansicht mit dem Flag = 1..3 habe ich schon. Jedes "haupt" hat nur ein einziges Antwortdokument von Typ "antw1" und das macht den Fall viel einfacher, aber sonst hätte ich den Rat von Thomas gefolgt.
Die Ergebnisse werde ich berichten.
Das Forum ist mein einziger Gespräch-Partner in dem Bereich LotusNotes-Programmierung und ich weiss das alles zu schätzen!
Herzlichen Dank noch mal :)
Liebe Gruesse
Sofia
sja:
Hallo,
vielen Dank noch mal für Eure Hilfe, alles funktioniert hervorragend.
Hier die Lösung:
Ansicht “antw1” mit Ansichtsauswahl-Formel:
SELECT (Form = "antw1")&(flag = "1":"2":"3")
und der Agent enthält folgender Code
Option Public
Dim db As NotesDatabase
Dim view As NotesView
Dim VEC As NotesViewEntryCollection
Dim ve As NotesViewEntry
Dim s As NotesSession
Dim antw1 As NotesDocument
Dim haupt As NotesDocument
…
Sub Initialize
Set s = New NotesSession
Set db = s.CurrentDatabase
Set view =db.getview("antw1")
Set VEC = view.AllEntries
If Not(view.EntryCount = 0) Then
Set ve = VEC.GetFirstEntry()
While Not (ve Is Nothing)
Set antw1 = ve.Document
Sorry dieser Zeile ist falsch <<Set haupt = db.GetDocumentByUNID(antw1.HauptDocumentUNID)>>
Richtig Set haupt = db.GetDocumentByUNID(antw1.ParentDocumentUNID)
If haupt.ProjektStadium(0) = "post" Then
Set ve = VEC.getNextEntry(ve)
Call MailSenden
antw1.flag = "4"
Call antw1.Save( True, True )
Call view.Refresh
Else
Call view.Refresh
Set ve = VEC.getNextEntry(ve)
End If
Wend
End If
End Sub
Function MailSenden...
Ich liebe dieses Forum! :)
Liebe Gruesse
Sofia
koehlerbv:
Kann das stimmen, Sofia:
Set haupt = db.GetDocumentByUNID(antw1.HauptDocumentUNID)
Muss es nicht heissen:
Set haupt = db.GetDocumentByUNID(antw1.ParentDocumentUNID)
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln