Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sja am 17.08.05 - 15:11:24

Titel: Schleife für kategorisierte Ansicht
Beitrag 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
Titel: Re: Schleife für kategorisierte Ansicht
Beitrag von: koehlerbv am 17.08.05 - 15:59:19
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
Titel: Re: Schleife für kategorisierte Ansicht
Beitrag von: sja am 17.08.05 - 16:20:58
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
Titel: Re: Schleife für kategorisierte Ansicht
Beitrag von: koehlerbv am 17.08.05 - 16:40:16
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
Titel: Re: Schleife für kategorisierte Ansicht
Beitrag von: sja am 17.08.05 - 16:55:09
herzlichen Dank, Bernhard, für die Hilfe!

Schöne Gruesse
Sofia
Titel: Re: Schleife für kategorisierte Ansicht
Beitrag von: sja am 18.08.05 - 18:12:48
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