Document Collection Ordina Notes LotusScript
Per Documento sort Collection Notes, ho trovato IBM ha dichiarato: "raccolta di documenti LotusScript non vengono ordinati come previsto". I documenti contenuti all'interno di un oggetto NotesDocumentCollection sono ordinati in base alla data di creazione. In base alla progettazione, l'ordinamento della vista o della cartella dei documenti risiedono all'interno viene ignorato.
A volte è utile creare una raccolta di documenti "ad hoc", i documenti aggiungendo ad esso come si va avanti di elaborazione un altro insieme di documenti. Per esempio, come si potrebbe tenere un elenco di documenti il cui campo Stato deve essere aggiornato, ma in realtà non vogliono fare gli aggiornamenti fino a quando hai fatto tutto con il resto della vostra elaborazione.
Metodo NotesDatabase.CreateDocumentCollection
Se si esplora il disegno del file di posta Notes, si potrebbe scoprire che c'è un NotesDatabase.CreateDocumentCollection metodo che fa esattamente quello che state cercando. E 'stato aggiunto nella versione 8.0. La funzione non è documentata, ma un aggiornamento della documentazione è stata presentata e dovrebbe apparire in qualche versione futura. C'è un problema noto (crash, AGUD7LPRDW SPR) se si chiama questo metodo su un database che non è stato ancora aperto.
Se si preferisce, o per le versioni precedenti a 8.0, continuate a leggere per le tecniche alternative.
Utilizzare NotesDatabase.Search
È possibile creare un insieme vuoto abbastanza rapidamente utilizzando NotesDatabase.Search. Il metodo di ricerca è lento in generale, ma c'è un modo efficace per usarlo se tutto ciò che serve è un insieme vuoto.
Coll As NotesDocumentCollection
Domani Dim As New NotesDateTime ("")
tomorrow.SetNow
tomorrow.AdjustDay 1
Set coll = db.Search ("@ False", domani, 1)
La data / ora argomento limita i documenti ricercati a quelli modificati dopo la data indicata / ora. Poiché il database in genere non conterrà tutti i documenti modificati in futuro, questa ricerca in realtà non guardare a tutti i documenti, ma sembra proprio al tavolo dei tempi di modifica dei documenti a notare che non vi sono documenti che soddisfano i criteri. Questo è abbastanza veloce anche in database con molti documenti.
Alcuni sviluppatori hanno usato altri metodi che comportano la creazione di una vista vuota nascosta (o cartella), in modo che possano richiedere tutti i documenti nella vista. Tuttavia, l'aggiunta di vista delle prestazioni ha implicazioni per il server in generale, e non dovrebbe essere fatto solo per convenienza programmazione. Inoltre, tale codice non è così facile il porting a un'altra applicazione in quanto non funziona se si dimentica di prendere la vista anche.
Tecniche alternative
La classe NotesDocumentCollection non è l'unico modo per mantenere un insieme di documenti. Ad esempio, il tipo di dati elenco può anche essere usato per questo scopo:
Dim List docsList Come NotesDocument
...
Set docsList (doc.NoteID) = doc
...
Forall docInLoop In docsList
Ci sono molti vantaggi ad usare il tipo di dati List, per uno, è possibile creare una raccolta di documenti che non provengono tutti dallo stesso database.
Inoltre, la possibilità di ricercare i documenti per la loro tag lista è a volte utile in combinazione con un elenco di tag diverso ID UNID o nota. Ad esempio, si potrebbe desiderare la raccolta per contenere documenti con un unico insieme di ID dei clienti, ma solo l'ultimo documento per ogni cliente. Utilizzare l'ID cliente come chiave lista, quindi la funzione IsElement consente di determinare rapidamente se un determinato documento sarebbe un duplicato se ha aggiunto alla lista.
In caso contrario, LotusScript consente anche di creare classi di insiemi propri per gestire l'ordinamento personalizzato o altre funzioni che NotesDocumentCollection non supporta.
Si noti, tuttavia, che c'è un limite al numero di oggetti NotesDocument si può avere accesso in memoria contemporaneamente, quindi questo non può essere appropriato per raccolte molto grandi.
Visto 8047 volte da 2913 spettatori














Non ho mai visto la ricerca-trick prima di domani. Ho sempre usato NotesDatabase.GetProfileDocCollection come questo ...
impostare newDc db.Getprofiledoccollection = ("__NEWDC__")
Mi chiedo ... che è più veloce. Sto pensando è vostra in quanto GetProfileDocCollection deve ancora eseguire una ricerca.