Domino 9 und frühere Versionen > ND6: Entwicklung
View.GetNextDocument aus DocumentCollection
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