Felder einer Ansicht in Maske übernehmen

  • Die DB ist schon etwas älter und jetzt sollte etwas ranprogrammiert werden. Damals wollte ich mit der Formelsprache und den Maskeneigenschaften arbeiten und es ging irgendwie nicht. Deswegen habe ich auch zum Script gegriffen.


    Im Anhang findet Ihr die Datenbank, vielleicht fällt euch noch etwas ein.

  • Ich habe jetzt eine einfache Formel für das Auslesen der Werte verwendet und es funktioniert.


    @ Carsten: Vielleicht kannst du mir trotzdem erklären was an dem Script falsch ist.


    Ich danke euch allen für die vielen Tipps!

  • An dem Script war gar nichts falsch. Deswegen hatte es ja auch bei mir funktioniert, wie ein paar Postings zuvor schon erwähnt.


    Der Agent blieb auch nicht im DIM sondern in der Zeile Vorname = AuswahlDoc.GetFirstItem("Vorname").Text stecken.


    Was "falsch" war: deine Testdaten in deiner Testdatenbank in Kombination mit deinen verschiedenen Masken.


    In deinem Agenten suchst du unter anderem ein Feld "Vorname" um es zu übernehmen. Das Feld Vorname gibt es zwar in der Maske "MStammdaten" aber nicht in der Maske "Test_Antwort". Und da du die Aktion "Dauer Mitgliedschaft" auf Dokumente der Maske "Test_Antwort" ausführst geht es in der Zeile eben schief. Mit dem Hängenbleiben beim DIM wirst du dich nur verguckt haben.


    Wenn man das Script ändert (alles was mit Vorname zu tun hat) oder den Testdaten einen Vornamen hinzufügt dann gehts ... allerdings nur bis zur letzten Zeile. Was aber wieder nicht am Script liegt sondern diesmal an der Maske "DauerMgl", wo du als Formel des Feldes ID hinterlegt hast: @InheritedDocumentUniqueID. Diese Formel greift aber nicht beim Anlegen eines Dokumentes per Script so wie du es gemacht hast sondern nur wenn die Option Datenübernahme verwendet wurde. Die wiederum hast du in der Maske zwar aktiv aber eben nicht benutzt da du nicht per Maske sondern per Agent das Dokument gerade anlegst. Also ist das ID Feld der Verursacher.


    Aber: dein Anfangsposting bezog sich doch auf die Formel:
    @If(@IsNewDoc;FeldA;@GetDocField($Ref; "Thema"))


    Du hast die Formel in der Maske "DauerMgl" zwar drin aber das FeldA ist vom Typ "berechnet beim Anlegen" was wiederum heißt, dass der Formelteil @GetDocField($Ref; "Thema") niemals ausgeführt werden kann da das Dokument beim Anlegen ja aus FeldA gefüllt wird und danach nie wieder diese Formel zieht. Könnte es sein, dass du da den Feldtyp anders setzen solltest?


    Ich schreibe dir das aber nochmal zusätzlich per Mail damit der Topic hier geschlossen werden kann da es doch ein eher sehr spezielles Thema ist was man ohne Ansicht der DB mit den Testdaten nicht richtig nachvollziehen kann.