Domino 9 und frühere Versionen > Entwicklung
"Unique" für DocumentCollection
Axel:
Hi,
heute will ich auch mal ein Problem haben. Ein etwas kniffliges sogar.
Ich brauche eine Aktion, die Dokumente anlegt. Sollte ja nicht so schwer sein. ;D
Aber nu kommts. In der Aktion gehe ich auf eine DocumentCollection aus markierten Dokumenten. In diesen Dokumenten ist ein Feld mit einer DocID enthalten. Da liegt jetzt der Hase im Pfeffer. Es kann nämlich sein, dass in der Collection mehrere Dokumente mit der gleichen DocID vorhanden sind. Diese mehrfach vorhandenen Dokumente sollen, bevor ich die neuen Dokumente anlege aus der Collection gelöscht werden.
Wie kann ich sowas realisieren? Möglichst performant natürlich (was denn sonst) ?
Hat da jemand eine Idee?
Axel
Meff:
Wenn Du das Dokument hast, dann hast Du ja auch die DocId, erstelle doch dann einfach eine neue, prüfe ob der Collection.Count grösser 1 ist und lösche das entsprechende. Die Frage ist, was passiert mit Deiner Collection im Anschluß? Da kann dann ja eines fehlen. Wichtig ist dann eigentlich nur, dass Du nicht mittels GetNthDocument durch die Collection läufst, sondern mittels GetFirst - GetNextDocument, dann sollte der Count der Collection eigentlich unwichtig sein.
Meff
animate:
geht es dir darum, die Collection z ubereinigen oder nur keine doppelten Dokumente anzulegen?
bei ersterem find ich die idee meines Vorredners ziemlich cool.
beim zweiten könntest du evtl. die Dokumente in der Collection in einen Ordner verschieben, der nach diesem DocID-Feld sortiert ist und dann halt den Ordner zum Navigieren zu benutzen und dabei immer die DocID des aktuelllen mit der des vorhergehenden Dokuments zu vergleichen
eknori:
Ich würde es folgendermaßen machen:
collection erzeugen
collection document für doc durchgehen
existiert die DocID in der Zieldatenbank ? wenn nei , neues doc erzeugen, ( Prüfung über GetDocumnetByKey )
wenn ja, weiter zum nächsten doc in der collection
pseudocode:
GetCollection
For i% = 0 to collection count
if GetDocumentByKey(DocID) = false
create NewDoc
end if
next Doc ( Collection )
eknori
Axel:
Hi,
erstmal vielen Dank für die Tipps. Ich bin mir aber nicht ganz sicher, ob es mich wirklich weiter bringt. Ich glaube ich muss das noch ein bisschen genauer erklären.
Die Dokumente sind Vorgangsdokumente und das Feld mit der DocID ist die Verknüpfung zu dem dazugehörigen Adressdokument (liegt in einer anderen DB).
Der User markiert nun ein oder mehrere Vorgangsdokumente, um weitere Vorgänge anzulegen. Dabei kann es aber vorkommen das in den markierten Dokumenten (sind in der Collection) mehrere Docs zur gleichen Adresse (also DocID) vorhanden sind. Diese doppelten muß ich herausfiltern.
Dann gehe ich die Collection durch und hole mir die DocID und lege die Vorgänge an.
Ich weiß, das hört sich etwas kompliziert an, aber die User wollen aus allen möglichen und unmöglichen Lagen (sprich Ansichten und Dokumenten) solche Vorgangsdokumente anlegen.
Ich bin an einer Lösung, bin aber noch nicht sicher ob's funktioniert. Wenn ja, informiere ich euch und stelle den Code rein.
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln