Quick-n-Dirty: Leeres NotesDocumentCollection-Objekt instanzieren

EDIT:

Tja, da habe ich wohl nicht aufgepasst! Die Funktionalität gibt es schon:

database.createDocumentCollection()

Schade, daß man bei den XSnippets Code nicht mehr entfernen kann.

 

Domino bietet Out-of-the-Box leider keine Möglichkeit, ein leeres NotesDocumentCollection-Objekt zu instanzieren. Um trotzdem in den Genuss zu kommen, mit einer leeren NotesDocumentCollection arbeiten zu können, ist der schnellste Weg, einfach alle Dokumente der Datenbank zu verwenden und von sich selbst „abzuziehen“.

In SSJS sieht das wie folgt aus:

/*****
 *** getEmptyDocumentCollection()
  *** returns an empty NotesDocumentCollection-Object  
 *****/
 function getEmptyDocumentCollection(){
    var dc:NotesDocumentCollection = null;
    try{
       dc = database.getAllDocuments();
       dc.subtract( database.getAllDocuments() );
    }catch(e){}
    return dc; }

 /*** how to use ***/
 var hlpDC:NotesDocumentCollection = getEmptyDocumentCollection();
 var hlpDoc:NotesDocument =  database.getAllDocuments().getFirstDocument();
 hlpDC.addDocument ( hlpDoc )
 hlpDC.getCount();

Die gleiche Funktionalität sieht in LotusScript wie folgt aus:

%REM
 Function getEmptyDocumentCollection
     Description: Returns an empty document collection
     Created Nov 28, 2011 by Sven Hasselbach
 %END REM
 Function getEmptyDocumentCollection() As NotesDocumentCollection
          On Error GoTo errH
          Dim session As New NotesSession
          Dim db As NotesDatabase
          Dim dc As NotesDocumentCollection
          Set db = session.Currentdatabase
          Set dc = db.Alldocuments
          dc.Subtract db.Alldocuments
          Set getEmptyDocumentCollection = dc
 the_end:
          Exit Function
 errH:
          Print "getEmptyDocumentCollection() - Error #" & Err & _ ": '" & Error & "' @ Line " & Erl
 Resume the_end
 End Function

Und schon hat man eine leere NotesDocumentCollection, der man nach Belieben arbeiten kann!

Dieser Beitrag wurde unter Java Script, Lotus Script, ServerSide JavaScript, XPages abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu Quick-n-Dirty: Leeres NotesDocumentCollection-Objekt instanzieren

  1. Hallo Sven,
    seit Lotus Notes 8 gibt es in Lotus Script einen undokumentierten Befehl

    Set NotesDocumentCollection = NotesDatabase.CreateDocumentCollection

    um eine leere NotesDocumentCollection zu erzeugen.
    Grüße
    Alexander

  2. Hallo Alexander,

    stimmt, kann aber auch Probleme bereiten, siehe hier: Creating an empty NotesDocumentCollection can crash Domino

    Viele Grüße
    Sven

  3. Stephane Cerda sagt:

    Hello Sven,

    I found your XSnippet relative to this blog entry, and I usally do something like this to get an empty document collection :

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Set db = session.Currentdatabase
    Set dc = db.getProfileDocumentCollection("DummyCollectionNameThatDoNotExistsInDatabase")

    Much more simple in my opinion 🙂
    Thx anyway for sharing code in XSnippets
    Stéphane

Schreibe einen Kommentar zu Sven Hasselbach Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.