gleiche IDs beim kopieren von Dokumenten

  • Hallo Miteinander,


    ich habe zufällig heute einen fatalen Fehler in meiner alten Applikation festgestellt und da ich schon länger nicht mehr im Code rumgefroscht habe, stellt sich mir nun die Frage was ich dagegen tun könnte.


    Ich habe eine Ansicht in der sind ganz viele Dokumente aufgelistet. Man kann die Dokumente oder ein Dokument kopieren, falls man die Struktur von dem Dokument in das neue übernehmen will.


    Wenn man ein vorhandenes Dokument kopiert, dann habe ich festgestellt, dass dann das neue Dokument die gleiche ID hat wie das alte.


    zb. ALT: WKRR-6RMHPQ
    NEU: WKRR-6RMHPQ


    Jetzt verhält es sich folgendermassen, sobald zb. einmal das alte Dokument gelöscht wird, dann wird auch das neue Dokument gelöscht, da ich quasi nach IDs lösche.


    Jetzt weiss ich nicht mehr genau weiter.


    Gibt es ne Möglichkeit, beim kopieren von Dokumenten immer eine neue ID zu generieren?


    Kann ich die doppelten IDs mit einem Tool editieren/neu generieren?


    Viele Grüsse
    Deny

  • Die ID ist eine selbsterzeugte ID, d.h. du musst beim Kopieren des Dokumentes die alte ID löschen bzw sie gleich neu vergeben.


    Wenn du das Feld löschst, in dem die ID steht, und das Feld ist Computed when Composed, dann wird dieses beim nächsten Speichern im Frontend neu erzeugt, also auch mit einer neuen ID.


    Das kannst du dann entweder über die Datenbank/Ansichtsereignisse (Query/Postpaste) machen, oder in dem das Kopieren nur bei Aktion möglich ist

  • Die "ID" sieht aus, wie mit @Unique berechnet?
    Beim Kopieren kannst du prüfen, ob diese ID bereits vorhanden ist und eine neue berechnen.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Richtig, die ID wurde mit @Unique berechnet. Ich kuck mal ob ich eine geeignete Abfrage noch aus dem Ärmel zaubern kann hehehehe lang lang isses her.


    Aber eure Vorschläge bringen mich schon weiter.

  • Warum machst du dir eine eigene ID?


    Jedes Dokument bekommt doch automatisch eine ID. Und ich habe das eben getestet, wenn ich ein Dokument kopiere, dann hat die Kopie auch eine neue ID.


    Die UniqueID eines Dokumentes kannst du dir über die Spaltenformel

    Code
    @Text(@DocumentUniqueID)

    in einer Ansicht anzeigen lassen. (Sie ist 32 Zeichen lang)

  • Na das hab ich damals gar nicht berücksichtigt, das hätte mir ja einiges an Arbeit erspart, wenn ich die DocumentUniqueID genommen hätte. Doppeltgemoppelt :)))


    Ohje dann werde ich mich mal wieder in die Welt des LotusScripts einarbeiten und das Ding mal wieder generalüberholen.


    Ich seh jetzt auch keinen entscheidenen Vorteil oder Beschluss warum ich mich für @Unique entschieden hatte. Evtl. weil ich es so in der Schulung gelernt habe *gggg*

  • Vielleicht auch deswegen, weil diese kürzere ID etwas anwenderfreundlicher ist.


    Der Vorteil ist vor allem, daß durch so eine ID diese fest im Dokument steht und auch nicht durch Reparaturaktionen oder Admin Kopieraktionen verändert wird.


    Bei Verwendung der UNID fallen nämlich alle Scripte auf die Nase wenn du das Dokument durch ein neues ersetzt, denn diese haben dann unterschiedliche IDs. Bei deiner Variante ist das nicht der Fall.

  • Um nicht noch mehr Fehler zu erzeugen, gehe ich wohl den Weg des @Unique weiter und im Postopen die Abfragen rein bzw. erstelle dort eine neue @Unique für das kopierte Dokument.


    Die Umstellung auf DocumentUniqueID würde vieles auf den Kopf stellen und Mehr-Arbeit bedeuten. (Die Bundesregierung würde sich freuen) ich aber nicht :))


    Ok ich probier das mal.


    Gibt es ne einfache Möglichkeit die @Unique erstellte ID irgendwie zu ändern habe einige Dokumente in der Ansicht die die gleiche ID haben und falls ich zufällig einen davon löschen sollte - so wären dann alle anderen auch weg. Es sei denn ich stelle den Löschvorgang auf DocumentUniqueID um, aber an den gleichen ID's würde es nichts ändern.

  • Beim Kopieren suchst du die ID und wenn du die findest, sammelst du alle IDs in einer Liste und verfütterst die an @Unique; so erhälst du garantiert einen eindeutigen Wert.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • servus,


    ich nochmal :)


    Ich mache mich gerade dran die mit @Unique erstellte ID beim kopieren in einer Ansicht, in das neue Dokument zu integrieren.


    Code
    Sub Postpaste(Source As Notesuiview) 	  Dim eval As Variant	 	  eval = Evaluate("@Unique", doc)  	  'Call doc.ReplaceItemValue("workID", eval) End Sub


    Das ist der Code der natürlich noch gar nichts macht, weder einfügen noch selektiert er das zu ändernde Feld.


    Ich würde gerne ein Dokument in dieser Ansicht kopieren, darauf soll es mir sofort im kopierten Dokument das Feld "workID" mit "eval" füllen.


    Leider ist das schon ne Weile her das ich das gemacht habe. Ich denke das einfügen geschieht damit.


    Code
    Call doc.ReplaceItemValue("workID", eval)


    Aber dafür muss ich doc noch definieren.


    Hat mir noch jemand ein paar Hinweise für die fehlenden Zeilen?

  • Servus,


    habe es jetzt so gelöst:



    Danke nochmals für eure Hilfe. ;)