Autor Thema: $UpdatedBy enthält falsche Werte  (Gelesen 6377 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
$UpdatedBy enthält falsche Werte
« am: 15.12.11 - 17:09:02 »
Moin zusammen,

zu dem Thema $UpdatedBy habe ich mir hier schon einige Beiträge durchgelesen und einiges probiert, leider ohne Erfolg.

Folgende Situation:

Aus einem Dokument XY sollen per Aktion 99 weitere Dokumente erstellt werden, die bis auf ein Feld (ID) identisch sind.

Ich gehe also her und kopiere das gewählte Dokument 99 mal und ergänze das Feld ID jeweils um die Zahlen 01-99. Leider wird auch das Feld $UpdatedBy im Gegenzug zu $Revisions mitkopiert. Dadurch stimmt der Inhalt des Feldes $UpdatedBy in den 99 Dokumenten natürlich nicht.

Meine Idee war, einfach das Feld $UpdatedBy nach dem Kopieren zu löschen. Laut Debugger funktioniert das auch wunderprächtig. Lasse ich mir dann die Eigenschaften der erstellten Doks anzeigen, stelle ich jedoch fest, dass das Feld wieder drin ist, samt altem/falschen Inhalt.

Welche Möglichkeiten habe ich, dass bei den erstellten Dokumenten nur dessen Name in $UpdatedBy steht, der die Dokumente auch erstellt hat?

Gruß
Demian

« Letzte Änderung: 15.12.11 - 20:09:40 von Demian »
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: $UpdatedBy enthält falsche Werte
« Antwort #1 am: 15.12.11 - 17:13:08 »
$UpdatedBy kannst Du nicht beeinflussen (das wird sogar via API schwierig).

Dein Problem ist das CopyToDatabase. Und dass dann $UpdatedBy mirgenommen wird (und andere wichtige Sachen! Z.B. die UniversalID, sofern möglich) ist auch gut so und der Sinn von CopyToDatabase.

Ein neues Dokument und CopyAllItems sollte tun (habe ich länger nicht gemacht, sorry). Ansonsten musst Du per Loop alle Items einzeln kopieren, die Du haben willst.

Bernhard

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: $UpdatedBy enthält falsche Werte
« Antwort #2 am: 15.12.11 - 19:28:57 »
Was auch manchmal geht, ist das savetodisk flag auf false zu setzen.
Klappt zumindest um bei doc.send das $mailassist Feld los zu werden.
Vielleicht klappts auch hier.


Gruß Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: $UpdatedBy enthält falsche Werte
« Antwort #3 am: 15.12.11 - 20:01:00 »
Dein Problem ist das CopyToDatabase.
Leider nicht. Das war mein erster Ansatz. Dann hatte ich einem Beitrag eben genau das von dir gelesen mit dem Kopieren der Items. Aber auch das geht leider nicht.

Ansonsten musst Du per Loop alle Items einzeln kopieren, die Du haben willst.

Und genau das möchte ich eigentlich vermeiden. Ist mir nämlich schnon passiert, dass ich nen neues Feld dazu genommen hab aber nicht drüber nachgedacht hab, das im Code auch beim Kopieren mit aufzunehmen.  ;D

Was auch manchmal geht, ist das savetodisk flag auf false zu setzen.

Das werd ich jetzt mal probieren. Vielen Dank euch beiden.  :)
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: $UpdatedBy enthält falsche Werte
« Antwort #4 am: 15.12.11 - 20:09:28 »
Was auch manchmal geht, ist das savetodisk flag auf false zu setzen.

Was soll ich sagen. Genau das wars.  :D

Jetzt erscheint im $UpdatedBy nur die Person, die das Dokument auch wirklich erstellt hat. Da muss man auch erstmal drauf kommen. Vielen, vielen Dank.

Gruß
Demian
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: $UpdatedBy enthält falsche Werte
« Antwort #5 am: 15.12.11 - 22:32:04 »
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

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: $UpdatedBy enthält falsche Werte
« Antwort #6 am: 15.12.11 - 23:10:55 »
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
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)

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
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: $UpdatedBy enthält falsche Werte
« Antwort #7 am: 15.12.11 - 23:25:31 »
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

Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz