UiDoc schließen und uiDoc.document sofort öffnen

  • Hallo Experten,


    mein Problem ist imho ein Standard-Problem, dass sicher schon mehrfach nachgefragt wurde. Leider hat mich die Suche nicht wirklich ans Ziel gebracht.


    Ich möchte, um externe Änderungen am Backend-Dokument (RichText-Feld) sichtbar zu machen, ein UIDoc schließen und direkt wieder (aktualisiert) geöffnet bekommen.


    Mit einem Script der Form

    Code
    doc = uidoc.document 
     uidoc.close
     ws.editdocument(false,doc)


    komme ich dabei nicht weiter - das Frontend-Dokument wird dabei offenbar nicht aktualisiert geöffnet.


    Das einzige was bisher funktioniert ist die Nutzung des onTerminate-Events - was aber auch unschön ist, da ich der Funktion keine Parameter übergeben und somit das Verhalten schlecht steuern kann. Das Event wird halt bei jedem Schließen ausgeführt - ich mag das Dokument aber nicht immer sofort neu öffnen. Eine Parameterübergabe per EnvVar oder PersDoc ist wohl eher unschön.


    Wie sieht denn da die übliche Lösung für aus?


    Danke im voraus.
    Mac

  • Klar geht das so nicht, denn du holst dir ja das Dokument auch nicht neu.


    Wie es im Forum schon mehrfach beschrieben wurde:


    UNID merken, Dokument Schliessen, Dokument über UNID neu holen und dieses dann öffnen.


    [color=FF0000]Bitte ans Themenpräfix denken[/color]

  • Hi Taurec,


    du meinst so?


    Das macht leider keinen Unterschied - die im Backend erfolgten Änderungen werden trotzdem nicht im Frontend angezeigt.
    Oder habe ich dich missverstanden?


    P.S.:
    Da man das Themenpräfix gern schonmal vergisst, würde da nicht evtl. eine Vorbelegung oder eine Erinnerung onSubmit Sinn machen?

  • Hallo,


    die von ascabg angegebenen aufrufe machen hier keinen Sinn, da das doc nicht vorher belegt war.
    Kann es sein, dass du beim uidoc.close die Nachfrage zum Speichern mit ja bestätigst, so das die Änderungen am backend überschrieben werden?
    Die Fage klingt zwar doof aber auch das hat man schon gesehen.


    MfG Stefan

  • Hallo Andreas,


    dann erhalte ich ein erwartungsgemäßes "Object variable not set". In obigem Script wurde doc ja vor

    Code
    Set doc = session.CurrentDatabase.GetDocumentByUNID(unid)


    nur deklariert, aber noch nicht instanziert.

  • Hi Hurz,


    sorry, ich hab deine Antwort übersehen (hat sich mit meiner zeitlich überschnitten).


    Öhm, nein - ich schließe das uidoc aus dem readmode heraus - es wird geöffnet und danach (ohne zwischenzeitliche Änderung oder Sichern) wieder geschlossen (mit obigem Script).


    Öffne ich das Dokument danach erneut von Hand, dann sehe ich auch wieder das aktuelle Backend-Dokument im Frontend.
    Diese manuelle erneute Öffnen möchte ich eben per LS erschlagen.


    Ich hab mal eine Dummy-Datenbank angehangen, die das Problem zeigt.
    Vorgehensweise zum Reproduzieren:
    1. Neues Dokument mit Form "Test" anlegen, Testwerte in die Felder eintragen, speichern, Dokument schließen.
    2. Dokument erneut öffnen und aus dem Action-Menü den Agenten "Backend-Change" ausführen.
    3. Action-Button "RefreshFromBackend" ausführen --> es tut sich nichts.
    4. Dokument schließen und feststellen, dass in der View die Backend-Werte angezeigt werden.
    5. Dokument erneut öffnen -> Backend-Werte werden angezeigt.

  • Moin,


    hab deine db ein wenig angepasst, hab einen Agenten erstellt "Reload" der jetzt von der Aktionsschaltfläche aufgerufen wird.


    Sollte jetzt funktionieren.


    Vielleicht ein Cacheproblem, da der Code ja immernoch in der Laufzeit des Dokuments ausgeführt wurde und jetzt im Agenten.


    MfG Stefan