Autor Thema: ParentDocumentUNID findet parent obwohl nicht vorhanden  (Gelesen 6736 mal)

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Hi Leute.
Frage hierzu (fand bei der Suche hier im Forum keine Antwort):

Set parent = db.GetDocumentByUNID( doc.ParentDocumentUNID )
(zuvor dim parent as notesdocument)

Was ich nicht verstehe, daß ich auch ein Parentdocument bekomme (zu sehen im Debugger)
obwohl keins existiert bzw. nie existiert hat , weil es z.B. nicht gespeichert wurde (via backend in dem speziellen Fall)

Im Debugger sehe ich, daß das "pseudo"parent keinerlei items besitzt.

Auch   
If parent Is Nothing Then
msgbox "nicht da"
else
msgbox "vorhanden"  ...

liefert mir als Ausgabe ein vorhanden.

In der ganzen Testdatenbank ist aber nur ein einziges Dokument, nämlich das elternlose Kinderdokument natürlich.

Was seh ich hier falsch oder was passiert hier ?
Ich hätte erwartet, daß kein Elterndokument gefunden wird.
Habe ich hier Dokumentengeister ?   (Die TestDB hier war jungfräulich, keinerlei Löschmarken etc)

holcomb
PS Bin ich bei ner Produktivanwendung hier drübergestolpert wie ich auf Fehlersuche ging.
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #1 am: 08.01.04 - 15:11:44 »
Da würd ich mal vermuten, dass tatsächlich irgend ein Ghost-Dokument existiert. Musst Du mal mit NotesPeek in die DB reinschauen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #2 am: 08.01.04 - 15:42:57 »
Da würd ich mal vermuten, dass tatsächlich irgend ein Ghost-Dokument existiert. Musst Du mal mit NotesPeek in die DB reinschauen

Danke für den Tip-
NotesPeek kannte ich bisher nicht, ich werde mal danach suchen.


Ich kann den "Fehler" immer wieder reproduzieren. Hmm.
Auch, wenn ich mal die Dokumente von Hand anlege und dann das Elterndokument von Hand lösche, findet ich via  
Set parent = db.GetDocumentByUNID( doc.ParentDocumentUNID )
das nicht mehr vorhandene Dokument.

Strange, dürfe IMO eigentlich nicht sein.

In der produktiven Anwendnung werden die Eltern und die Antwortdokumente im Backend via Script erzeugt.

Zuerst das Elterndokument (ohne  save erstmal), dann in einer While scheilfe die Antwortdokumente) und danach wird das Elterndokument erst geseichert.


Während des Durchlaufs der Scheilfe passierte ein Fehhler und ich war daher der Meinung es könnte kein Elterndokument existieren.

Aber ich finde eben was für parent, aber ohne jegliche items (im debugger).



Mir scheint, daß ich obige script Zeile hier gar nicht mehr anwenden kann in diesem Zusammenhang, weil wenn er nicht vorhandene Elterndokumente findet, dann isses für die Katz.  :-/

Holcomb

Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #3 am: 08.01.04 - 15:47:21 »
Vielleicht wird ja auch das Deletion Stub für das Elterndokument gefunden.

Wie kann man abfragen, ob ein Dokument ein Deletion Stub ist? Evtl. so

if doc.Size < 101 then
'Deletion Stub
end if

Vermutung, da

How large is a deletion stub in Notes?

In Notes 5.x,  a deletion stub occupies 100 bytes.
In Notes 4.x, a deletion stub occupies 88 bytes.
In Notes 3.x, a deletion stub occupies 64 bytes.

oder so
To get: flag = notesDocument.IsDeleted
Legal values
True indicates that the document is a deletion stub.
False indicates that the document exists.

Andreas
« Letzte Änderung: 08.01.04 - 15:53:09 von Glombi »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #4 am: 08.01.04 - 15:54:05 »
Na, wenn Du nach dem Löschen des Parent noch ein Parent findest, bekommst Du wahrscheinlich den Deletion Stub zurück. Da gibts einen Parameter, "IsValid" oder so ähnlich, mit dem man das feststellen kann.

Für NotesPeek gibt es in 2 bis 3 Minuten im Fachwörterbuch einen Link ....   :D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #5 am: 08.01.04 - 15:56:52 »
Vielleicht wird ja auch das Deletion Stub für das Elterndokument gefunden.

Andreas


Neee, kanns nicht sein.
Ich hab mir extra zum testen und nachforschen eine neue TestDB gebaut.
Dort erzeuge ich die Dokumente im Backend via script (Siehe Antwort an Semea)

Das Elterrndokument wird erzeugt (noch nicht gespeichert), anschliessend ein oder auch mehrere Antwortdokument (werden gespeichert).

Wenn das Elterndokument nicht gespeichert wird tritt das Phänomen auf. (Auch schön im Debugger nachzuverfolgen)

In der DB habe ich nur alleinig die Antwortdokumente.
Aber via
Set parent = db.GetDocumentByUNID( doc.ParentDocumentUNID )

bekomme ich eben das "geisterdokument"

Habe mir jetzt grade aus der Sandbox das NotesPeek gezogen.

Holcomb


 Grüße, Holcomb

 





Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #6 am: 08.01.04 - 16:07:26 »
@glombi

Zur Info
Ich hab Deinen Tip in meinen code eingebaut
ich bekomme für das gefundene parent bei isdeleted ein false zurück.

Kann keine Löschmarkierung sein, weil ich auch außerdem nichts gelöscht habe.

(Ich habe nur vorhin _zusätzlich_ aus Neugierde mal getestet, was passiert, wenn man die Dokumente vpon Hand erzeugt und das elternteil  von Hand wieder löscht .)
 

Holcomb
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #7 am: 08.01.04 - 16:15:40 »
Ich habe das reproduziert. Offenbar legt Notes intern irgendein obskures Dokument an, indem es aber keine Items gibt. Das ganze geht nur, wenn man es über das Backend macht, so wie Du es beschrieben hast.

Man kann das dann wie folgt abfangen:

Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   Dim dc As NotesDocumentCollection
   Set dc = db.UnprocessedDocuments
   Dim doc As NotesDocument
   Set doc = dc.GetFirstDocument
   Dim pdoc As NotesDocument
   Set pdoc = db.GetDocumentByUNID( doc.ParentDocumentUNID )
   
   Dim x As Variant
   x = pdoc.Items
   
   If Isempty(x) Then
      Print "Elterndokument nicht gefunden"
   Else
      Print "Alles ok"
   End If
« Letzte Änderung: 08.01.04 - 16:16:03 von Glombi »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #8 am: 08.01.04 - 16:17:37 »
Kann man nur sagen: "Huch ...."
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #9 am: 08.01.04 - 16:18:47 »
NotesPeek findet keine deletionstubs (habe neue DB zum test herangezogen) und nur die richtige Anzahl von Antwortdokumenten.


Mein
Set parent = db.GetDocumentByUNID( doc.ParentDocumentUNID )

findet aber ein Dokument  :-/ für parent.

<grübel>
Bug ? Ich zu dämlich ;-)   ?
Hab Dt Version 5.0.10

Holcomb
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #10 am: 08.01.04 - 16:24:04 »
Mit NotesPeek finde ich das Geisterdokument nicht.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #11 am: 08.01.04 - 16:24:05 »
Siehe die Message von Andreas, ich würde das für einen Bug halten
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #12 am: 08.01.04 - 16:26:27 »
Ich habe das reproduziert. Offenbar legt Notes intern irgendein obskures Dokument an, indem es aber keine Items gibt. Das ganze geht nur, wenn man es über das Backend macht, so wie Du es beschrieben hast.


Merci, gibt die Gerwissheit, daß man nocht ganz doof ist.  <g>

Backend ist jetzt klar.
ABer bei mir hat er auch was beim manuellen Löschen gefunden.
War das dann die Löschmarkierung ? (das habe ich nicht mit deinem code getestet)

Workaround , merci.
Ist logo, weil ja der Debugger anzeigt, daß das gefundene "Etwas" keine Items besitzt .

Danke Euch beiden fürs rasche EInspringen.
Ich setz den Thread jetzt mal auf erledigt.

Gruß Holcomb


Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #13 am: 08.01.04 - 16:35:20 »
Es bleibt mysteriös: Ich habe per Backend Haupt- und Antwortdokument erstellt und beide gespeichert.
Danach habe ich das Hauptdokument mit ENTF + F9 gelöscht.

Der Debugger zeigt das gleiche Verhalten wie Dokument per Backend erstellen ohne zu speichern:
- Es sind keine Items da.
- IsDelete = false !!!!

D.h. IsDelete liefert wohl nur dann True zurück, wenn es eine Soft Deletion ist. Keine Ahnung, ich habe es noch nie benutzt.

Andreas

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #14 am: 08.01.04 - 16:41:42 »
@glombi

Ich habs jetzt auch nochmal getestet mit dem Erstellen von Hand (Eltern und Antwortdok) und dann dem Löschen des Elterndokuments.

Auch hier zeigt .isdelelted an, daß es sich um keine Löschmarkierung handelt.  

Gruß, Holcomb
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #15 am: 08.01.04 - 17:10:58 »
In der LDD wurde das auch schon diskutiert, bspw.
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/07c7b1cb350e42af85256bb200386d3a?OpenDocument&Highlight=0,isdeleted

Es ist und bleibt ein Bug - unter 6.5 hat sich nix geändert.

Meine Theorie: IsDeleted wurde für Soft Deletions implementiert und für Deletion Stub dokumentiert, welches durch folgendes Satz aus der KBASE untermauert wird:

In both cases, checking for DOC.NoteID = "" ferrest out these troublesome documents.  In the latter case, IsDeleted=True shows that it's been soft deleted, not just hidden via ReaderAccess lists.


Andreas
« Letzte Änderung: 08.01.04 - 17:12:22 von Glombi »

Offline AC

  • Senior Mitglied
  • ****
  • Beiträge: 366
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #16 am: 08.01.04 - 17:21:28 »
@glombi

jou, aber wir haben hier 2 Phänomene.

wobei immer noch ungeklärt ist, warum im obigen fall beim Backendfall für parent diese Geisterding rumspukt.

Die Abfrage nach dem Parentdokument lässt sich daher nur mit der weiteren Prüfung auf Items einsetzen wenn man sicher gehen will.  
<seufz>

Gruß Holcomb
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Introduction
Microsoft Certified Technology Specialist Microsoft Dynamics NAV 5.0 C/Side Solution Development

"...Glücklich ist, wer vergisst, was doch nicht zu ändern ist..."

Glombi

  • Gast
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #17 am: 08.01.04 - 17:25:52 »
Für mich stellt sich der Sachverhalt so da:
Per Script Backend-Dokument ohne save erstellen <=> Gespeichertes Dokument mit ENTF + F9 löschen

Laut Debugger ist es dasselbe - nämlich Deletion Stubs. Aber nur letztere werden auch in NotesPeek angezeigt.

Das IsDeleted liefert für beide Fälle False zurück (siehe dazu meine Theorie).

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #18 am: 08.01.04 - 17:55:17 »
In Fällen, in denen ich mit deletion stubs rechnen muss, verwende ich folgenden Algorithmus, um "ungültige" Dokumente von weiterer Behandlung auszuschliessen:

Code
If Not (NotesDocument.IsValid And Isarray (NotesDocument.Items)) Then
   'Mach was anderes - wir haben gerade Schrott gefunden ...
End If

Derartiger Trödel kann auch in anderem Kontext passieren - sogar beim Scannen einer stino View.. Auch wenn UPDALL und Konsorten das Problem dann vielleicht beheben - der Agent darf auf sowas nicht hereinfallen.

HTH,
Bernhard

PS @Semeaphoros: Haben wir "stino" schon im Wörterbuch ? Und koMo, koWo, koJa usw. ?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:ParentDocumentUNID findet parent obwohl nicht vorhanden
« Antwort #19 am: 08.01.04 - 18:01:04 »
Nö, nichts davon drin. Was ist denn "stino"? Ach so ..... schon entziffert, ganz normal ....  ;D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz