Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 15.09.03 - 21:11:21
-
Hi,
ich schreibe mir des öfteren "mal schnell" simple Agenten, um Feldwerte von "A" auf "B" zu ändern.
Meine Vorgehensweise bisher kommt mir aber umständlich vor, weil ich immer die Docs zu bearbeiten entweder selektiere oder per View auswähle.
Ich würde aber oft gerne alle Docs behandeln, deren Form z.B. "form_abc" ist.
Ein erster Versuch:
Sub Initialize
Dim Session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim form As NotesForm
Set db = session.CurrentDatabase
Set form = db.GetForm("form_abc")
Set collection = doc.dialogform
Set doc = collection.GetFirstDocument
While Not ( doc Is Nothing )
doc.DateA = "BlaBla"
Call doc.save(False, False, False)
Set doc = collection.GetNextDocument( doc )
Wend
End Sub
So funktioniert das (natürlich) nicht, weil ich ja ein "set collection" mache, ohne doc vorher definiert zu haben.
Aber: Ist das überhaupt der richtige Ansatz? In der Designerhilfe kam ich jetzt nicht wirklich weiter....
bye,
TMC
-
Vorschlag:
- Agent läuft auf alle Dokumente in der DB
- DB instantiieren
- Collection = NotesDatabase.AllDocument
Da hast Du dann alle Docs im Zugriff und kannst diese ein- oder aussortieren und mit ihnen treiben, was Du willst ;-)
PS: Alternativ - NotesDatabase.Search (QueryString), aber nicht besonders performant.
Bernhard
-
Hi Bernhard,
erstmal danke für die Antwort.
Mal stichpunktartig :-)
- Agent läuft auf alle Dokumente in der DB
OK, klar :-)
- DB instantiieren
auch noch klar:
Set db = session.CurrentDatabase
- Collection = NotesDatabase.AllDocument
so far so good. Aber wie komm ich dann an meine Form?
Oder versteife ich mich zusehr auf die in der Help erwähnte
"NotesForm"?
D.h. würdest Du "klassisch" einfach das Feld "Form" des Docs auslesen?
Wäre natürlich auch 'ne Alternative....
Grüße in die Traunsteiner Region....
TMC
-
Die Region Traunstein bedankt sich ;-)
Jo, wenn Du alle Docs in der Collection hast, dann durchrattern un duaf Form = "x" prüfen. Oder halt eben NotesDatabase.Search - ist eben nicht so erfrischend performant. FTSearch geht natürlich auch, erfordert aber eben mehr Aufwand.
Sag' mal an, wo es noch klemmt - wir kriegen die Sau schon geschlachtet !
Bernhard
-
ne ne, dann bin ich schon bei Dir :-)
Jo, wenn Du alle Docs in der Collection hast, dann durchrattern un duaf Form = "x" prüfen
Hab mir schon sowas gedacht :-)
Hatte nur gemeint, weil es da eben auch Notesform gibt, warum ich dann nicht hier was nehmen sollte.
Aber die Designerhilfe hats auch eh schon angedeutet: dient wohl mehr dafür, direkt die Forms zu behandeln (also löschen etc.), und nicht die Docs die darauf basieren.
However, hast mir schon geholfen.
Danke!
Grüße,
TMC
-
Oder halt eben NotesDatabase.Search - ist eben nicht so erfrischend performant.
z. B. so:
Dim datetime As New NotesDateTime("01/01/97")
Dim searchFormula As String
searchFormula = |Form="Log" & Status != "PROCESSED"|
Set dc = db.Search(searchFormula, datetime, 0)
Set dcdoc = dc.GetFirstDocument
Do Until dcdoc Is Nothing
..........