Dokumentenliste aus Ansicht übernehmen

  • Hallo zusammen,


    Ich habe ein Dokument mit einer eingebetteten Ansicht.
    In dieser werden alle Antwortdokumente des Dokuments angezeigt.


    Jetzt will ich die Antwortdokumente in einer Mail abbilden.

    Das Problem dabei ist, dass diese Dokumente nach einenem Datum sortiert werden müssen.

    Im Moment mache ich das rausziehen der ADs über eine doccoll


    Set coll = view.GetAllDocumentsByKey(suppNr,True)


    Nur ist diese nicht sortiert. Die Ansicht schon. Aber so steht es auch in der Hilfe.


    Weiß jemand einen Weg den view sortiert zu übernehmen?


    Wie kann ich Dokumente in eine dynamische Liste oder Array reinbekommen?
    Hab es schon mit Variant versucht, aber das gibt bei mir nie etwas.



    Gruß Tom

  • das ist nicht mein Problem.
    Den View bekomm ich zur Not noch so ausgeknobelt
    Aus der Hilfe:


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim column As NotesViewColumn
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView( "By Category" )
    ' get the first sorted and categorized column in the view
    Forall c In view.Columns
    If ( c.IsSorted And c.IsCategory ) Then
    Set column = c
    Exit Forall
    End If
    End Forall
    ' get the first document that matches the key
    Set doc = view.GetDocumentByKey( "Spanish leather" )
    ' get the remaining documents that match the key
    ' since ColumnValues array starts at 0 for position 1,
    ' subtract 1 from the column position
    Do While Not ( doc Is Nothing )
    If ( doc.ColumnValues( column.Position - 1 ) = _
    "Spanish leather" ) Then
    Call doc.PutInFolder( "Boots" ) [color=FF3300]HIER IST MEIN PROBLEM[/color]
    Else
    Exit Do
    End If
    Set doc = view.GetNextDocument( doc )
    Loop


    Ich müsste hier die Dokumente in eine Array packen, das ich im Anschluss auch wieder aufdröseln kann.

  • Die Klasse NotesViewNavigator stellt eine Methode GetEntry bereit, mit der ich den Eintrag als NotesViewEntry bekomme. Von dort aus bekomme ich ja das Dokument, wenn es ein Dokument ist.


    So und da wären wir jetzt wieder bei meinem Problem.
    Wie bekomme ich diese Dokumente in eine Liste?


    Geht es mit Dim docs() as Notesdocument und anschl. mit Redim Preserve die Arraygrenzen ändern?
    Oder muss ich über ein Variant gehen?



    Gruß Tom

  • Geht beides, die Frage ist nur wozu du das so willst, denn du hast die Sammlung der Dokumente ja schon im ViewNavigator.
    Wenn du davon nur einen Teil brauchst kannst du dir den per GetAllEntriesByKey holen.
    Dann hast du eine ViewEntryCollection die auch mehr Möglichkeiten zur Verfügung stellt wie ein Array

  • Ich hab es jetzt ander gelöst.


    Dim arrdoc As NotesDocument
    Dim docs List As String
    Dim suppNrEntry As String
    Dim size As Integer
    Dim zaehler As Integer
    Dim gefunden As Boolean
    Dim nichtmehr As Boolean
    zaehler = 0
    gefunden = False
    nichtmehr = False

    suppNr = doc.GetItemValue("f_SupNr")(0)
    Set db = doc.ParentDatabase
    Set view = db.GetView("(VermerkeNachNr2)")
    Set arrdoc = view.GetDocumentByKey(suppNr)

    If arrdoc Is Nothing Then
    Exit Sub
    End If
    suppNrEntry = arrdoc.GetItemValue("f_SupNr")(0)
    Do While Not nichtmehr
    If suppNrentry = suppNr Then
    gefunden = True
    zaehler = zaehler + 1
    docs(zaehler) = arrdoc.UniversalID
    Else
    If gefunden = True Then nichtmehr = True
    End If
    Set arrdoc = view.GetNextDocument(arrdoc)
    suppNrEntry = arrdoc.GetItemValue("f_SupNr")(0)
    Loop


    Und weiter unten:
    Dim datum As String
    Dim beschr As String

    count = zaehler
    If count > 0 Then
    For i = 1 To count
    Set colldoc = db.GetDocumentByUNID(docs(i))
    'Werte holen
    datum = colldoc.GetItemValue("f_vDatum")(0)
    beschr = colldoc.GetItemValue("Subject")(0)

    'Vermerk anzeigen
    Call rtitem.AppendText(datum &" "& beschr)
    Call rtitem.AddNewline(1)
    Next
    Call rtitem.AddNewline(1)
    Call rtitem.AppendText("Weitere Angaben :")
    Call rtitem.AddNewline(1)
    End If



    es funktioniert.



    Ich hatte das auch mit dem NotesviewNavigator umgesetzt, aber der war richtig langsam, weil ich nicht zum ersten gebrauchten doc kam und deswegen alle der Reihe nach abarbeiten musste.


    Dank dir taurec

  • Mit dem ViewNavigator müsste es eigentlich richtig schnell gehen. Du hast ja schon eine kategorisierte Ansicht, die Du für die Maske verwendest. Mit CreateViewNavFromCategory erhälst die einen ViewNavigator, der genau die Dokumente für das aktuelle Dokument enthält.



    Dim vw as NotesView
    Dim vwn As NotesViewNavigator
    Dim vwe As NotesViewEntry



    Set vwn = vw.CreateViewNavFromCategory("<Kategorie>")
    Set vwe = vwn.GetFirstDocument


    Do Until vwe Is Nothing

    Set doc = vwe.Document


    '//Hier kommt Dein Code hinein

    Set vwe = vwn.GetNextDocument(vwe)
    Loop