Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sja am 17.08.05 - 15:11:24
-
Hallo @ALL,
Vielen Dank im Voraus, wenn jemand mit einem Bsp., Hinweis, Link mir auf dem Sprunge helfen würde.
In einem View sind die Dokumente in der 1. Spalte kategorisiert (die Spalte enthält Usernamen). Dann sollte alle Doku-Links für je Username (Category) in eine Tabelle gepackt werden und per Email an den User gesendet werden
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim nav As NotesViewNavigator
Dim entry As NotesViewEntry
Set db = session.CurrentDatabase
Set view = db.GetView("By Category")
1. Frage: Wie kann ich den Category-Wert ermitteln (die brauche ich auch für Email-Adresse)
Set nav = view.CreateViewNavFromCategory(???)
2. Frage: Nach meinem Verständnis sollte hier eine Schleife organisiert werden, die alle Category-Werte durch geht
und
z. B. folgenden Block enthält
Set entry = nav.GetFirstDocument
While Not ( entry Is Nothing )
Call MailFunktion()
Set entry = nav.GetNextDocument(entry )
Wend
3. Ob ich meine Fragen verständlich formuliert habe? (Wenn nicht, gerne versuche die anders formulieren).
4. Ob ich mit meinem o.g. Code überhaupt in der richtige Richtung denke?
Danke schöne und Gruesse
Sofia
-
Hallo Sofia,
wenn ich es richtig verstehe, dann musst Du doch sowieso durch alle Dokumente der Ansicht loopen ? Dann würde ich es gar nicht so kompliziert machen:
Erstes Dokument holen, dieses und alle weiteren solange verarbeiten, bis das zur Kategorisierung verwendete Item seinen Inhalt wechselt.
Mit diesem Dokument jetzt weitermachen wie unter "Erstes Dokument" und so weiter, bis irgendwann NotesDocument Nothing ist.
Bernhard
-
Hallo Bernhard,
danke schön für deinen schnelle Antwort.
Die Sache ist, wie erkenne ich, dass den Wert in dem Feld "Name" gewechselt hat. Genau das dachte ich mir mit Category zu ermitteln. Aber wenn das geht nicht, dann überlege ich mir, wie nach deinem Vorschlag ich kodieren soll.
Vielen Dank und schöne Gruesse
Sofia
-
Dim szCategory As String
Set docCurrent = viewLoopThrough.GetFirstDocument
szCategory = docCurrent.CategoryField (0)
So in dieser Art. Das Loopen durch die Dokumente, solange szCategory = docCurrent.CategoryField (0) ist, sollte besser in eine eigene Sub ausgelagert werden (wegen der Übersichtlichkeit).
Bernhard
-
herzlichen Dank, Bernhard, für die Hilfe!
Schöne Gruesse
Sofia
-
Hallo,
hab’s so implementiert:
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docAll As NotesDocument
Dim MailDoc As NotesDocument
Dim view As NotesView
Dim viewAll As NotesView
Dim vecAll As NotesViewEntryCollection
Dim vec As NotesViewEntryCollection
Dim ve As NotesViewEntry
Dim key As String
Dim tmpKey As String
Dim an As String
...
Set session = New NotesSession
...
Set db = session.CurrentDatabase
Set view=db.getview("tmpAktlWoAE")
Set viewAll=db.getview("tmpAktlWoAE")
Set vecAll = viewAll.AllEntries
If Not(vecAll.Count = 0) Then
Set docAll = viewAll.GetFirstDocument
key = docAll.Name(0)
an = key
Set vec = view.GetAllEntriesByKey(key, True)
Call MailSenden() ‘Komplezierte Funktion mit dem Tabellenaubauen usw.
While Not ( docAll Is Nothing )
tmpKey = docAll.Name(0)
If Not(tmpKey = key) Then
key = tmpKey
an = key
Set vec = view.GetAllEntriesByKey(key, True)
Call MailSenden()
End If
Set docAll = viewAll.GetNextDocument( docAll )
Wend
End If
...
Evtl. könnte eleganter macht werden, aber so funktioniert auch...
Noch mal herzlichen Dank, Bernhard, für deine Hilfe!
Schöne Gruesse
Sofia