Autor Thema: NotesForm als Collection  (Gelesen 1860 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
NotesForm als Collection
« 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:NotesForm als Collection
« Antwort #1 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

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:NotesForm als Collection
« Antwort #2 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



Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:NotesForm als Collection
« Antwort #3 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

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:NotesForm als Collection
« Antwort #4 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline g202e

  • Senior Mitglied
  • ****
  • Beiträge: 361
  • Geschlecht: Männlich
  • Was nicht tötet, härtet ab!
Re:NotesForm als Collection
« Antwort #5 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
..........
Domino 5.0.11/LN 5.011(german)/NT4 + SP6a

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz