Autor Thema: Schleife für kategorisierte Ansicht  (Gelesen 1646 mal)

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Schleife für kategorisierte Ansicht
« 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
« Letzte Änderung: 18.08.05 - 18:13:07 von sja »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schleife für kategorisierte Ansicht
« Antwort #1 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

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Schleife für kategorisierte Ansicht
« Antwort #2 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schleife für kategorisierte Ansicht
« Antwort #3 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

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Schleife für kategorisierte Ansicht
« Antwort #4 am: 17.08.05 - 16:55:09 »
herzlichen Dank, Bernhard, für die Hilfe!

Schöne Gruesse
Sofia

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Schleife für kategorisierte Ansicht
« Antwort #5 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


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz