Autor Thema: NotesDocumentCollection  (Gelesen 2641 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
NotesDocumentCollection
« am: 08.12.06 - 11:03:22 »
Hallo ich mal wieder,

Heute mit ganz  neuen Problemstellung. Ich habe hier folgenden Code :

Code

Dim colSearch as NotesDocumentCollection
Dim forCollection as NotesDocumentCollection

Set colSearch = dbDocHouse.AllDocuments
Call colSearch.FTSearch("form",0)


Bis jetzt alles ganz easy und es funktioniert. (Was mich auch schon gewundert :D)

So nun erstmal die Erklärung bevor ich den Code Präsentiere. Ich habe eine Schleife die immer wieder mit einer Collection arbeiten soll. Ich will aber diese Collection nicht in jedem Durchlauf neu zusammenstellen. Stichwort Laufzeit.

Code
Set forCollection = collection

So dachte ich, dass ich quasi eine Konstante habe die sich nicht verändert und ich einfach nach jedem Durchlauf die forCollection mit den Werten fülle. Nun wende ich im Verlauf ein FTSearch auf die forCollection an. Aber das Ergebnis der wird auch auf die colSearch angewendet. Grosse Frage warum. Sind die Dinger mit der Zeile nun gekoppelt? Wenn ja wie kann ich das umgehen ?

Danke schonmal
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: NotesDocumentCollection
« Antwort #1 am: 08.12.06 - 11:13:45 »
Tja, da sind wir wieder mal beim Thema "POINTER".
Mit dem SET machst setzt Du nur den Pointer von colSearch zu forCollection oder was auch immer.
=> die Beiden Collections zeigen nach dem SET auf die gleiche Datenmenge => Du machst keine Kopie der Collection sondern nur der "Pointer".
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: NotesDocumentCollection
« Antwort #2 am: 08.12.06 - 11:18:21 »
Hmm Pointer ???? kenne ich nicht. Soll es in C gegeben haben. Aber wenn ich die Dokumente alle in die andere Collection kopiert brauche ich ja genauso lange, oder ?
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: NotesDocumentCollection
« Antwort #3 am: 08.12.06 - 11:32:25 »
Vielleicht sagt Dir copy by Reference oder Copy by Value was oder vielleicht auch Deep Copy, naja egal.

Auf jedenfall würde ich mal die Performance einsparungen ignorieren und zuerst schauen das Dein Code funktioniert.
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: NotesDocumentCollection
« Antwort #4 am: 08.12.06 - 12:10:57 »
Um die Daten/Dokumente in einer Collection in eine andere Collection zu übertragen/kopieren, musst Du folgende Methode verwenden:

Code
Call notesDocumentCollection.AddDocument( document [, checkDups ] )

Dabei musst Du mit einer Schleife alle Dokumente verarbeiten, was natürlich KEINE Performanceverbesserung bedeutet!!

Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: NotesDocumentCollection
« Antwort #5 am: 13.12.06 - 10:22:53 »
mal ne blöde Frage: Was machst Du mit der Collection, dass die nach jedem Durchlauf "anders" aussieht, bzw nicht mehr so wie vor dem Durchlauf !?

Entfernst Du Dokumente ? Machst Du einen dc.Search um die Collection zu verkleinern ?

Was verursacht die Veränderung der Collection ?
Vielleicht kannst Du ja hier ansetzen.

Eine andere Möglichkeit wäre natürlich die Collection "zwischenzulagern" z.B. in einem Ordner:

call dc.PutAllInFolder( "collectionContainer" )
(vorher nicht vergessen den Folder zu leeren über NotesView.Allentries.RemoveFromFolder)

dann kannst Du über Folder.AllEntries die Collection relativ Performant immer wieder zurückholen, wenn Du sie brauchst.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Re: NotesDocumentCollection
« Antwort #6 am: 13.12.06 - 23:18:14 »
Die Zwischenlagerung in einem Ordner ist aber nur brauchbar solange sichergestellt ist dass nur ein User diese Datenbank verwendet, ansonsten gibt das nur noch Chaos wenn sich die Anwender gegenseitig den Ordner verwüsten.....
ATOS.org - Feel the music!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesDocumentCollection
« Antwort #7 am: 13.12.06 - 23:50:16 »
Ich gehe mal davon aus, dass er natürlich persönliche Ordner meint. Man kann ja nie davon ausgehen, dass nur ein User gleichzeitig mit der Aktion zu Gange ist - wenn dem heute so ist, kann es morgen gnaz anders sein (aber dann erinnert sich keiner mehr an den früher programmierten Schrott).

Bernhard

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: NotesDocumentCollection
« Antwort #8 am: 14.12.06 - 09:49:32 »
@Tode

Naja ich stelle ein Collection aus allen Dolumenten auf die in der VollTextindizierten DB sind und fange dann an mit db.FTsearch an zu "filtern".

Diese Such er erfolgt nach meheren Kriterien, wenn das erste Kriterium keine Ergebnis liefert, setze ich mit dem 2. Kriterium an und das geht bis zum 6. Kriterium weiter, dafür brauche ich aber immer wieder eine neue saubere Collection.

@Pyewacket + koehlerbv

also die Sache mit den Ordner wird wohl eher nichts, da es später mehere Leute nutzen sollen.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: NotesDocumentCollection
« Antwort #9 am: 15.12.06 - 18:11:51 »
ääää.... warum verwendest Du denn überhaupt eine "zwischenspeicherungscollection", wenn Du sowieso immer auf AllDocuments gehst !?

Wenn jede Deiner 6 Kriterien UNABHÄNGIG sind (also nicht aufeinander aufbauen), und das impliziert Dein Satz "wenn das erste Kriterium kein Ergebnis liefert, setze ich mit dem 2. Kriterium an"

dann kannst Du doch ganz einfach sagen:

Set dc = db.FTSearch( .. )

Dann sparst Du Dir das zeitraubende Aufbauen der db.AllDocuments.

Möglicherweise wird dann der FTSearch etwas langsamer (weil er auf eine Datenbank geht und nicht auf eine Collection im Speicher), aber einen Tod muss man sterben.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz