Hauptdoc und zugehörige Responses

  • Hallo Gemeinde,
    ich stehe hier vor einem kleinem Problem.
    Beschreibung:
    In der DB habe ich Hauptdocs sowie entsprechende Responses. Nun passiert folgendes - die Hauptdocs enthalten Felder die beim erstellen der Responses mitübergeben werden. Die Felder im Hauptdocument erhalten ihre Werte teilweise aus DBLookup-Übergaben. Erstelle ich ein RepDoc ist auch alles o.k. Ändert sich der Wert nachträglich in der DBLookup-Tabelle werden die Hauptdocs mit einem Refreshagent oder nach öffnen aktualisiert. Die darunterliegenden RespDocs bleiben aber mit den alten Inhalten bestehen.
    Öffne ich das entsprechende Hauptdoc und gehe auf den EditMode und speicher es dann wieder ab - werden auch die Responsdoc´s aktualisiert. Ich hoffe mich einigermaßen deutlich ausgedrückt zu haben.
    Meine Fragen:
    Wie kommt es.?
    Wie kann ich ein Refresh auf die entsprechenden Respdocs erreichen?
    Die besagten Felder im Respdoc sind computed.
    Weder die Commandanweisung Toolsrefreshed.... noch ein refresh aus Script heraus fruchtet.
    Danke für Euere Hilfe

  • Hi Taurec,
    danke für die schnele Antwort. Aber irgentwie funzt es trotzdem nicht. Ich kann mir die entsprechenden Haupt und Respdocs in eine Ansicht anzeigen lassen - markieren und refreshen. Gleiche Problem.
    Habe die entsprechenden Felder schon aus SubMasken herausgenommen und sie gleich auf die Hauptmaske gelegt - ich bekomme die Mist-RespDocs nicht aktualisiert.
    Immer editMode wechseln - speichern - aufrufen - dann ist das o.k.
    Bei ca 50000 Docs schafft man dann wirklich Arbeitsplätze. Von de Idee nicht schlecht - aber wenn ich das meinem Boss verkaufen will , dann wird er mir wohl alles Gute wünschen

  • In angepassten Ansichten habe ich es mit
    @Command( [ToolsRefreshSelectedDocs] ) ausprobiert



    und im Scrip ( musste ich eben aus dem Kopf machen, weil DB nicht vorliegt - bin nicht in der Firma)


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set collection = db.UnprocessedDocuments
    Set doc = collection.GetFirstDocument()
    While Not(doc Is Nothing)
    test = doc.ComputeWithForm( False, False )
    Call doc.Save( True, True )
    Set doc = collection.GetNextDocument(doc)
    Wend
    End Sub

  • Das was dieser Agent macht ist nur das Aktualisieren der berechneten Felder im Dokument.
    Was du brauchst ist ein Agent der die geänderten Werte des Hauptdokumentes in die Responses schreibt.
    Gemacht wird es ja schon, da wenn du das Dok speicherst die Werte in die Responses übernommen werden.
    Schau doch mal im QuerySave des Hauptdocs nach

  • Taurec, erstmal vielen Dank für Deine Zeit.
    Also im QuerySave werden die Daten nicht aktualisiert (hierfür ist keine Aktion einprogrammiert worden)
    Die RespDoc Maske übernimmt die entsprechenden Felder aus dem Hauptdocument. (Beim anlegen funktioniert es ja auch gut.
    Aber Du hast mich da auf eine Idee gebracht.
    Ich hatte im Querysave ein Script erstellt der
    1. dem Hauptdoc eine laufende Nummer verpasst
    2. den Status an Respdocs weiterzugeben


    Das Script sieht nachfolgend beschrieben aus


    Dim s As New notessession
    Dim db As notesdatabase
    Set db = s.currentdatabase
    Dim view As notesview
    Set view = db.getview("VTB_Counter")
    Dim ws As New notesuiworkspace
    Dim uidoc As notesuidocument
    Set uidoc = ws.currentdocument
    Dim doc As notesdocument
    Set doc = view.GetFirstDocument
    Dim Act_No As String
    Dim Carrier As String
    Dim AG_Code As String
    Dim Ref_res As String
    Dim Last_No As Variant

    If uidoc.IsNewDoc Then ' *****Öffne die entsprechende View und hole letzte WO Nummer
    Last_No=doc.GetItemValue("WO_Counter")
    Act_No=Last_No(0)+1

    '_________________________________________________________________

    '*****Werte aus dem Dokument auslesen

    Carrier=uidoc.FieldGetText("WO_Carrier")
    AG_Code=uidoc.FieldGetText("WO_AgencyCode")
    '_________________________________________________________________

    '******Zähler in Format bringen > Carrier+AgencyCode+WONummer(6-stellig)<
    Dim RefNo_Form As String
    RefNo_Form= Right$("000000" & Cstr(Act_No),6)


    '----------------------------------------------------------------------
    T="IWO-" 'Vorangestellter Text vor der eigentlichen Referenznummer
    Ref_res=T+Carrier + AG_Code +RefNo_Form
    Uidoc.FieldSetText "WO_Ref_hide", Ref_res
    Uidoc.FieldSetText "WO_Counter",Act_No
    UiDoc.FieldSetText "WO_Drafted","YES"
    UiDoc.FieldSetText "WO_Status_Drafted",Cstr(Now())

    End If


    '*********************************************************************************
    ' Response Dok´s nachziehen um das Feld "EditLock abzugleichen

    '*********************************************************************************
    Dim Respdoc As NotesDocument
    Dim ws2 As New notesUIWorkspace
    Set Respdoc = ws2.CurrentDocument.document
    Dim Wert As String
    wert=uidoc.FieldGetText("EditLock")
    Dim DocCount As Long
    Set db = Respdoc.ParentDatabase
    Dim RespDocColl As notesdocumentCollection
    Dim RespDocCollDoc As notesdocument
    Dim PosCount As Integer
    Set RespDocColl = Respdoc.Responses
    Dim i As Integer
    On Error Resume Next
    If RespDocColl.count > 0 Then

    For i = RespDocColl.count To 1Step -1
    Set RespDocCollDoc = RespDocColl.GetNthDocument(i)
    Call RespDocColl.StampAll("EditLock",Wert)

    Next

    End If


    Ich denke, an dieser Stelle könnte ich mir entsprechende Werte holen und diese der RespDocs "überbügeln".
    Nur was passiert dann, die Werte werden nur nach dem abspeichern des Hauptdocs aktualisiert. Oder habe ich z.Z. ein Brett vorm Kopf???