Autor Thema: NotesDocumentCollection "kopieren"  (Gelesen 5538 mal)

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
NotesDocumentCollection "kopieren"
« am: 25.11.04 - 22:09:50 »
Hallo,

ist es möglich ein NotesDocumentCollection zu kopieren?! Ich habe zwei Kollektionen col1 und col2, wenn ich col2 mit "SET" die col1 zuweise (Set col2 = col1), dann wird nur der Verweis umgesetzt. Heißt also, wenn ich Dokumente aus col2 lösche, dann sind die auch nicht mehr in col1 vorhanden.

Gibt es eine Möglichkeit das zu umgehen? Sozusagen einen Parameter für den Befehl "SET"?

Danke schonmal!
« Letzte Änderung: 26.11.04 - 00:57:35 von Onkel Domino »
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #1 am: 25.11.04 - 22:13:02 »
Was meinst Du genau mit "löschen"?
Dokument löschen oder aus der Collection entfernen?

Vielleicht hilft ein Aufruf "Call by Value" in einer Sub:
Sub Wasweissich( Byval col1 as NotesDocumentColletion)

Andreas
« Letzte Änderung: 25.11.04 - 22:14:38 von Glombi »

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: NotesDocumentCollection "kopieren"
« Antwort #2 am: 25.11.04 - 22:13:30 »
Hi,

kleine Nachfrage:
Wie löscht Du die Dokumente aus der Collection? Call doc.Remove(True) ?
Dann ist das Dokument natürlich nicht mehr verfügbar, ist ja komplett aus der DB dadurch gelöscht.


Michael

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #3 am: 25.11.04 - 22:20:28 »
Sorry, hatte ich vergessen: mit löschen meine ich die Methode "Delete" aus der DocumentCollection. Also nur aus der Collection, nicht aus der DB löschen!

@Andreas:
Gute Idee mit der Sub! Kam mir auch schon in den Sinn, dachte nur vielleicht gibt es bereits Bordmittelchen, die die "Call by Reference"-Eigenschaften von "SET" umgehen.
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #4 am: 25.11.04 - 22:23:08 »
Das wäre mir neu...
aber vielleicht wissen die OO Superschlauen mehr  ;D

Andreas

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #5 am: 25.11.04 - 22:27:56 »
Zur Not muss ich mal im Zentrum der Gruppenarbeitskompetenzen nachfragen  ;)
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #6 am: 25.11.04 - 22:30:30 »
Ein Competence Center in der Hinterhand zu haben, ist immer gut  ;D

Andreas

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #7 am: 25.11.04 - 22:46:36 »
Hey Andreas,

ich muss nochmal in diesem Competence Center nerven:

---schnipp---
Function CopyCollection(Byval col As NotesDocumentCollection) As NotesDocumentCollection
   Set CopyCollection = col
End Function
---schnipp---

Wirft eine Fehlermeldung :-(

Illegal pass by value: COL or missing CALL keyword

Ist 'ByVal' denn überhaupt verträglich mit einer NDC? Sieht nicht so rosig aus...
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #8 am: 25.11.04 - 22:53:06 »
Du musst Variant verwenden:

  Function CopyCollection(Byval col As Variant) As NotesDocumentCollection

sonst meckert der Interpretor zurecht.

Andreas


Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #9 am: 25.11.04 - 22:54:33 »
Hurra, er hat's geschluckt.

Vielen Dank!
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #10 am: 25.11.04 - 22:55:41 »
Es geht aber trotzdem nicht, habe es eben schnell mal getestet: Wenn Du ein Dokument aus der Collection entfernst, ist es auch aus der ursprünglichen draussen.
Irgendwie nicht so im Sinne des Erfinders des ByVal, oder?

Andreas

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #11 am: 25.11.04 - 23:16:12 »
Kann mir auch nicht vorstellen, dass das so gewollt ist. Dann müssen eben viele, viele db.Search's laufen (hoffentlich liest es Bernhard nicht, (http://www.atnotes.de/index.php?topic=19604.msg121435#msg121435) ;) )

Danke vielmals für's Helfen und Testen!!!
« Letzte Änderung: 25.11.04 - 23:19:18 von Onkel Domino »
There are only 10 types of people in the world: Those who understand binary and those who don't.

Glombi

  • Gast
Re: NotesDocumentCollection "kopieren"
« Antwort #12 am: 25.11.04 - 23:25:12 »
Ich weiß nicht, was Du eigentlich vorhast. Aber vielleicht kannst Du ja mit einer leeren Colllection anfagen und dann mit AddDocument die Dokumente hinzufügen.

Eine leere Collection gibt es ja nicht, d.h. du musst dir eine per pseudo Elemente aufbauen.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesDocumentCollection "kopieren"
« Antwort #13 am: 25.11.04 - 23:38:49 »
Bernhard liest alles  ;D  Wenn er Zeit hat ... Das Forum ist einfach spannend, und ich lerne hier ja auch ständig dazu.

Ein Objekt kann man prinzipiell nicht ByVal übergeben - wie auch. Das Objekt ist ein Objekt ist ein Objekt ...

Ich glaube, das beste wäre, wenn Du mal folgendes aufmalst:
Was willst Du eigentlich erreichen ?
Warum arbeitest Du nicht mit dem FTI ?

Der Aufbau einer Kopie der NotesDocumentCollection wie von Andreas beschrieben geht (ausser bei Bummi-DBs) allemal schneller als vielfache NotesDatabase.Searchs. Ärgert auch den Server und die Bandbreite nicht so sehr  ;D

Vielleicht geht die Erreichung Deines Ziels ja aber auch ganz anders.

Gespannt,
Bernhard

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #14 am: 25.11.04 - 23:43:28 »
Die Sache ist recht kompliziert. Ich habe mir einen Excel Export gebastelt und ich brauche die Eigenschaft "Count" der NDC um Überschriften über die exportierten Daten zu setzen. Immer wenn NDC.Count = 0 ist, wird drei Zeilen weitergesprungen und es gibt eine neue Überschrift. Danach geht die NDS nochmal nach anderen Kriterien durch eine Schleife. Nach diesen drei Zeilen brauche ich dann wieder die komplette NDC und nicht die reduzierte. Deshalb meine erste Frage, wie ich NDC's kopieren kann. Bisher läuft dann jedesmal wieder ein db.Search....

Aber egal.

Eine NDC mit AddDocument aufzubauen wäre ideal. Ich hatte mal am Anfang damit rumgespielt, es aber dann aus den von Dir genannten Gründen verworfen (keine leere Collection).

Wie mache ich das mit den "Pseudo Elementen" am geschicktesten? Hast Du vielleicht noch irgendow einen Code-Schnippsel für mich rumliegen?!
There are only 10 types of people in the world: Those who understand binary and those who don't.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesDocumentCollection "kopieren"
« Antwort #15 am: 25.11.04 - 23:53:17 »
Wo "reduziert" sich denn überhaupt die NotesDocumentCollection ? Das ist mir irgendwie noch sehr unklar.

Leere Collection: Es führen viele "Wege nach Rom". Eine generell leere Ansicht, ein NotesDatabase.Search (!!!) mit einem (sicherheitshalber unsinnigen Key und) eine COD in ferner Zukunft (das geht wegen des COD dann wirklich sehr fix) und ...

Aber wie gesagt: Wie ändert sich während der Routine Deine NotesDocumentCollection ?

Bernhard

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #16 am: 26.11.04 - 00:00:41 »
Hi Bernhard,

ist es Dir also nicht entgangen?!  8)

Ich werd' nochmal eine Skizze machen. Du hast mein Vorhaben aus dem letzten Thread ja schon etwas mitbekommen. Ich versuche es so einfach wie möglich zu halten:

- eine DB die u.a. Rechnungsdokumente enthält
- an den Rechnungen sind ggfs. Mitarbeiter beteiligt, die Provision bekommen
- es soll eine monatliche Provisionsübersicht erstellt werden (Excel)

Mein Vorgehen bis jetzt:
- habe alle Mitarbeiter in ein enges Array gequetscht (hoffentlich liest kein Betriebsrat mit)
- habe mir alle Rechnungen aus der Datenbank geholt
- nun nehme ich mir den ersten MA und schaue, ob er an der ersten Rechnung beteiligt ist
  - wenn nicht: Dok aus NDC löschen
  - wenn ja: Dok behalten
    - solange, bis ich durch alle Rechnungen durch bin
     - an dieser Stelle habe ich alle Dokumente des betreffenden MA's
     - Excel Datei die mittlerweile erstellt wurde bekommt in die Startzeile Namen des MA's
     - dann kommen die Spaltenüberschriften in Excel (Rg-Nr, Datum, etc) ... solange bis NDC.Count = 0
     - jetzt wird nach Rechnungsnummer sortiert und die Summe gebildet, danach ein paar Leerzeilen

  --> an dieser Stelle brauche ich wieder ALLE Rechnungen um sie nach dem nächsten MA im Array aussortieren zu können....und das ist leider bis jetzt noch db.Search


Warum ich keinen FT und eine nach MA kategorisierte View (wegen view.GetAllDocumentsByKEY()) verwende: der Abrechnungszeitraum muss variabel sein. Das krieg ich mit einer View nicht hin und FTSearch gibt mir nur die Möglichkeite Dok's NACH einem bestimmten Datum zu suchen; nicht aber eines bestimmten Zeitraums :-(

Ich habe überlegt, ansatt die Dokumente rauszuwerfen eine IF-Abfragen ob Array(x) = doc.Sachbearbeiter(0), aber dann sehe ich keine Möglichkeit die Spaltenüberschriften in Excel richtig zu setzen. Ich weiß ja nicht, ob das aktuelle Dokument das Letzte ist.

Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken.
« Letzte Änderung: 26.11.04 - 00:07:02 von Onkel Domino »
There are only 10 types of people in the world: Those who understand binary and those who don't.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesDocumentCollection "kopieren"
« Antwort #17 am: 26.11.04 - 00:06:39 »
He, das mit dem "nicht entgangen" sollte schon weiter oben klar geworden sein (23:38)  ;D

Gib' mir noch einen kleinen Moment ...

Bernhard

Offline Onkel Domino

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • Tue Gutes - und rede darüber!
Re: NotesDocumentCollection "kopieren"
« Antwort #18 am: 26.11.04 - 00:07:55 »
Ja danke, um 23:38 Uhr war ich am Tippen wie ein Großer....  ;D
There are only 10 types of people in the world: Those who understand binary and those who don't.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: NotesDocumentCollection "kopieren"
« Antwort #19 am: 26.11.04 - 00:17:56 »
Zunächst folgendes:
NotesDatabase.Search geht für einen solchen Zweck wie diesen natürlich. Das läuft dann ja dauernd  :)
FTSearch ermöglichst dieses aber genauso. Aber wie gesagt: Wozu (in diesem Falle).

A-Bär: Warum wirfst Du denn Dokumente aus der Collection ? Du kannst sie doch jedesmal erneut scannen und dann nur jeweils mit den zutreffenden weiterarbeiten ? Notfalls (um den Code nicht grundlegend ändern zu müssen) könntest Du Dir doch jeweils auch ein Array mit den UNIDs der Docs aus der Collection anlegen, in der der Mitarbeiter beteiligt ist. Dein NotesDocument.Collection.Count kriegst Du ja auch so (oder noch bequemer beim Scannen, indem Du jedesmal vorher eine boolesche Variable auf "True" (Default: False) setzt, wenn Du einen Treffer hast.

Dein Ansatz ist zu kompliziert (oder zu einfach - wie man es nimmt), scheint mir. Das geht alles viel einfacher.
Oder eleganter: Bau' Dir eine List und packe dort in einem ersten Scan alle Beteiligten 'rein. Elegant deshalb, da Du Dich um Doppler nicht kümmern musst. Im eigentlichen Excel-Export arbeitest Du dann Deine Collection an Hand der List ab.

Es führen immer viele Wege nach Rom.

Good luck,
Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz