Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Centaury am 24.07.03 - 07:40:18

Titel: Collection selbst zusammenstellen?
Beitrag von: Centaury am 24.07.03 - 07:40:18
Hallo!
Kann man eigentlich eine Collection selbst zusammen stellen, also eine leere erzeugen und ihr dann Dokumente übergeben? Das Dokumente übergeben bzw. anhängen ist kein Problem, aber wie kann ich eine neue überhaupt erzeugen? New gibt's ja nicht....
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Glombi am 24.07.03 - 09:07:12
Hi,
Du müsstest anfangs die Collection aufbauen, in dem Du bspw. ein
db.Search(...)
macht und als Suchstring etwas definiert, das nur ein (Dummy-)Dokument liefert.
Dann kann Du Dokumente zu Collection hinzufügen mit
Call notesDocumentCollection.AddDocument(document)

und das Dummy wieder aus der Collection entfernen
Call notesDocumentCollection.DeleteDocument(notesdocument)
(löscht das Dokument nicht! nimmt es nur aus der collection)

Andreas
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Centaury am 24.07.03 - 09:47:40
Gibt es einen Grund, warum so ein Umweg nötig ist? (rein interessehalber)
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Meff am 24.07.03 - 11:38:01
Ähhh, verzeih mir, bei der Frage stehe ich jetzt etwas auf dem Schlauch. Du willst eine Document Collection erstellen, wo ist da das Problem:

dim session as new NotesSession
dim curDb as NotesDatabase
dim collection as NotesDocumentCollection
dim i as integer
dim doc as NotesDocument

set curDb = session.CurrentDatabase
set collection = curDb.Alldocuments

for i = 1 to collection.Count
set doc = collection.GetNthDocument(i)
next

Meff
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Glombi am 24.07.03 - 11:45:32
Hi Meff, Centaury will eine Collection machen, in der erstmal keine Doks stehen und dann sukzessive welche hinzufügen - so habe ich das jedenfalls verstanden.
Daher vermisst er was wie
set dc = New NotesDocumentCollecion
Das New gibt es halt seitens Notes nicht. Dazu war die dc ursprünglich ja auch nicht gedacht. Es ist wie immer: Man programmiert die tollsten Dinge, und dann kommen die User: "Was das geht nicht?" "Warum ist das so und nicht anders?" ;D

Andreas
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Centaury am 24.07.03 - 13:22:41
Ja, genau so war das gemeint....
Mich wundert es nur...
Die Dinger heißen schließlich "Klassen", also sollten man mit New Objekte erzeugen können...oder?  ???
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Centaury am 24.07.03 - 13:48:18
Ach ja, btw: Hat funktioniert. Ich habe letztendlich eine Volltextsuche nach einem Maskennamen gemacht und nur ein Ergebnis zugelassen. Dann habe ich das Dokument wieder entfernt und schon hat man eine leere Collection.
Den Maskennamen hab ich verwendet, damit ich nicht von einem Dokument abhängig bin. Von dieser Maske werden immer Dokumente in der Datenbank stehen.

Danke!
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Glombi am 24.07.03 - 14:13:15
@Centaury: Wegen des Konstruktors "New". Da müssten wir mal die OO Experten hier im Forum befragen, ob nach der reinen Lehre der OO immer ein Constructor namens "New" existieren muss.

In LotusScript ist das jedenfalls nicht so:
In the definition for a user-defined class, you can include a definition for the constructor sub, named New. If the definition exists, LotusScript calls this sub whenever it creates an object from that class. LotusScript calls the sub immediately after creating the object.

Andreas
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Centaury am 24.07.03 - 14:29:06
@Glombi
Das hört sich schon recht objektorientiert an....
Ich bin halt noch nicht soo lange dabei und bin darüber verblüfft gestolpert...
Aber so geht's ja auch :)
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Till_21 am 24.07.03 - 15:39:54
warum macht ihr euch die muehe und sucht euch eine select formel, die EIN dokument zurueckgibt und entfernt dieses muehselig ?
warum nicht db.search(|select form="fcbgdiaowgfidagvsbfjlda"


 ;D ;D

gruss
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Glombi am 24.07.03 - 15:51:22
War mir nicht sicher, ob dann evtl. dc = Nothing oder sowas ist. Aber klar, Du hast recht.

set dc = db.Search(|Form = "Gibt es nicht"|,Nothing,0)

Andreas
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: Ralf_M_Petter am 25.07.03 - 08:38:55
Es ist nicht zwingend vorgeschrieben, dass es einen öffentlichen Konstruktor geben muss. Aber es sollte dann andere Methoden geben um zu einem Objekt zu kommen.

Grüße

Ralf
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: koehlerbv am 25.07.03 - 18:35:57
Das bisher beschrieben Procedere zum Erzeugen einer leeren NotesDocumentCollection funktioniert schon, aber ...

Auch ein NotesDatabase.Search ("Das gibt es sowieso nicht") führt bei grossen Datenmengen zu einem Performance-Problem.
Günstiger erscheint mit folgendes:

NotesDocumentCollection = NotesUIView.AllDocuments. Diese Methode aus NotesUIView wirkt nur in speziellen Events und führt erstaunlicherweise ohne Fehlermeldung zu einer leeren NotesDocumentCollection - ohne Performance-Verlust.

HTH,
Bernhard
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: LordMacBee am 28.07.03 - 13:18:54
wo kann man das denn brauchen und wann nicht?
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: ata am 28.07.03 - 20:50:20
... Bernhard hat das natürlich gleich am wunden Punkt erwischt, deshalb mache ich das mit einem Dummy-Profildokument, das nur für diesen Zweck erstellt wird...

Code
   Dim session As New NotesSession
   Dim dbThis As NotesDatabase
   Dim dummy As NotesDocument
   Dim dc As NotesDocumentCollection
   
   Set dbThis = session.CurrentDatabase
   
   Set dummy = dbThis.GetProfileDocument( "Dummy" )
   Set dc = dbThis.GetProfileDocCollection( "Dummy" )
   Call dc.RemoveAll( True )
   ' # ... die Collection ist nun leer...

@LordMacBee
... das kann man brauchen, um während einer Auswertung Dokumente in einer Collection zu sammeln. Eine Collection hat keine Array-Grenze - zudem kann man in einer Collection gut navigieren...

... zum Beispiel um Dokumente zu sortieren...

ata
Titel: Re:Collection selbst zusammenstellen?
Beitrag von: LordMacBee am 29.07.03 - 10:04:04
@ATA

Das meinte ich nicht. Ich wollte nur wissen, wann man sich die collection über die uiview zusammenstellen kann, resp. welches denn die angetönten events sind, bei denen man wirklich was zurückkriegt.

Meinereiner Loopt die ganze Zeit durch collections, resp stellt sich die selber zusammen, weil sich die *ZENSIERT*- Dinger ja nicht anders sortieren lassen.