Rich Text Feld sperren

  • hallo,
    bin zufällig auf das forum gestoßen ... vielleicht könnt ihr mir bei einem "kleinen" problem helfen. bin noch ziemlicher notes noob und wurd ein bisserl allein gelassen ..


    Ich habe eine Maske die sowas wie einen Workflow abbildet.


    Es gibt ein Rich Text Field bei dem nur änderungen vorgenommen werden dürfen wenn der status < 2 ist.


    die ganze zeit hatte ich das so gelöst:


    das rtf wird nur angezeigt wenn status < 2 ist
    bei status > 2 wird ein berechnetes feld angezeigt das sich die werte aus dem rtf zieht.


    gestern hab ich zufällig gemerkt das beim einlesen in das feld (@text()) die Anhänge verloren gehen ...


    weiss jemand ne lösung ... bin leicht verzweifelt ...



    danke schon mal


    schlissm

  • Wenn ein Text-Feld den Inhalt eines Richtext-Feldes übernehmen könnte: wozu gäbe es dann diese 2 Feldtypen?


    Insofern überdenke nochmal dein Anwendungsdesign, Inhalte von Richtext-Feldern (und das schließt alle Steuerzeichen, Zeilenumbrüche, Formatierungen und Anhänge ein) können nicht simpel in ein Textfeld (oder mit eine Funktion @Text) übernommen werden. Mal ganz abgesehen von der Datenmenge, die ein Textfeld halten kann (theoretisch max. 32k) und ein Richttextfeld (bis zu 1 GB).

  • Leg das Feld am einfachsten in einen Abschnitt mit kontrolliertem Zugriff.
    -> Erstellen\Abschnitt\Kontrollierter Zugriff <-
    Die Zugriffsformel müsste dann etwa so aussehen:
    ->@if(status<2; ""; "Abschnitt gesperrt")<-


    Das gibt zwar keine 100%-ige Sicherheit (wer weiß wies geht kriegt trotzdem Änderungen rein), aber für "Normaluser" ausreichend.

    • Offizieller Beitrag

    RT-Felder und verstecken ist keine gute Idee, weil die Verbergenformel im Feld gespeichert wird.
    Ich würde es mit 2 Teilmasken lösen. Die eine wird bei Status 2 angezeigt und die andere bei Status ungleich 2 angezeigt.


    Die eine Teilmaske bekommt ein bearbeitbares RT-Feld und die ander ein berechnetes RT-Feld.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Sag einfach was genau du erreichen möchtest dann werden hier sicher Lösungsvorschläge kommen. Wenn Du das Richtextfeld sperren möchtest dann wäre z.B. folgender Ansatz denkbar:


    Erstelle eine Teilmaske, packe das RT-Feld dort hinein und zwar so daß das RT-Feld bearbeitbar ist. Ich nenne die TM mal FirstTM.


    Erstelle eine Kopie dieser Teilmaske, ändere dort das Feld auf Berechnet (ohne weitere Formeln, solange der Name gleich ist wie bei der anderen Teilmaske wird sowieso der Feldinhalt angezeigt). Benenne die TM um, z.B. auf SecondTM.


    Lösche das RT-Feld aus der Hauptmaske und füge stattdessen eine berechnete Teilmaske ein, wenn ich die TM-Namen meines Beispiels verwende wäre die Formel:


    @If( Bedingung; {FirstTM}; {SecondTM})


    Voila.

  • danke schon mal für die vielen antworten ... momentan versteh ich soviel wie ... auto ... :)


    hab das mit den abschnitten probiert ...
    funkitoniert aber nicht.


    hab das auf erweitert gestellt damit ich alles angezeigt bekom und dann bei typ bearbeitbar mit der formel : @If(status<2; ""; "Abschnitt gesperrt")


    ich hahb eine maske mit dem status 6 und ich kanns trotzdem bearbeiten ... mach ich was falsch ?

  • Der Typ der Zugriffsformel für den Abschnitt soll natürlich auf "Berechnet" stehen. Sorry, hab ich eben vergessen zu schreiben. Bei "Bearbeitbar" ist letzten Endes der Zugriff immer umstellbar.
    Also die Maske nochmal im Designer öffnen, Eigenschaften des Abschnitts wählen und bei Formel das "Berechnet" einstellen. Danach sollte es gehen. Hab ich bei mir mehrfach im Einsatz

  • Arbeitest du lokal? Oder auf dem Server? Wenn du lokal arbeitest greifen Zugriffsbeschränkungen nicht wenn nicht zuvor die Konsistente ACL in der Zugriffskontrolliste aktiviert wurde. Bevor du das tust stell aber sicher daß dein Name auch mit Managerrechten in der ACL steht, ansonsten hast du evtl. ein Problem...;)

  • Wie kommt denn der Wert in das Feld "Status"? Über eine Schaltfläche wenn eine Person diese klickt? Falls das so ist, solltest Du vor dem speichern ZWEIMAL ein @command([ViewRefreshFields]) ausführen. Damit hatte ich auch schon mal Probleme ausräumen können.

  • bei schliessen der maske bekommt das feld status einen wert zugewiesen.


    ich hab in den ganzen tests die maske immer wieder neu aufgemacht ... sprich das status feld hatte von anfang an den wert 6 ...

  • wenn ich den datensatz - das dokument erstelle dann hat es den status 0 bzw. 1


    sobald der admin in der maske einen haken gesetzt hat geht der status beim speichern auf 3 bzw 6. sobald dieser status erreicht ist soll man das rtf nicht mehr bearbeiten können.


    ich hoffe es kommt raus was ich mein ...


    schlag mich erst in der zweiten woche mit notes (designer) rum ...

  • Okay, kein Problem.
    Wenn Du sagst, das beim speichern der status auf 3 oder 6 gesetzt wird, wie machst Du das? Ist das Feld Status berechnet?
    Das ist auch nicht schlimm. Versuch nur mal, vor dem speichern noch 2 Aktualisierungen der Feldinhalte hinzubekommen.


    Und noch ein Tip zur Fehlerbehandlung:
    Ich erstelle mir für diese Zugriffsformeln auf berechnete Abschnitte immer ein Feld. Da kann ich dann wenigstens den Feldinhalt auslesen um zu sehen, ob meine Berechnungsformel stimmt. Dieses Feld kannst Du dem Abschnitt als "Formel" einstellen zur Berechnung des Zugriffs.
    Mach das ruhig mal: Erstelle ein neues Feld in der Maske, Typ Text und Berechnet. Da machst Du dann die Formel von weiter oben rein. Bei der Berechnungsformel für den Abschnitt trägst Du dann nur den Feldnamen ein.
    Falls Dein Dokument über eine Schaltfläche gespeichert und geschlossen wird, trage da die ViewRefreshfields (s.o.) zweimal ein. Dann schaue, was in dem neu erstellten Feld als Wert steht.

  • habe das feld txt gennant.


    wert : @If(status<2; ""; "Abschnitt gesperrt")


    beim aufrufen der maske wird angezeigt abschnitt gesperrt.


    bei der formel für den abschnitt steht : txt


    nur kann ich den text immer noch bearbeiten ...


    wie mach ich das mit der aktualisierung ?
    das feld status bekommt wert in querysave von der maske zugeweisen über ganz normales if ... da funktionieren doch keine @ geschichten odeR ?



    ich dreh hier echt langsam am rad ... zum glück ist jetzt ertsmal mittagspause ...