Domino 9 und frühere Versionen > ND7: Entwicklung

$UpdatedBy enthält falsche Werte

<< < (2/2)

koehlerbv:
Da habe ich jetzt auch wieder was dazugelernt  ;)
Auch wer hier scheinbar nur antwortet, lernt sehr viel dazu. AtNotes mit seiner Gemeinschaft ist schon toll!

Ein Satz aber noch zu CopyAllItems:
Ich habe ab und an an den Fall, dass ich auch nicht weiss, was irgendwann evtl. noch in einem NotesDocument an zu kopierenden Items dazu kommt. Wenn ich dann aber CopyItem brauche, schreibe ich eine Ausschliessliste, weil ich anders herum weiss, was ich nicht gebrauchen kann.
In den üblichen Fällen ist dann aber Rolands Lösung auf jeden Fall die erste Wahl!

Danke an alle,
Bernhard

pram:
Für das ist ein Forum da, ich hab heute gelernt, wie man Objekte zwischen View und Form austauscht, was ich bis jetzt für unmöglich hielt http://atnotes.de/index.php/topic,53263.0.html (wenngleich ich das auch für einen sehr übelen Hack halte  :o )

Zum Kopieren von Items noch ein paar Worte:
MustCopy entscheidet pro Item ob es kopiert werden soll.

Erster (falscher) Ansatz

--- Code: ---dim item as NotesItem
forall vItem in doc1.Items
    set item = vItem ' typisieren
    if mustcopy(item.name) then doc2.copyItem(item, "")
end forall

--- Ende Code ---
Das kracht aber unter bestimmten Konstellationen ($File Items, Mime Items etc)

Weitaus besserer Ansatz:

--- Code: ---dim item as NotesItem
set doc2 = new NotesDocumen(db)
call doc1.copyAllItems(doc2, false) ' da doc2 leer ist, sollte man replace=false setzen, da dies dann etwas schneller ist
forall vItem in doc2.Items
    set item = vItem ' typisieren
    if not mustcopy(item.name) then call item.remove() ' alle nichtbenötigten Items löschen
end forall
call doc2.save(false,false)

--- Ende Code ---

Will man Dokumente updaten ohne dass man vorhandene Felder behält, so braucht man 3 Dokumente:
Quelldokument, TempDokument, ZielDokument
1. Quelldokument in Tempdokument kopieren (Tempdoc wird nie gespeichert)
2. aus Tempdokument alle nicht benötigten Items entfernen
3. Tempdokument in Zieldokument kopieren und speichern (hier replace=true setzen)

Damit sollte sich auch ein $updatedBy-Problem lösen lassen (und wenn ich so überlege, ist dies evtl sogar noch sauberer, als mit dem saveToDisk-Flag)

Gruß
Roland

Demian:
Also Löschen des Feldes hatte ich ja auch schon versucht (siehe oben), das klappte leider nur laut Debugger wunderbar. Das letzlich gespeicherte Dok, hatte wieder das UpdatedBy Feld (was ja auch richtig ist, da die DB so eingestellt ist), jedoch mit den Werten des eigentlich gelöschten UpdatedBy Felds.

Ne Routine in der ich je nach Feldname unterscheide ob kopieren oder nicht, halte ich auf Dauer mit eventuell dazu kommenden Funktionen für eher unübersichtlich. So gehe ich an allen Stellen hin, kopiere immer alle Items, und ändere/lösche dann für diese Routine relevanten Items.

Für mich ist die Lösung mit dem SaveToDisk eigentlich optimal. Kurz und funktionell.  ;D

Gruß
Demian

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln