Domino 9 und frühere Versionen > ND6: Entwicklung

View.GetNextDocument aus DocumentCollection

(1/3) > >>

Untitled:
Hi zusammen

Ich habe eine DocumentCollection, welche aus zwei verschiedenen Quellen stammen kann:
1. Database.UnprocessedDocuments oder
2. Database.Search

Nun benötige ich vom Dokument die Eigenschaft "ColumnValues". Diese funktioniert bekanntlich    nur, wenn das Dokument aus einer View stammt.

Da die Dokumente aber von der Collection stammen, musste hier eine Übersetzung ins View-Document geschehen. Ich picke also dasselbe Dokument der Collection, aus der View.

Dies geschieht so:

--- Code: ---Set doc2 = View.GetNextDocument(doc)

If doc2 Is Nothing Then
Set doc2 = View.GetPrevDocument(doc)

    If doc2 Is Nothing Then
        'doc from the collection does not exist in this view -> go to the next doc
    Else
        Set doc2 = View.GetNextDocument(doc2)
    End If
Else
    Set doc2 = View.GetPrevDocument(doc2)
End If
--- Ende Code ---

Wobei doc2 das Dokument aus der View und doc das Dokument aus der Collection ist.

Hat die Collection nun als Quelle "UnprocessedDocuments", funktioniert alles einwandfrei, werden die Dokumente aber mit "Database.Search" gesucht, behauptet die erste Anweisung "Set doc2 = View.GetNextDocument(doc)" jedesmal "The document is not in view xxx".  ???

Hat jemand eine Idee, wie ich diese "Übersetzung" anders gestalten könnte, oder was der Unterschied zwischen den beiden Collections ist?

Danke und Grüsse
Moritz

Wilhelm:
Hi Moritz,

was genau willst Du denn erreichen?
Welchen Wert brauchst du aus der ColumnValues-Eigenschaft, den du nicht aus dem Dokument-Objekt selbst erhalten kannst?

Gruß

Willi

Untitled:
Hi Willi

Ich möchte die Werte aus einer View exportieren. Das kann ja durchaus auch mal eine Berechnung sein, oder ein veränderter Wert vom ursprünglichen Feld aus dem Dokument.

Moritz

Glombi:
Du kannst mit doc.UniversalID die DocID ermitteln und dann über alle Dokumente der View iterieren, bis das entsprechende Dokument gefunden wurde.

Zur Optimierung würde ich eine Kopie der View machen, die nach @Text(@DocumentUniqueID) sortiert ist. Dann bekommst Du das Dokument sofort mit
set viewdoc = view.GetDocumentByKey( doc.UniversalID)

Andreas

Untitled:
Daran hatte ich auch schon gedacht.

Aber die erste Variante ist leider viel zu imperformant.

Die zweite Möglichkeit ist dann wohl die Einzige, aber ich wollte mir diese Kopie eigentlich sparen, da der Export dynamisch und unabhängig von der View funktionieren sollte  :-\

Was auch eine Möglichkeit wäre: Alle Dokumente der View packen und darauf den Search ausführen, statt in der Datenbank. Aber ich habe bis jetzt auch keinen Weg gefunden, alle Dokumente einer View in eine Collection zu kriegen (einigermassen performant).

Danke für eure Antworten!
Moritz

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln