Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Caspar Fromelt am 08.07.15 - 16:14:06
-
Hej,
bisher habe ich mich immer auf NotesDocument.Responses verlassen, jetzt hab ich aber bei einer Replik das Problem, dass ich beim Bilden der Collection mit NotesDocument.Responses auch Dokument in der Collection habe, die gar keine Antworten sind...
Wenn ich folgenden Code Ausschnitt ausführe, bekommen ich auf einem Server keine "Fehler" und mit einer Replik der gleichen DB auf einem anderen Server bekomme ich "Fehler":
Set dbCurrent = session.currentDatabase
' Wir finden nehmen alle Aufgaben, die erledigt sind
Set dcAbzuarbeiten = dbCurrent.Search(|Form = "Aufgabe" & Status = "15":"20"|, Nothing, 0)
Print "Habe " & Cstr(dcAbzuarbeiten.count) & " erledigte Aufgaben gefunden."
'Wir nehmen uns die erste Aufgabe ...
Set docAufgabe = dcAbzuarbeiten.GetFirstDocument
While Not docAufgabe Is Nothing
' .. bilden eine Collection aller Antworten dieser Aufgabe ...
Set dcAntworten = docAufgabe.Responses
' ... und schauen uns jede Antwort an...
Set doclaufAntwort = dcAntworten.GetFirstDocument
While Not doclaufAntwort Is Nothing
' ... ob doclaufAntwort auch wirklich eine Antwort von docAufgabe ist:
If doclaufAntwort.Parentdocumentunid <> docAufgabe.Universalid Then
Print "Fehler: Document " & doclaufAntwort.Universalid & " aus Response Collection ist gar keine Response...."
intfehler = intFehler + 1
End If
Set doclaufAntwort = dcAntworten.GetNextDocument(doclaufAntwort)
Wend
' Wir nehmen uns die nächste Aufgabe ...
Set docAufgabe = dcAbzuarbeiten.GetNextDocument(docAufgabe)
Wend
Messagebox "Bin fertig."
Print "Es gab Fehler: " & intFehler
Exit Sub
Bisher habe ich mich immer auf NotesDocument.Responses blind verlassen - muss ich denn immer abfragen ob ein Collection Mitglied wirklich eine Antwort ist??
Grüße
Caspar
-
Hast Du denn mal UNTERSUCHT, was für ein Dokument Du da bekommst? Also mal die UNID des vorgeblichen Antwort- Dokumentes und die UNID des Parentdocuments ausgeben und die Dokumente nachher manuell untersucht?
Ich könnte mir vorstellen, dass das entweder:
- Ein Konflikt- Dokument ist (die laufen manchmal Amok)
- Ein Dokument ist, was sich selbst als Hauptdokument hat (hatte ich schon ein paar mal, und Ytria hat im ScanEZ sogar eine Option eingebaut, genau solche Fälle zu finden, also ist es wohl eher nicht selten)
- Ein "invalides" oder "gelöschtes" Dokument ist.
-
Grrr - warum loggt mich das Forum aus, wenn ich auf den Button schreiben klicke. Jetzt ist mein ganzer Text futsch....
Also alles nochmal tippen, diesmal kürzer:
Ja, es sind ganz normale Dokumente, die einfach nur zu anderen Hauptdokumenten gehören (10% der Fehler hatte ich untersucht). Ich hatte 30 "Fehler" bei 120.000 Dokumenten.
Ich kann die falschen Antworten auch manuell in einer View mit Antworthierarie suchen und da stehen die bei ihren echten Parents.
Wenn ich die mir inhaltlich ansehen, dann könnte es sein, dass es mal früher Antworten zu den Hauptdokumenten gewesen sind, wo .responses sie findet. Die DB hat eine Funktion, um Antworten zu verschieben.
Das würde bedeuten, dass ein Hauptdokument sich merkt, welche Antworten es hat (und damit wäre erklärt, warum .responses auch so schnell ist).
Aber: mir war es zu blöd, ich bin jetzt pragmatisch vorgegangen und habe ein compact -c gemacht und der Effekt ist weg.
Ich habe noch eine dritte Replik der DB, die auch die solche fehlerhaften .responses Collection bildet - wenn ich mal Zeit habe, versuche ich der sache mal auf den Grund zu gehen.
Frustrierend nur, dass ich mich nicht auf so ne simple Funktion verlassen kann. Ist nur durch Zufall aufgefallen...
-
Grrr - warum loggt mich das Forum aus, wenn ich auf den Button schreiben klicke. Jetzt ist mein ganzer Text futsch....
Ist mir auch schon ein paar mal passiert :( Meist kopiere ich mir den Inhalt vor dem Senden in die Zwischenablage, es passiert aber immer genau dann, wenn ich das vergesse >:D
Zum eigentlichen Problem:
Kann es sein, dass der Problemserver 8.5.3FP6/9.0.1 ohne FP ist?
Hier gibt es bekannte Probleme mit Antwortdokumenten in Ansichten. Wir hatten das Problem, dass viele Antwortdokumente gar nicht angezeigt wurden. Ich glaube mich sogar erinnern zu können, dass die Antwortdokumente nach dem Verschieben in der Ansicht an der falschen (=alten) Stelle angezeigt wurden, obwohl die Feldeigenschaften was anderes behaupteten.
Könnte mir vorstellen, dass .responses ebenfalls davon betroffen ist.
Als Workaround haben wir auf allen betroffenen Servern den MAX_PERMUTE_RECURSE Parameter in der Notes.ini gesetzt
Weiterführende Links:
http://atnotes.de/index.php/topic,57392.0.html
http://www.assono.de/blog/d6plinks/Domino-9.0.1-und-8.5.3FP6-Ansichten-zeigen-nicht-alle-Dokumente
Gruß
Roland
-
also der "Problemserver" ist 9.0.1FP"ganz aktuell", der "Nicht-Problemserver" ist 8.5.3FPvermutlicht6 ;) - ich müsste nachsehen.
ABER: die Problem DB hatte ODS43, die nicht Problem DB ODS51 - das finde ich eher das auffällige.
Nach dem Compact hat meine (ex)ProblemDB jetzt zwangsläufig ODS52 und die Probleme sind ja weg.
Ich muss gestehen, ich hatte bisher nie Bauchschmerzen, wenn ich eine DB mit ODS R6 hatte. Vielleicht sehe ich das jetzt anders...