AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
09.05.21 - 15:47:42
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Seltsames Verhalten: Items verschwinden beim Speichern
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Seltsames Verhalten: Items verschwinden beim Speichern  (Gelesen 403 mal)
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« am: 03.05.21 - 19:20:42 »

Ich kopiere mit Code gewählte Dokumente aus Datenbank 1 (dbSource) in Datenbank 2 (dbTarget). Diesen Code verwende ich schon seit Jahren in meiner Toolbar, um Dokumente aus Rücksicherungen zurückzukoppieren, aber in einer Umgebung kopiert der nur ca. 8.700 con 9.100 Dokumenten.
Dabei behalte ich die Universalid des Dokumentes bei.

Der Code:
Code:
Set docTarget = New NotesDocument( dbTarget )
docTarget.Universalid = doc.Universalid
Call doc.Copyallitems(docTarget, True)
Call docTarget.Save( True, True, True)

Im Debugger sieht man, dass nach CopyAllItems alle Items im Zieldokument vorhanden sind.
Nach docTarget.Save ist das Dokument aber plötzlich wieder leer: Keinerlei Items mehr drin...

Sowas habe ich noch nie gesehen...
Bei den Dokumenten handelt es sich -scheinbar- um normale Mails: Keine Leserfelder, keine Verschlüsselung, keine signierten Items, kein MIME, kein $KeepPrivate...

Hat irgendjemand eine Idee, woran sowas liegen könnte?
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Werner Götz
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 187



« Antworten #1 am: 04.05.21 - 07:35:48 »

Passiert das nur bei einem bestimmten Dokument?
Was passiert, wenn Du die UniversalID nicht setzt?

-Werner
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #2 am: 04.05.21 - 08:16:21 »

Es passiert -wie gesagt- bei 400 von 9.100 Dokumenten. Ich habe Tests mit einem Dokument gemacht, und ohne das setzen der UNID war es danach da... das ist aber für einen Synchronisationslauf etwas ungeschickt, wenn ich danach keinen "Unique identifier" mehr habe... Und das war auch nur ein Frontend- Lauf am Client...
Ich habe in einem anderen Versuch in einem Agenten das über GetDocumentByUnid() gefundene "No- Item- Dokument" gelöscht und nochmal neu gemacht: Danach erneut mit demselben Code angelegt: hat geklappt... Das Dokument war danach gültig.
Als ich diesen Code aber in einen Serverbasierten Agenten gepackt habe (selber Signer), dann ging das "reparieren" so plötzlich wieder nicht mehr...

Sehr seltsam das Ganze...

Wir haben jetzt rausgefunden: Die meisten Dokumente, die nicht kopiert werden können, produzieren ein "Element des Dokuments nicht gefunden" in der Statuszeile, wenn man sie im Client öffnet... Werde in dieser Hinsicht mal recherchieren: Optisch sehen die Dokumente normal aus...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Werner Götz
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 187



« Antworten #3 am: 04.05.21 - 08:26:17 »

Ich würde mal vermuten, dass die UNIDs irgendwie und warum auch immer "geblockt" sind.

Um das zu verifizieren:
Was passiert wenn Du die Wiederherstellung in eine andere / neue Datenbank machst?
Funktioniert es dann bei allen?

-Werner
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #4 am: 04.05.21 - 08:51:14 »

Wir haben 3 verschiedene Zieldatenbanken probiert: Immer die selben Dokumente fehlen... auch bei komplett neuen Zieldatenbanken...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Werner Götz
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 187



« Antworten #5 am: 04.05.21 - 09:08:58 »

Ok, dann liegt es also an den Dokumenten selbst.
Wenn Du beim Wiederherstellen die UniversalID nicht änderst sind ja alle Items da.
Machen diese Dokumente dann en Problem beim Öffnen?
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #6 am: 04.05.21 - 09:30:02 »

Ich lasse mir grade mal ein paar Beispiel- Dokumente zusenden, und dann werde ich all diese Tests machen können:

- Kopieren ohne UNID- Änderung, dann Vergleich der Items
- Kopieren mit UNID
- Statt CopyAllItems ein Forall item in doc.items

Dann melde ich mich wieder.
Danke fürs mitdenken!
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #7 am: 05.05.21 - 08:13:20 »

Ich habe jetzt eine selektive Replik mit 18 Dokumenten, die sich in der Zielumgebung nicht kopieren lassen: Das Problem lässt sich bei mir mit selbem Code nicht reproduzieren...

Ich habe jetzt remote

- den Code auf doc.CopyToDatabase umgestellt und die UNID in Ruhe gelassen
- geprüft ob irgendwo ein Leserfeld oder Autorenfeld ist
- alle Items durchlaufen

u.v.m.

Ich gebe auf: ich finde keine Lösung... Inzwischen habe ich einen richtig geilen Zustand:

In einer weiteren Quelldatenbank mit dem selben Problem sind 21.000 Dokumente, die Zieldatenbank hat nur 20.500 Dokumente laut Datenbank- Eigenschaften.

Jetzt kommt der Hammer: Wenn ich mit einer Schleife prüfen will, WELCHE Dokumente in der Zieldatenbank fehlen, dann findet der Code keines:
Code:
Set dc = dbSource.AllDocuments
'dc.Count = 21.000
'dbTarget.AllDocuments.Count = 20.500
Set doc = dc.GetFirstDocument
While not doc is Nothing
    On Error Goto ErrorUnid
    Set docTarget = dbTarget.GetDocumentByUnid( doc.Universalid )
    On Error Goto ErrorRoutine
    i = i + 1
    Set doc = dc.GetNextDocument(doc)
Wend
'i = 21.000
ErrorUnid:
 Print doc.UniversalID
 Resume Next

Dieser Code printet NICHTS...
Dann habe ich in beiden Datenbanken eine Ansicht gemacht: Nicht hierarchisch, nur 1 Spalte, @Text( @DocumentUnique ) und das Ergebnis in Excel verglichen.
Wie zu erwarten findet die SVERWEIS- Funktion von Excel 500 #NV- Werte, also die Differenz aus 21.000 - 20.500

Dann im Admin- Client in der dbTarget nach der UNID gesucht, die dort laut Excel fehlt (also nicht in der Ansicht): Ich bekomme ein gültiges Dokument mit allen Feldern...
Dann ein Set doc = dbTarget.GetDocumentByUnid( "UNID AUS EXCEL" ): Auch hier bekomme ich ein Dokument... ABER: Es ist nicht im Dokumentencount der Datenbank und auch nicht in der Ansicht...

Ich habe keine Ahnung was vorgeht, habe aber den Code zum kopieren der Dokumente in einen neuen Agenten neu geschrieben (selben Funktionen, selbe Vorgehensweise), und was soll ich sagen: Der neue Code funktioniert...
Keine Ahnung warum, weil im Kern genau das gleiche passiert... Whatever...
« Letzte Änderung: 05.05.21 - 08:15:05 von Tode » Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Werner Götz
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 187



« Antworten #8 am: 05.05.21 - 08:39:07 »

Wenn die Dokumente da sind, aber nicht in Ansichten angezeigt werden, könnten diese ggf. als Designelemente angesehen werden. Kannst Du mal in Deiner Ansicht mit $FormulaClass "spielen" und alles mögliche anzeigen?

Siehe z. B. http://ozinisle.blogspot.com/2011/01/view-all-design-elements-in-lotus-notes.html

Warum aber ein anderer Agent mit exakt gleichem Code nicht dasselbe Ergebnis bringt ist natürlich schon sehr merkwürdig.
Das müsste dann ja daran liegen, dass ein neues Kompilieren einen abweichenden Code erzeugt.
Kann es sein, dass der fehlerhafte Agent schon vor ewig langer Zeit mit einer sehr alten Notes-Version kompiliert wurde?

-Werner
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6577


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #9 am: 05.05.21 - 11:42:10 »

An "Designelemente" hatte ich auch schonmal gedacht... ich habe in meinen Datenbanken immer eine "DesignElements"- Ansicht drin... für diesen Fall ist mir das jetzt zu aufwändig... der neue Code funktioniert in allen getesteten Fällen, und reicht mir erst mal.
Der "alte" Code wurde zwar schon vor längerem geschrieben, aber erst vor kurzem komplett überarbeitet, sogar die Script- Library ist neu... das kann es also auch nicht sein... Wie auch immer... Danke für Deine Mithilfe. Da ich das Problem nur in der Kundenumgebung nachstellen kann, kann ich auch nicht beliebig experimentieren... ich schliesse das hier mal ab.
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: