Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 15.09.03 - 21:11:21

Titel: NotesForm als Collection
Beitrag 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:

Zitat
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
Titel: Re:NotesForm als Collection
Beitrag von: koehlerbv am 15.09.03 - 21:51:18
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
Titel: Re:NotesForm als Collection
Beitrag von: TMC am 15.09.03 - 22:18:05
Hi Bernhard,

erstmal danke für die Antwort.

Mal stichpunktartig :-)
Zitat
- Agent läuft auf alle Dokumente in der DB
OK, klar :-)
Zitat
- DB instantiieren
auch noch klar:
Set db = session.CurrentDatabase

Zitat
- 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



Titel: Re:NotesForm als Collection
Beitrag von: koehlerbv am 15.09.03 - 22:43:55
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
Titel: Re:NotesForm als Collection
Beitrag von: TMC am 15.09.03 - 23:07:33
ne ne, dann bin ich schon bei Dir :-)
Zitat
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
Titel: Re:NotesForm als Collection
Beitrag von: g202e am 16.09.03 - 11:13:38
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
..........