Domino 9 und frühere Versionen > ND8: Entwicklung

Prüfung auf "Dokument verwaist" und dessen Umwandlung in Hauptdokument

<< < (3/5) > >>

ascabg:
@pram,

--- Zitat ---Accessing the return values
If multiple values are returned by @DbColumn, they are formatted as a list and are separated with the multivalue separator designated for the current field in the field InfoBox.
@DbColumn can return no more than 64K bytes of data. Use the following equations to determine how much of your data can be returned using @DbColumn.
For lookups that return text:
2 + (2 * number of entries returned) + total text size of all entries
For lookups that return numbers or dates:
(10 * number of entries returned) + 6
--- Ende Zitat ---

Dann sei mir die Frage zu diesem Auszug aus der Hilfe elaubt.
Steht diese Aussage nicht im Gegensatz zu Deiner getroffenen Aussage?
(oder interpretiere ich hier etwas total falsch)


Andreas

pram:
Diese Aussage in der Hilfe stimmt offensichtlich nicht, bzw nur dann wenn man den Wert in ein Feld speichert. (Dies zeigt z.B. der erste Satz, der auf das Feldtrennzeichen eingeht)

Hab folgendes gerade in einer DB probiert in dem ich folgende Formeln per SHIFT-F9 in einem Feld ausgeführt habe

@elements(@DBcolumn("";"";"myView";1)) = 4565 (Anzahl der Dokumente)
@Sum(@length(@DBcolumn("";"";"myView";1)))  = 213966 (Gesamtlänge aller Strings = 213kb)

@Andreas, probiere es bitte selber mal aus.

Gruß
Roland



Stefanie:
Zuerst einmal Herzlichen Dank für die vielen Antworten.

Um meine Problematik nochmal detailliert zu umschreiben.
Es handelt sich tatsächlich um eine Mail-DB, von daher um einen möglichen dauerhaften Fehler
(Antwort-Dokument auf ein Hauptdokument, welches nicht mehr existiert wird an die DB verschickt).
Dieser Fehler soll in der Ansicht Alle Dokumente vermieden werden.
Nur leider habe ich mich in das Scripten noch gar nicht eingearbeitet.

@Peter
Ich bin schon in vielen Foren auf getDocumentbyUnid gestoßen, nur leider weis ich es nicht wirklich umzusetzen.

Ich habe zuerst einmal eine Kopie der DB erstellt und in dieser eine neue Test-Ansicht.
In dieser habe ich die Ansichtsauswahl SELECT @IsAvailable ($REF) gesetzt.
Somit sehe ich jetzt alle Dokumente, die eine "Referenz-ID" haben.
Aber diese wiederum will ich mit den Hauptdokumenten vergleichen.

Gibt es denn eine Art Vergleich?
Sprich Vergleiche alle $Ref mit allen $Orig, wenn ein Eintrag $Ref existiert, ABER KEIN zugehöriger $Orig (Hauptdokument), dann lösche $Ref (bilde also ein Hauptdokument daraus).

In der Hilfe habe ich schon ähnliche Scripts gefunden, aber leider kein Vergleich von den UNIDs.

Sicher geht es nur über das Scripten.
Fertige Scripts möchte ich auch eher weniger, da ist der Lerneffekt so gering.
Aber kleine Hinweise, wo man was macht, wären super hilfreich.

Über nochmalige Tipps bin ich super happy.

DANKE und Grüße


Peter Klett:
Vorschlag: Versuche mit der Designer-Hilfe einen Script-Agenten zu bauen, der eine NotesDocumentCollection durchläuft und von jedem Dokument irgendetwas ausgibt, z.B. die UniversalID (Print). Eine Collection für den Anfang wäre die NotesDatabase.AllDocuments.

Wenn Du das geschafft hast, hast Du schon halb gewonnen :)

Danach schränkst Du die Collection ein, dass Du nur die Dokumente hast, die Du überprüfen willst, also alle die mit dem Item $REF und evtl. einer Liste von relevanten Formen.

Der nächste Schritt wäre dann die Überprüfung auf die Anwesenheit des Elterndokuments.

Als letztes kommt das Umwandeln der Antwort in ein Hauptdokument.


Das sind m.E. die einzelnen Schritte, die Du der Reihe nach umsetzen könntest, bei denen Du nach jedem Schritt auch das entsprechende Erfolgserlebnis hast, dass das bis dahin funktioniert.

Hängst Du an einer Stelle, poste Dein bisheriges Script hier und nenne das aktuelle Problem, das Du hast, dann findet sich bestimmt jemand, der Dir weiterhilft.

Danach wirst Du nicht nur ein lauffähiges Script haben, sondern vermutlich auch verstanden haben, wie Du es selbst erstellen kannst.

Traue Dich auch, Fehler zu posten, hier lacht keiner, denn niemand konnte das schon von Geburt an ...



Stefanie:
Hallöchen,

ich habe nun ein Code via Notes Script gebastelt, orientiert an einen anderen aus der Designer-Hilfe.
Diesen Code habe ich im Initialize-Objekt meiner Test-Ansicht in der DB geschrieben.
Beim Debuggen bleibt er kurz bei Set Session = New NotesSession stehen.
Jedoch ohne Fehlermeldung.
Danach arbeitet er weiter.
Aber das Feld $Ref wird beim jeweiligen Antwort-Dokument ohne Hauptdokument nicht "geleert".
Vielleicht verstehe ich ja den Befehl
DocUNID = doc.ParentDocumentUNID
Set Parent = db.GetDocumentByUNID(DocUNID)
falsch.
Die verwaisten Dokumente haben zwar eine Parent-Unid, aber diese ist in der DB nicht vorhanden.

Kann mir bitte jemand einen Tipp geben, wie ich das prüfe?
Hier mein bisheriger Code:
Sub Initialize
   
   Dim Session As NotesSession
   Dim db As NotesDatabase
   Dim Ansicht As NotesView
        Dim Doc As NotesDocument
   Dim Parent As NotesDocument   
   Dim DocUNID As String
   
   Set Session = New NotesSession
   Set db = Session.Currentdatabase
   Set Ansicht = db.GetView("Test")
   Set doc = Ansicht.GetFirstDocument
   
   
   While Not Doc Is Nothing
      If Doc.Form(0) = "Memo" Then      
         DocUNID = doc.ParentDocumentUNID
         Set Parent = db.GetDocumentByUNID(DocUNID)
         If Parent Is Nothing Then
            Call doc.RemoveItem( "$Ref" )
            Call doc.Save( True, True )
         End If
      Else
         If Doc.Form(0) = "Reply" Then      
            DocUNID = doc.ParentDocumentUNID
            Set Parent = db.GetDocumentByUNID(DocUNID)
            If Parent Is Nothing Then
               Call doc.RemoveItem( "$Ref" )
               Call doc.Save( True, True )
            End If
         End If
      End If
      
      Set Doc = Ansicht.GetNextDocument(doc)
   Wend
End Sub

Über eine Kollektion habe ich es nicht gelöst, da ich bereits einen Filter auf alle Dokumente mit $Ref habe.


Habt riesen Dank!!
 :)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln